如何使用多维输入训练Keras LSTM?

这是我的输入数据的形状:

>> print(X_train.shape)(1125, 75, 2)

然后我尝试通过这种方式构建模型:

model = Sequential()model.add(LSTM(    output_dim=50,    input_shape = (75, 2),    #input_shape = X_train.shape[1:],    return_sequences=True))model.add(Dropout(0.2))model.add(LSTM(    100,    return_sequences=False))model.add(Dropout(0.2))model.add(Dense(    output_dim=1))model.add(Activation("linear"))model.compile(loss="mse", optimizer="rmsprop")model.fit(    X_train,    y_train,    batch_size=512,    nb_epoch=5,    validation_split=0.1,    verbose=0,    shuffle=True)

但是在拟合时返回了以下错误:

ValueError: 检查模型目标时出错:期望activation_32有2个维度,但得到的数组形状为(1125, 75, 2)

这是完整的错误输出:

---------------------------------------------------------------------------ValueError                                Traceback (most recent call last)<ipython-input-48-b209fe29a91d> in <module>()    152         verbose=0,--> 153         shuffle=True)    154 /usr/local/lib/python3.5/dist-packages/keras/models.py in fit(self, x, y, batch_size, nb_epoch, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, **kwargs)    670                               class_weight=class_weight,    671                               sample_weight=sample_weight,--> 672                               initial_epoch=initial_epoch)    673     674     def evaluate(self, x, y, batch_size=32, verbose=1,/usr/local/lib/python3.5/dist-packages/keras/engine/training.py in fit(self, x, y, batch_size, nb_epoch, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch)   1114             class_weight=class_weight,   1115             check_batch_axis=False,-> 1116             batch_size=batch_size)   1117         # prepare validation data   1118         if validation_data:/usr/local/lib/python3.5/dist-packages/keras/engine/training.py in _standardize_user_data(self, x, y, sample_weight, class_weight, check_batch_axis, batch_size)   1031                                    output_shapes,   1032                                    check_batch_axis=False,-> 1033                                    exception_prefix='model target')   1034         sample_weights = standardize_sample_weights(sample_weight,   1035                                                     self.output_names)/usr/local/lib/python3.5/dist-packages/keras/engine/training.py in standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix)    110                                  ' to have ' + str(len(shapes[i])) +    111                                  ' dimensions, but got array with shape ' +--> 112                                  str(array.shape))    113             for j, (dim, ref_dim) in enumerate(zip(array.shape, shapes[i])):    114                 if not j and not check_batch_axis:ValueError: Error when checking model target: expected activation_32 to have 2 dimensions, but got array with shape (1125, 75, 2)

我做错了什么?我已经按照Keras文档的这个教程进行操作了。


回答:

你的问题不在于输入形状,而在于输出形状。你需要重新检查你的y_train是否具有适当的形状。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注