使用模型推断批处理与使用pytorch进行个体化时的结果不同

问题描述

我有一个神经网络,它接受尺寸为(batch_size,100,1,1)的输入张量,并产生尺寸为(batch_size,3,64,64)的输出张量。 当使用模型来推断一批两个元素以及分别推断元素时,我得到不同的结果。

使用下面的代码,我初始化了尺寸为(2,100,1,1)的pytorch张量。我将这个张量通过模型,然后将模型输出的第一个元素存储在变量result1中。对于result2,我只是直接通过模型运行原始输入张量的第一个元素。

inputbatch=torch.randn(2,Z_DIM,1,device=device)
inputElement=inputbatch[0].unsqueeze(0)

result1=model(inputbatch)[0]
result2=model(inputElement)

我的期望是result1和result2相同。但是result1和result2完全不同。谁能解释两个输出为何不同的原因。

解决方法

这可能是因为您的模型具有某些随机过程,这些随机过程要么是特定于训练的,要么没有禁用它们(例如,通过使用model.eval()),或者在推理期间需要模型。

要测试以上内容,请使用:


model = model.eval()

在获取result1之前。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...