我正在尝试训练Keras LSTM模型以预测序列中的下一个数字。
我的输入训练数据有形状(16000,10),如下所示
hdf5
相应的输出训练数据具有如下形状(16000,1)
[
[14955 14956 14957 14958 14959 14960 14961 14962 14963 14964]
[14731 14732 14733 14734 14735 14736 14737 14738 14739 14740]
[35821 35822 35823 35824 35825 35826 35827 35828 35829 35830]
[12379 12380 12381 12382 12383 12384 12385 12386 12387 12388]
...
]
由于LSTM抱怨,我改编了培训/测试数据
[[14965] [14741] [35831] [12389] ...]
这是最终的培训/测试数据形状
X_train = X_train.reshape(X_train.shape[0], X_train.shape[1], 1)
X_test = X_test.reshape(X_test.shape[0], X_test.shape[1], 1)
这是我的模特
Total Samples: 20000
X_train: (16000, 10, 1)
y_train: (16000, 1)
X_test: (4000, 10, 1)
y_test: (4000, 1)
这是我的输出
# Model configuration
epochs = 2
batch_size = 32
hidden_neurons = 100
output_size = 1
# Create the model
model = Sequential()
model.add(LSTM(hidden_neurons, input_shape=(X_train.shape[1], X_train.shape[2])))
model.add(Dense(output_size))
model.compile(loss='mean_squared_error', optimizer='rmsprop', metrics=['accuracy'])
print(model.summary())
model.fit(X_train, y_train, epochs=epochs, batch_size=batch_size)
scores = model.evaluate(X_test, y_test, batch_size=batch_size, verbose=0)
print("Model Accuracy: %.2f%%" % (scores[1]*100))
答案 0 :(得分:2)
试试这段代码:
Node - 172.28.1.100
ERROR:
Description = Access is denied.
一般来说,很难帮助你,因为我们需要一种可以重复的例子来测试。但是,这是我的建议:
使用您的NN的超级参数,例如:激活功能,选择功能,层数,学习率等。
更新:
最好先规范化数据。
答案 1 :(得分:1)
准确性不是衡量模型性能的正确方法。与 分类 任务相比,您在此处尝试执行的操作更多是 回归 任务。从你的损失函数中可以看出同样的情况,你正在使用' mean_squared_error '而不是类似' categorical_crossentropy '。
此外,50个时期太少于训练时间。如果您查看日志(在原始问题中),您会看到每个时期的损失减少。你将需要继续训练更多的时代,直到你看到损失已经稳定并且没有进一步减少。
第三,在将数据传递给fit函数之前,您必须对数据进行规范化。这些值非常大,如果没有标准化,算法可能无法收敛。
如果您仍然需要解决此问题,并需要更多帮助,请在评论中告诉我,以便我可以帮助您完成代码。