如何选择LSTM 2-d输入形状?

时间:2017-12-08 15:18:30

标签: machine-learning keras lstm recurrent-neural-network rnn

我正在尝试向LSTM输入具有22个功能(22,2000)的1-D信号(1,2000)。
(以200赫兹的采样率拍摄1-D信号10秒) 我有808批次。 (808,22,2000)

我看到LSTM接收到3D张量形状(batch_size,timestep,input_dim)。
所以我的输入形状是正确的吗?
:(batch_size = 808,timestep = 2000,input_dim = 3)

这是我的代码示例。

# data shape check
print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)
(727, 22, 2000)
(81, 22, 2000)
(727, 2)
(81, 2)

# Model Config
inputshape = (808,2000,2)  # 22 chanel, 2000 samples
lstm_1_cell_num = 20
lstm_2_cell_num = 20
inputdrop_ratio = 0.2
celldrop_ratio = 0.2

# define model
model = Sequential()
model.add(LSTM(lstm_1_cell_num, input_shape=inputshape, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(20))
model.add(LSTM(lstm_2_cell_num, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(2, activation='sigmoid'))
print(model.summary())
model.compile(loss='binary_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])

1 个答案:

答案 0 :(得分:0)

第一个输入形状必须为(22,2000),并且应在拟合函数中给出批量大小。所以试试这个

inputshape = (22,2000)

model.fit(X_train, y_train,
          batch_size=808,
          epochs=epochs,
          validation_data=(X_test,y_test),
          shuffle=True)