You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

训练完成的Keras分类神经网络预测输出NaN问题求助

多标签分类模型训练正常但预测输出NaN的问题

我正在使用形状为(4458, 172)的数据集训练多标签分类模型,前2列表示样本是否属于两个类别(单样本可属于其中一个、两个或都不属于),模型需输出样本属于这两个类别的概率。

我的代码

dataset.shape # (4458, 172)
X = dataset[:, 2:]
X.shape       # (4458, 170)
Y = dataset[:,0:2]
Y.shape       # (4458, 2)

scaler = MinMaxScaler().fit(X)
X_scale = scaler.transform(X)
X_scale

X_train, X_val_and_test, Y_train, Y_val_and_test = train_test_split(X_scale, Y, test_size = 0.4)
X_val, X_test, Y_val, Y_test = train_test_split(X_val_and_test, Y_val_and_test, test_size = 0.5)

model = Sequential([
    Dense(170, activation = 'relu', input_shape = (170,)),
    Dense(85, activation = 'relu'),
    Dense(48, activation = 'relu'),
    Dense(16, activation = 'relu'),
    Dense(8, activation = 'relu'),
    Dense(2, activation = 'sigmoid'),
])

model.compile(optimizer='RMSprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

hist = model.fit(X_train, Y_train,
          batch_size=170, epochs=200,
          validation_data=(X_val, Y_val))
model.evaluate(X_test, Y_test)

X[0:1].shape   # (1, 170)
prediction = model.predict(X[0:1])
prediction

模型训练最后几轮输出

Epoch 190/200
2674/2674 [==============================] - 0s 18us/step - loss: 0.0929 - accuracy: 0.9632 - val_loss: 0.1616 - val_accuracy: 0.9451
Epoch 191/200
2674/2674 [==============================] - 0s 18us/step - loss: 0.0848 - accuracy: 0.9671 - val_loss: 0.1917 - val_accuracy: 0.9333
Epoch 192/200
2674/2674 [==============================] - 0s 16us/step - loss: 0.0964 - accuracy: 0.9576 - val_loss: 0.1510 - val_accuracy: 0.9428
Epoch 193/200
2674/2674 [==============================] - 0s 18us/step - loss: 0.0959 - accuracy: 0.9662 - val_loss: 0.1576 - val_accuracy: 0.9400
Epoch 194/200
2674/2674 [==============================] - 0s 16us/step - loss: 0.0907 - accuracy: 0.9648 - val_loss: 0.1787 - val_accuracy: 0.9395
Epoch 195/200
2674/2674 [==============================] - 0s 16us/step - loss: 0.0812 - accuracy: 0.9680 - val_loss: 0.1503 - val_accuracy: 0.9479
Epoch 196/200
2674/2674 [==============================] - 0s 23us/step - loss: 0.0866 - accuracy: 0.9637 - val_loss: 0.1554 - val_accuracy: 0.9428
Epoch 197/200
2674/2674 [==============================] - 0s 17us/step - loss: 0.0939 - accuracy: 0.9605 - val_loss: 0.1512 - val_accuracy: 0.9445
Epoch 198/200
2674/2674 [==============================] - 0s 18us/step - loss: 0.0862 - accuracy: 0.9639 - val_loss: 0.1544 - val_accuracy: 0.9451
Epoch 199/200
2674/2674 [==============================] - 0s 18us/step - loss: 0.0849 - accuracy: 0.9673 - val_loss: 0.1601 - val_accuracy: 0.9428
Epoch 200/200
2674/2674 [==============================] - 0s 17us/step - loss: 0.0881 - accuracy: 0.9647 - val_loss: 0.1578 - val_accuracy: 0.9417

问题现象与排查情况

模型训练过程中各轮次的loss和accuracy数据合理,测试集评估精度也较高,但用单行原始X数据预测时,输出结果为[[nan, nan]],而非预期的概率值。

已尝试的排查与解决方案:

  • 更换optimizer,无效
  • 排查数据集,确认无NaN和Inf值

希望能找出问题所在。

内容的提问来源于stack exchange,提问作者Rustigator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 11:22:28