我的数据的形状(样本,窗口,特征数量):
X_train (3620, 3, 43)
y_train (3620, 1)
X_test (905, 3, 43)
y_test (905, 1)
这是我的模特:
model = Sequential()
model.add(Bidirectional(LSTM(448, input_shape = (3, 43), activation = 'relu',
return_sequences=True)))
model.add(Dropout(dropout_rate1))
model.add(Bidirectional(LSTM(256, activation = 'relu', return_sequences = True)))
model.add(Dropout(dropout_rate2))
model.add(TimeDistributed(Dense(64, kernel_initializer = 'uniform',
activation = 'relu')))
model.add(TimeDistributed(Dense(nOut, kernel_initializer = 'uniform',
activation = 'linear',
kernel_regularizer = regularizers.l2(regu))))
model.compile(optimizer = 'adam', loss = 'mse', metrics = ['accuracy'])
net_history = model.fit(X_train, y_train, batch_size = batch_size, epochs = num_epochs,
verbose = 0, validation_split = val_split, shuffle =
True, callbacks = [best_model, early_stop])
我收到此错误:
ValueError: 检查目标时出错:预期time_distributed_4具有3个维度,但数组的形状为(3620,1)
我的X_train是使用3的移动窗口完成的。因此,每1 y_train标签需要3步X。错误似乎告诉我我的y_train应该是(3620,3,1),我读对了吗?
如果是的话,这里的逻辑或我应该应用的逻辑是什么,因为X_train中的每3步变为1 y_train,我如何将其更改为3步至3 y?所以所有的3年都一样吗?让我举一个例子,以便我清楚地说明自己。
当前X_train =
[[[[1,2,3 ..... 43]
[1、2、3 ..... 43]
[1、2、3 ..... 43]]
...
[[1、2、3 ..... 43]
[1、2、3 ..... 43]
[1、2、3 ..... 43]]]
当前y_train = [[1] ..... [3620]]
y_train应该成为下面的它吗? [[[1],[1],[1]] ..... [[3620],[3620],[3620]]]
非常感谢。