[英]weights of keras model are nan
I'm using below model for regression purpose;我正在使用以下模型进行回归; with input of size 2 and output of size 28.输入大小为 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)
In training all going well, but when I save and reload the model;在训练中一切顺利,但是当我保存并重新加载模型时; I'm getting weights as a nan.我正在减肥。
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')
getting weights as 'nan'.将权重设置为“nan”。 What is reason to get the all weights as 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)]
Try尝试
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True, clipvalue=0.5)
from https://www.dlology.com/blog/how-to-deal-with-vanishingexploding-gradients-in-keras/来自https://www.dlology.com/blog/how-to-deal-with-vanishingexploding-gradients-in-keras/
You can also try clipnorm=1.
您也可以尝试clipnorm=1.
or try one of those parameters with even smaller values.或者尝试使用更小值的参数之一。
This limits how much the weights can change in each step of the gradient descent.这限制了权重在梯度下降的每一步中可以改变多少。 It worked for me when I had the same problem and I hope it helps!当我遇到同样的问题时它对我有用,我希望它能有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.