网站的建设分析,双语 网站 数据怎么做,制作展示型网站公司哪家好,黄山旅游攻略及费用1. model.train() 在使用 pytorch 构建神经网络的时候#xff0c;训练过程中会在程序上方添加一句model.train()#xff0c;作用是 启用 batch normalization 和 dropout 。 如果模型中有BN层#xff08;Batch Normalization#xff09;和 Dropout #xff0c;需要在 训练…1. model.train() 在使用 pytorch 构建神经网络的时候训练过程中会在程序上方添加一句model.train()作用是 启用 batch normalization 和 dropout 。 如果模型中有BN层Batch Normalization和 Dropout 需要在 训练时 添加 model.train()。 model.train() 是保证 BN 层能够用到 每一批数据 的均值和方差。对于 Dropoutmodel.train() 是 随机取一部分 网络连接来训练更新参数。 2. model.eval() model.eval()的作用是 不启用 Batch Normalization 和 Dropout。 如果模型中有 BN 层Batch Normalization和 Dropout在 测试时 添加 model.eval()。 model.eval() 是保证 BN 层能够用 全部训练数据 的均值和方差即测试过程中要保证 BN 层的均值和方差不变。对于 Dropoutmodel.eval() 是利用到了 所有 网络连接即不进行随机舍弃神经元。 为什么测试时要用 model.eval() 训练完 train 样本后生成的模型 model 要用来测试样本了。在 model(test) 之前需要加上model.eval()否则的话有输入数据即使不训练它也会改变权值。这是 model 中含有 BN 层和 Dropout 所带来的的性质。 eval() 时pytorch 会自动把 BN 和 DropOut 固定住不会取平均而是用训练好的值。 不然的话一旦 test 的 batch_size 过小很容易就会被 BN 层导致生成图片颜色失真极大。 eval() 在非训练的时候是需要加的没有这句代码一些网络层的值会发生变动不会固定你神经网络每一次生成的结果也是不固定的生成质量可能好也可能不好。 也就是说测试过程中使用model.eval()这时神经网络会 沿用 batch normalization 的值而并 不使用 dropout。