训练神经网络的时候,增大了隐藏层的神经元个数,突然间loss值变成了nan 经过多方搜索,找到了原因 tensorflow解决方法网上已有,这里贴keras的解决办法
在pycharm里 import keras keras.losses ctrl + 左键 losses 进入损失函数模块 找到调用的损失函数,这里是
def categorical_crossentropy(y_true, y_pred, from_logits=False, label_smoothing=0): y_pred = K.constant(y_pred) if not K.is_tensor(y_pred) else y_pred y_true = K.cast(y_true, y_pred.dtype) if label_smoothing is not 0: smoothing = K.cast_to_floatx(label_smoothing) def _smooth_labels(): num_classes = K.cast(K.shape(y_true)[1], y_pred.dtype) return y_true * (1.0 - smoothing) + (smoothing / num_classes) y_true = K.switch(K.greater(smoothing, 0), _smooth_labels, lambda: y_true) return K.categorical_crossentropy(y_true, y_pred, from_logits=from_logits)把最后的一句改为
return K.categorical_crossentropy(y_true, y_pred+1e-5, from_logits=from_logits)保存关闭,问题解决。