Python 相关网络的前向传递输出在没有反向传播的情况下发生变化

Python 相关网络的前向传递输出在没有反向传播的情况下发生变化,python,neural-network,pre-trained-model,chainer,vgg-net,Python,Neural Network,Pre Trained Model,Chainer,Vgg Net,我使用的是Chainer的相关模型vgg(这里称为net)。每次运行以下代码时,我都会得到不同的结果: img = Image.open("/Users/macintosh/Desktop/Code/Ger.jpg") img = Variable(vgg.prepare(img)) img = img.reshape((1,) + img.shape) print(net(img,layers=['prob'])['prob']) 我已经检查了vgg.prepare()好几次,但是它的输出是

我使用的是Chainer的相关模型vgg(这里称为net)。每次运行以下代码时,我都会得到不同的结果:

img = Image.open("/Users/macintosh/Desktop/Code/Ger.jpg")
img = Variable(vgg.prepare(img))
img = img.reshape((1,) + img.shape)
print(net(img,layers=['prob'])['prob'])
我已经检查了vgg.prepare()好几次,但是它的输出是相同的,并且这里没有随机初始化(net是一个预先训练过的vgg网络)。那么为什么会发生这种情况呢?

正如您所看到的,它有
退出功能。我认为这导致了随机性

当您希望在评估模式(而不是训练模式)下转发计算时,可以将chainer配置“训练”设置为
False
,如下所示:

with chainer.no_backprop_mode(), chainer.using_config('train', False):
    result = net(img,layers=['prob'])['prob']
当列车标志为
False
时,不执行退出(并且一些其他功能行为也会改变,例如,
BatchNormalization
使用经过训练的统计数据)