我试图了解哪些输入参数可能对我的数据有效,因此我正在训练多个模型并尝试比较结果。由于某些原因,即使精度非常低,某些模型启动也会损失0。
我的代码如下:
first=keras.models.Sequential()
first.add(keras.layers.LSTM(100, activation = 'tanh', input_shape = (X.shape[1], 1), return_sequences = True))
first.add(keras.layers.Dense(Y.shape[2], activation = 'softmax'))
first.compile(optimizer = 'rmsprop', loss = 'categorical_crossentropy', metrics=['categorical_accuracy'])
models["first"]=first
,我有一系列的代码块,就像在每个代码块中更改一些参数一样。 甚至在我尝试拟合之前,其中的某些损失已经为0(或2.79e-7),但是并没有任何真正的一致性。有时第一个模型会遇到这个问题,有时会出现第三个问题。我什至尝试仅在发生这种情况时重新生成数据和模型,但是当我这样做时,损失== 0问题的几率似乎增加了。 输入数据的格式为[[[5],[7],[3] ...] ...],在我通过keras.utils.to_categorical运行它们之前,标签是相同的,现在很热。我很确定输入和标签正确,因为任何给定的模型在大多数情况下都能正常工作。
任何建议此时都将是有用的。
编辑:这似乎仅在GPU上运行时发生。当我强制TensorFolw仅在CPU上运行时,没有任何问题。知道什么原因会导致GPU出现问题吗?
答案 0 :(得分:0)
尝试设置随机种子以提高可重复性:
random.seed(10)
此外,如果模型是无状态的,则在每个序列处都将重置单元状态。但是,如果不是这样(例如,如果您使用stateful = True),则在每次训练后您都需要重置状态。