首页 Paddle框架 帖子详情
训练不久后就出现Cost nan 是什么原因
收藏
快速回复
Paddle框架 问答模型训练 2664 7
训练不久后就出现Cost nan 是什么原因
收藏
快速回复
Paddle框架 问答模型训练 2664 7

训练开始还可以之后就变成了Cost nan 怎么解决啊

Pass 0 , Batch 400 , Cost 9.932017 , {'classification_error_evaluator': 0.9800000190734863}
...................................................................................................
Pass 0 , Batch 500 , Cost 9.067940 , {'classification_error_evaluator': 0.9800000190734863}
...................................................................................................
Pass 0 , Batch 600 , Cost nan , {'classification_error_evaluator': 1.0}
...................................................................................................
Pass 0 , Batch 700 , Cost nan , {'classification_error_evaluator': 1.0}

0
收藏
回复
全部评论(7)
时间顺序
夜雨飘零1
#2 回复于2018-08

应该是梯度爆炸了,可以试试减小学习率,加正则,使用BN层

0
回复
Qadle
#3 回复于2018-09

batch_size设为1且存在batch_norm层是不是也可能出现这个问题?

0
回复
l
lucywsq
#4 回复于2018-09
Qadle #3
batch_size设为1且存在batch_norm层是不是也可能出现这个问题?

您好,如果您在使用中遇到类似的问题,方便的话请您提供下详细代码,以便解决~感谢您的支持!

0
回复
Qadle
#5 回复于2018-09
lucywsq #4
您好,如果您在使用中遇到类似的问题,方便的话请您提供下详细代码,以便解决~感谢您的支持!
def prediction_program():
    hidden_size = 7
    image_shape =[3, 300, 300]
    img = fluid.layers.data(name='img', shape=image_shape, dtype='float32',lod_level=1)
    module11, module13, module14, module15, module16, module17 = mobile_net(img, scale=1.0)
    tmp0 = fluid.layers.fc(input=[module11,module13,module14,module15,module16,module17], size = 15,act='relu')
    input_forward_proj = fluid.layers.fc(input=tmp0,
                                         size=hidden_size * 4,
                                         bias_attr=False)
    forward, _ = fluid.layers.dynamic_lstm(
        input=input_forward_proj,
        size=hidden_size * 4)
    forward_last = fluid.layers.sequence_last_step(input=forward)
    prediction = fluid.layers.fc(input=forward_last, size = 1,act='relu')
    return  prediction
def train_program():
    prediction = prediction_program()    
    y = fluid.layers.data(name='y',shape = [1],dtype='float32',lod_level=1)
    gt1 = fluid.layers.abs(prediction-y)/y
    gt2 = fluid.layers.square_error_cost(y,prediction)
    gt3 = gt2/fluid.layers.square(y)
    loss1 = fluid.layers.mean(gt1)
    loss2 = fluid.layers.mean(gt2)
    loss3 = fluid.layers.mean(gt3)
    return [loss3,loss2,prediction,loss1]
def optimizer_program():
    return fluid.optimizer.Adam(learning_rate=0.01
                               # ,regularization=fluid.regularizer.L2DecayRegularizer(regularization_coeff=0.05)
                               )

module11-17来自https://github.com/PaddlePaddle/models/blob/develop/fluid/object_detection/mobilenet_ssd.py

0
回复
ccpcbear
#6 回复于2018-12

谢谢,就是学习率的问题,改小了就好了

0
回复
琉璃之酒
#7 回复于2020-07

我也遇到这种情况了,不知道是不是接近0的数值太多了,不知道这种情况怎么处理

0
回复
w
wangwei8638
#8 回复于2020-07
谢谢,就是学习率的问题,改小了就好了

原来如此

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户