此模型尝试基于具有400个数字的数组预测两个状态。在第一轮训练中,模型开始于前200个样本的损失,然后进入Nan损失。准确性保持在50%左右,当我打印测试集的预测时,它仅预测NaN。我的X_train
的形状为(1934, 400, 1)
,我的y_train
的形状为(1934,)
。我已经尝试检查数据集中的NaN,但是没有。
我的模型如下:
model = Sequential()
model.add(LSTM(128, input_shape=(400,1), activation='relu', return_sequences=True))
model.add(Dropout(0,2))
model.add(LSTM(128, activation='relu'))
model.add(Dropout(0,2))
model.add(Dense(32, activation='relu'))
model.add(Dropout(0,2))
model.add(Dense(1, activation='sigmoid'))
opt = tf.keras.optimizers.Adam(lr=0.01)
# mean_squared_error = mse
model.compile(loss='binary_crossentropy',
optimizer=opt,
metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=3, validation_split = 0.1, shuffle=True, batch_size = 64)
edit:通过将激活功能更改为tanh来解决。乙状结肠保持乙状结肠!
答案 0 :(得分:1)
通过将激活功能更改为“ tanh”解决了该问题。似乎辍学也应该是0.2而不是0.2,但这不是问题的原因。