在训练和测试阶段行为差距较大的层,常用的有:batchnorm、dropout、instancenurm等。i其中,nstancenorm是在一个channel中做归一化,算H*W的均值,用在风格化迁移。可以加速模型的收敛,并且保持每个图像实例之间的独立。
对于这种有较大差距的层的使用,需要在测试阶段将training的值设置为False,否则会有很大的影像 。将每层中的参数training设置为TRUE/FALSE较为繁琐,常用的就是model.train() and model.eval()
两者的用法与区别:
*** 两者分别作用在训练和测试阶段的开头位置,model.train() 表示启动batchnorm、dropout、instancenorm功能,model.eval()表示直接调用上述层已经训练好的参数来对测试集进行预测。
如果在测试阶段没有加model.eval(),可能会因test的batch_size过小,很容易就会被BN层导致生成图片颜色失真极大
用法示例如下:
网友评论