如何在Keras-Python中输入二维数组?
How to input a 2D array in Keras-Python?
我对机器学习和 keras 还很陌生,一直在尝试输入数据;我的数据看起来像:
[[[0.01363717 0. ]
[0.01577874 0. ]
[0.01463021 0. ]]
[[0.01577874 0. ]
[0.01463021 0. ]
[0.01006721 0. ]]
[[0.01463021 0. ]
[0.01006721 0. ]
[0.00762504 0. ]]...]
数据的形状是:(1607, 3, 2)。
我怎样才能通过:
[[0.01363717 0. ]
[0.01577874 0. ]
[0.01463021 0. ]]
作为 512 个 CuDNNLSTM 单元层的输入?
这是我的整个网络:
def create_model():
model = Sequential()
model.add(CuDNNLSTM(512, input_shape=(3,2), return_sequences=True, name='inputlstm1'))
model.add(Dropout(0.2))
model.add(CuDNNLSTM(512, return_sequences=True,name='lstm2'))
model.add(Dropout(0.2))
model.add(CuDNNLSTM(512, return_sequences=True,name='lstm3'))
model.add(Dropout(0.2))
model.add(Dense(32, activation='relu', name='dense1'))
model.add(Dropout(0.2))
model.add(Dense(1, activation='softmax', name='denseoutput2'))
# Compile model
model.compile(
loss='mse',
optimizer='adam',
metrics=['accuracy'],
)
return model
及其配件:
model=create_model()
history=model.fit(xtrain, ytrain,batch_size=1, epochs=5, validation_data=(xtest, ytest), verbose=1)
您可以设置 batch_size = 1
,Keras 会处理它。只需将整个数组放入模型输入即可。
keras层的构建包括指定传递数组的形状,这里要训练的数组形状是(3,2),有1607个样本,
input_shape = (3,2)
X = LSTM(124, activation = 'sigmoid', name='layer1', dropout = 0.4) (temp)
如果你想使用stacked LSTM,你可以使用这个
input_shape = (3,2)
X = LSTM(124, activation = 'sigmoid', name='layer1', dropout = 0.4,return_sequences=True) (temp)
X = LSTM(64, activation = 'sigmoid', name='layer2', dropout = 0.4) (X)
编辑
def create_model():
model = keras.models.Sequential()
model.add(keras.layers.CuDNNLSTM(512, input_shape=(3,2), return_sequences=True, name='inputlstm1'))
model.add(keras.layers.Dropout(0.2))
model.add(keras.layers.CuDNNLSTM(512, return_sequences=True,name='lstm2'))
model.add(keras.layers.Dropout(0.2))
# The last layer of Stacked LSTM need not to return the input sequences
model.add(keras.layers.CuDNNLSTM(512,name='lstm3'))
model.add(keras.layers.Dropout(0.2))
model.add(keras.layers.Dense(32, activation='relu', name='dense1'))
model.add(keras.layers.Dropout(0.2))
model.add(keras.layers.Dense(1, activation='softmax', name='denseoutput2'))
# Compile model
model.compile(
loss='mse',
optimizer='adam',
metrics=['accuracy'],
)
return model
我对机器学习和 keras 还很陌生,一直在尝试输入数据;我的数据看起来像:
[[[0.01363717 0. ]
[0.01577874 0. ]
[0.01463021 0. ]]
[[0.01577874 0. ]
[0.01463021 0. ]
[0.01006721 0. ]]
[[0.01463021 0. ]
[0.01006721 0. ]
[0.00762504 0. ]]...]
数据的形状是:(1607, 3, 2)。 我怎样才能通过:
[[0.01363717 0. ]
[0.01577874 0. ]
[0.01463021 0. ]]
作为 512 个 CuDNNLSTM 单元层的输入?
这是我的整个网络:
def create_model():
model = Sequential()
model.add(CuDNNLSTM(512, input_shape=(3,2), return_sequences=True, name='inputlstm1'))
model.add(Dropout(0.2))
model.add(CuDNNLSTM(512, return_sequences=True,name='lstm2'))
model.add(Dropout(0.2))
model.add(CuDNNLSTM(512, return_sequences=True,name='lstm3'))
model.add(Dropout(0.2))
model.add(Dense(32, activation='relu', name='dense1'))
model.add(Dropout(0.2))
model.add(Dense(1, activation='softmax', name='denseoutput2'))
# Compile model
model.compile(
loss='mse',
optimizer='adam',
metrics=['accuracy'],
)
return model
及其配件:
model=create_model()
history=model.fit(xtrain, ytrain,batch_size=1, epochs=5, validation_data=(xtest, ytest), verbose=1)
您可以设置 batch_size = 1
,Keras 会处理它。只需将整个数组放入模型输入即可。
keras层的构建包括指定传递数组的形状,这里要训练的数组形状是(3,2),有1607个样本,
input_shape = (3,2)
X = LSTM(124, activation = 'sigmoid', name='layer1', dropout = 0.4) (temp)
如果你想使用stacked LSTM,你可以使用这个
input_shape = (3,2)
X = LSTM(124, activation = 'sigmoid', name='layer1', dropout = 0.4,return_sequences=True) (temp)
X = LSTM(64, activation = 'sigmoid', name='layer2', dropout = 0.4) (X)
编辑
def create_model():
model = keras.models.Sequential()
model.add(keras.layers.CuDNNLSTM(512, input_shape=(3,2), return_sequences=True, name='inputlstm1'))
model.add(keras.layers.Dropout(0.2))
model.add(keras.layers.CuDNNLSTM(512, return_sequences=True,name='lstm2'))
model.add(keras.layers.Dropout(0.2))
# The last layer of Stacked LSTM need not to return the input sequences
model.add(keras.layers.CuDNNLSTM(512,name='lstm3'))
model.add(keras.layers.Dropout(0.2))
model.add(keras.layers.Dense(32, activation='relu', name='dense1'))
model.add(keras.layers.Dropout(0.2))
model.add(keras.layers.Dense(1, activation='softmax', name='denseoutput2'))
# Compile model
model.compile(
loss='mse',
optimizer='adam',
metrics=['accuracy'],
)
return model