为什么我的神经网络的 val_accuracy 总是相同?

问题描述 投票:0回答:1

我已经开始使用

keras
tensorflow
学习机器学习,我想用
TSV-file
训练神经网络。然而,我的
val_accuracy
总是一样的。
TSV-file
1000 用于预测的参数和 1 输出只能是 01

我尝试使用不同的优化器和损失,改变

Dense
层、单元和激活函数的数量。这是我的模型

model = keras.Sequential([
    keras.Input((1000,)),
    normalize,
    keras.layers.Dense(1000, activation=keras.activations.relu),
    keras.layers.Dense(200, activation=keras.activations.relu),
    keras.layers.Dense(50, activation=keras.activations.relu),
    keras.layers.Dense(1, )
])

model.compile(optimizer='adam', loss=keras.losses.BinaryCrossentropy(from_logits=True), metrics=['accuracy'])

losses = model.fit(train_data, train_labels, epochs=80, validation_split=0.2)

之后

model.fit
我得到了这个结果:

Epoch 77/80
4/4 ━━━━━━━━━━━━━━━━━━━━ 0s 36ms/step - accuracy: 0.3374 - loss: nan - val_accuracy: 0.1786 - val_loss: nan
Epoch 78/80
4/4 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - accuracy: 0.3603 - loss: nan - val_accuracy: 0.1786 - val_loss: nan
Epoch 79/80
4/4 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - accuracy: 0.3041 - loss: nan - val_accuracy: 0.1786 - val_loss: nan
Epoch 80/80
4/4 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - accuracy: 0.3645 - loss: nan - val_accuracy: 0.1786 - val_loss: nan

其中

val_accuracy
始终为 0.1786
loss
nan。也许我不明白如何使用
Dense
层。那么我该如何解决这个问题呢?如需了解更多信息,您可以在 Google Colab 上使用
TSV-file

检查我的代码
python tensorflow keras
1个回答
0
投票

model.fit
的输出表明它无法计算损失。如果损失保持为
nan
,训练过程将不会调整参数,因此模型不会改善其
val_accuracy

我在你的源代码中注意到你正在替换“?”与

None
:

train_data = np.array(data.map(lambda x: None if x == '?' else int(x)))

使用这些

None
值,模型将无法计算输出。我建议在使用它们进行训练之前用
None
过滤掉它们。

© www.soinside.com 2019 - 2024. All rights reserved.