繁体   English   中英

用于Keras LSTM模型的batch_input_shape

[英]batch_input_shape for Keras LSTM model

我正在尝试使用Keras库(tensorflow后端)使用LSTM作为第一个隐藏层构建神经网络。 我在理解如何重塑数据并将其使用batch_input_size参数将其馈送到有状态LSTM时遇到问题。

我的输入是在10 Khz采样的100秒时间序列。 所以基本上,我有100 * 10000个不同的时间值。 我采样了3个不同的可观察对象,因此特征数量为3。让我们将X称为输入矩阵,其形状为:

np.shape(X) = (1000000,1,3)

我的目标在每个时间点都有一个值-> 100 * 10000个值:

np.shape(Y) = (1000000,1,1)

我希望我的模型一次花费一秒钟,因此可以预测10000个目标值。 我想这应该是batch_size 目标值假设我想在LSTM层中放置32个节点,这就是我写的:

model_LSTM = Sequential()
model_LSTM.add(LSTM(32, stateful=True, batch_input_shape=(10000,1,3)))
model_LSTM.compile(optimizer=keras.optimizers.Adam(lr=0.00039, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False), loss='mean_squared_error')

为了适应模型,我一次一批进料:

batch_size=10000
for i in range(int(X.shape[0] / batch_size)):
    X = X_l[(i * batch_size):((i + 1) * batch_size)][:][:]
    Y = Y_l[(i * batch_size):((i + 1) * batch_size)]
    model_hist = model_LSTM.fit(X, Y, epochs=1, 
                                batch_size=batch_size, 
                                verbose=1, shuffle=False)

我这样做正确吗? 该脚本运行时没有错误,但是在新集合上使用model_LSTM.predict()时,它只为每个时间步输出相同的值。

您能否提供更多信息,例如准确性和成本? 由于它一直只在预测一个班级,因此您的模型无法学习。 也许,您的数据集偏斜,导致无需学习即可获得高精度。 我建议修改超参数,并尝试使用其他模型,例如SimpleRNNGRU

另外,由于您提出了要求,我建议您使用fit_generator方法,因为它将减少一次又一次调用fit的开销。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM