Closed kanchangcheng closed 6 years ago
@kanchangcheng 这里估计cost范围的计算方法有点问题,每个样本的cost还要乘以label的维度,即cost的范围是2^2 (2 72 72) 128 = 5308416。自然训练得到的cost就是合理的了
即cost的范围是2^2 (2 72 72) 128 = 5308416,对此解答有疑问,麻烦值班同学帮忙解答。因为我算出来的mse为0.8,反推计算人数不符合预期,cost的范围计算是否要乘以batch_size?
解答有疑问
疑问是啥?
反推计算人数不符合预期
没看懂
@kanchangcheng 确认了下,从代码: https://github.com/PaddlePaddle/Paddle/blob/e526dd58ec0a56157934bc0287a2b9cd75172745/python/paddle/v2/trainer.py#L197 可以看出,日志打印的时候是除了batch_size的,所以你看到的结果已经除了batch_size,内部计算没有除。
所以日志中cost的正确范围是 2^2 (2 72 * 72) = 41472
问题描述: paddle训练数据:已经归一化到[-1,1],样例-0.8498901635342934 -0.5887234561874543 -0.7468879668049793 -0.7144251891628021。 paddle模型代码:main_output = paddle.layer.addto([main_output, h1], act=paddle.activation.Tanh(), bias_attr=True),模型的最后一行代码中,激活函数使用了Tanh,结果输出应该在[-1,1]范围内。 paddel训练设置:batch_size=128,cost使用cost = paddle.layer.square_error_cost(input=main_output, label=lbl)平方误差。
推理过程:loss最大为2的平方*128,即为512。但是我训练的结果Pass 0, Batch 0, Cost 17173.087891。
问题:训练得到loss为17173,远远大于最大loss 512,麻烦paddle的同学帮忙解答,谢谢!
附件: 模型代码