缘起
之前训练好的网络,但是为了硬件移植,其中某些操作需要删除,那么简单,替换一些硬件不支持的操作,重新训练一下就好了,毕竟训练集,数据导入方式,训练代码,测试代码之前都验证了没有什么问题。但是问题来了,简单的训练一次,居然出现了输出结果成为了固定值的问题,从来没有遇得到过
困境
我是一个dense prediction的问题,输入图像,输出图像。结果输出的图像的每个像素值居然是一个定值。我的天,这要么是数据除了问题,要么是网络结果除了问题,关键在于我的数据也没有改变过啊,调试一遍没有问题,那么就是网络结构了,用可视化工具tensorboard显示了一下,检查了一遍,也没有什么问题啊。那是为什么?陷入迷途。。。。
网上查询答案,网上说什么sigmoid函数换成了relu,但是我本来就是relu好吧。
搜索
其实只是修改了一下网络结构,因此,我逐个替换进行尝试。毕竟原来没有修改网络结构的时候没有问题的,我替换成原来的网络结构完全没有问题。我初步认为网络结构的修改是出现了问题,但依然没有发现任何问题。
那就是找不同了,网络结构上没有什么不同,那只能是在训练的过程中继承的参数出现了问题。原来训练的时候初始化新的参数进行训练,后面是继承了某一个版本的参数(因为我的网络是多个阶段的原因,一言难尽)。那就试试不继承参数,居然就这么对了。。。
缘尽
原来就是参数继承的原因,原来就是初始训练参数的原因,第一次感受到,初始化的参数居然会导致这么严重的后果。只是目前依然不明白,之前继承的参数是怎么得到的。(我看过那一组参数,绝对不是什么全零或者什么的,是一组看起来正常却结果出人意料的参数)[手动哭脸] END!!