Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 损失:执行回归时Keras中的NaN_Python_Tensorflow_Keras_Deep Learning_Linear Regression - Fatal编程技术网

Python 损失:执行回归时Keras中的NaN

Python 损失:执行回归时Keras中的NaN,python,tensorflow,keras,deep-learning,linear-regression,Python,Tensorflow,Keras,Deep Learning,Linear Regression,我试图预测一个连续值(第一次使用神经网络)。我已经规范化了输入数据。我不明白为什么从第一个历元开始,我会得到一个loss:nan输出 我阅读并尝试了以前对同一个问题的答案中的许多建议,但没有一个对我有帮助。我的训练数据形状是:(201917,64)。这是我的密码: model = Sequential() model.add(Dense(100, input_dim=X.shape[1], activation='relu')) model.add(Dense(100, activation='

我试图预测一个连续值(第一次使用神经网络)。我已经规范化了输入数据。我不明白为什么从第一个历元开始,我会得到一个
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)

以下是您可以采取的查找问题原因的步骤:

  • 确保您的数据集应为:

    • 在数据集中查找任何nan/inf,并修复它
    • 编码不正确(将其转换为UTF-8)
    • 列或行中的值无效
  • 使用退出批量标准化L1/L2正则化,对模型进行标准化,更改批大小,或将数据缩放到其他范围(例如[-1,1]

  • 减小网络的大小

  • 更改其他超参数(例如优化器激活功能


  • 您可以查看并链接以获得额外的帮助。

    有时,当学习率过高时,您会失去帮助。一个解决办法可能是减少它。替换此代码:

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


    看看这是否有帮助。我还将首先尝试使用一个隐藏层,看看它是如何运行的。

    NaN
    在输入数据帧中。在获取数据帧值之前,应替换
    NaN
    值。否则,它将爆炸渐变。

    。人们通常只有在能够跟踪和调试的情况下才能提供帮助。第一项解决了我的问题。我的数据集中有我没有注意到的
    NaN
    值。谢谢真的<代码>df.isnull().sum()
    from keras.optimizers import Adam #maybe put this at the top of your file
    opt = Adam(lr=0.0001) #0.001 was the default, so try a smaller one
    model.compile(optimizer=opt, loss='mean_squared_error')