FP16 训练 ResNet50,loss 为负数
Created by: mzchtx
环境
- system: centos6u3
- python: 2.7.14
- paddle: 1.5.1.post97
- nccl: 2.2.13
问题
使用 FP16 训练 ResNet50:
如果在 fc layer 里加上 softmax 激活,然后使用 cross_entropy
损失,会出现几个 batch 后 loss 为负数的情况。如下:
out = ResNet50().net(input=image, class_dim=class_dim)
cost = fluid.layers.cross_entropy(input=out, label=label)
avg_cost = fluid.layers.mean(x=cost)
如果在 fc layer 不加 softmax 激活,然后使用 softmax_with_cross_entropy
损失,则结果正常。如下:
out = ResNet50().net(input=image, class_dim=class_dim)
cost = fluid.layers.softmax_with_cross_entropy(input=out, label=label)
avg_cost = fluid.layers.mean(x=cost)
上述两种方式使用 fp32 进行训练都没问题。