我正在尝试使用Tensorflow后端在Keras中实现RefineNet。我正在使用来自https://gist.github.com/flyyufelix/65018873f8cb2bbe95f429c474aa1294的ResNet-101前端和预先训练的权重。该模型可以成功编译,但在训练过程中不会收敛:仅经过1到5个训练步骤,该模型便始终收敛到单个课程。
虽然我尝试过的东西清单:
最后一点让我认为架构只是无视输入,但我不知道在哪里,如何以及为什么。
训练过程中的输出示例:
Training:
Step 0, loss 15.566238403320312, acc 0.012790679931640625
Step 1, loss 9.91278076171875, acc 0.36734771728515625
Step 2, loss 10.994621276855469, acc 0.27989959716796875
Step 3, loss 10.00101375579834, acc 0.3611602783203125
Step 4, loss 11.439224243164062, acc 0.2010345458984375
Step 5, loss 11.397968292236328, acc 0.229278564453125
Step 6, loss 9.844161987304688, acc 0.3711433410644531
Step 7, loss 9.981706619262695, acc 0.36286163330078125
Step 8, loss 11.335559844970703, acc 0.21475982666015625
Step 9, loss 9.997631072998047, acc 0.3608970642089844
...
完整的代码可以在以下Google Colab笔记本中找到:https://colab.research.google.com/drive/1OlujuKZYhRaTm9h7rHAPEi9gkiYmQLR_
我试图使重现该问题尽可能容易。
任何帮助/想法将不胜感激!
答案 0 :(得分:0)
在conv层解决问题后,添加Batch Normalization层。