python - keras模型的权重为nan

标签 python keras deep-learning

我使用以下模型进行回归;输入大小为 2,输出大小为 28。

from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD

model = Sequential()
model.add(Dense(16, input_dim=2, activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(28, activation='linear'))
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error',optimizer=sgd)

在训练中一切顺利,但是当我保存并重新加载模型时;我作为一个楠正在减肥。

from keras.models import model_from_json

model_json = model.to_json()
with open('/models/model_ar.json', "w") as json_file:
     json_file.write(model_json)
model.save_weights('/models/model_wt.h5')

json_file = open('/models/model_ar.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
new_model = model_from_json(loaded_model_json)
# load weights into new model
new_model.load_weights('/models/model_wt.h5')

将权重设为“nan”。将所有权重设为 nan 的原因是什么

    new_model.get_weights()
[array([[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
         nan, nan, nan],
        [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
         nan, nan, nan]], dtype=float32),
 array([nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
        nan, nan, nan], dtype=float32),
 array([[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
         nan, nan, nan],
        [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
         nan, nan, nan],
        [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
         nan, nan, nan],
        [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
         nan, nan, nan],
        [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
         nan, nan, nan],
        [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
         nan, nan, nan]], dtype=float32),
 array([nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
        nan, nan, nan], dtype=float32),
 array([[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
         nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
         nan, nan],
        [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
         nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
         nan, nan],
        [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
         nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
         nan, nan]], dtype=float32),
 array([nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
        nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
        nan, nan], dtype=float32)]

最佳答案

尝试

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True, clipvalue=0.5)

来自 https://www.dlology.com/blog/how-to-deal-with-vanishingexploding-gradients-in-keras/
您还可以尝试 clipnorm=1. 或尝试使用更小的值的参数之一。

这限制了梯度下降的每一步中权重可以改变的程度。当我遇到同样的问题时,它对我有用,我希望它有帮助!

关于python - keras模型的权重为nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52000103/

相关文章:

python - 使用 python 中的 matplotlib 在 3 个轴上绘制包含日期、字符串和数字的 3D 条形图

python - ImportError:无法从 'context'(未知位置)导入名称 'tensorflow.python.eager'

tensorflow - 将训练好的 keras 模型的批量大小设置为 1

machine-learning - 如何将数据集拆分为训练集和验证集

用于 AWS S3 的 Python + Boto3 : Error - Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$"

python - 如何从不同的进程修改 TextView ?

python - TensorFlow Keras 在期望一个预测的同时返回多个预测

python - 如何在 Keras CNN 模型中预测单个图像?

machine-learning - 减少误报的最佳策略 : Google's new Object Detection API on Satellite Imagery

python - 附加到 python 字典