我正在尝试向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'])
答案 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)