首页 > 解决方案 > 损失:执行回归时 Keras 中的 NaN

问题描述

我正在尝试预测一个连续值(第一次使用神经网络)。我已经对输入数据进行了标准化。我不知道为什么我loss: nan从第一个时代开始就得到输出。

我阅读并尝试了以前对同一问题的答案的许多建议,但没有一个对我有帮助。我的训练数据形状是:(201917, 64). 这是我的代码:

model = Sequential()
model.add(Dense(100, input_dim=X.shape[1], activation='relu'))
model.add(Dense(100, activation='relu'))
model.add(Dense(100, activation='relu'))

# Output layer
model.add(Dense(1, activation='linear'))

# Construct the neural network inside of TensorFlow
model.compile(loss='mean_squared_error', optimizer='Adam')

# train the model
model.fit(X_train, y_train, epochs=10, batch_size=32,
shuffle=True, verbose=2)

标签: pythontensorflowkerasdeep-learninglinear-regression

解决方案


这些是您可以采取的步骤来找出问题的原因:

  1. 确保您的数据集是应有的:

    • 在数据集中查找任何nan / inf并修复它。
    • 编码不正确(将其转换为UTF-8)。
    • 您的列或行中的值无效。
  2. 使用DropoutBatchNormalizationL1 / L2 正则化来规范化您的模型,更改您的batch_size或将您的数据缩放到其他范围(例如[-1, 1])。

  3. 缩小网络规模。

  4. 更改其他超参数(例如优化器激活函数)。

您可以查看链接和链接以获得额外帮助。


推荐阅读