keras训练模型遇到loss:nan 解决办法

在这里插入图片描述

训练神经网络的时候,增大了隐藏层的神经元个数,突然间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)

保存关闭,问题解决。

发布了11 篇原创文章 · 获赞 9 · 访问量 1064

猜你喜欢

转载自blog.csdn.net/shuzip/article/details/102842967