python - 使用模型推断批处理与使用 pytorch 的个人时的不同结果

标签 python deep-learning pytorch training-data

我有一个神经网络,它采用维度 (batch_size, 100, 1, 1) 的输入张量并生成维度 (batch_size, 3, 64, 64) 的输出张量。
使用模型推断一批两个元素和单独推断元素时,我得到了不同的结果。
使用下面的代码,我初始化了一个维度为 (2, 100, 1, 1) 的 pytorch 张量。我将这个张量传递给模型,然后将模型输出的第一个元素存储在变量 result1 中。对于 result2,我只是通过我的模型直接运行原始输入张量的第一个元素。

inputbatch=torch.randn(2, Z_DIM, 1, 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 .

关于python - 使用模型推断批处理与使用 pytorch 的个人时的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63400559/

相关文章:

r - 了解随机起始权重对神经网络性能的影响

machine-learning - 机器学习: what if any one of feature have no correlation with label(target)?

python - Cuda和pytorch内存使用

python - GPU 上的训练速度会随着时间变慢

pytorch - 在 Transformer 进行语言建模的上下文中, "permutation invariant"意味着什么?

python - 通过 Python 连接 CISCO Anyconnect VPN

python - `Itertools.cycle` : most pythonic way to take multiple steps?

javascript - 如何使用/从 python 字典发送键()

python - 如何将查询中设置的page_size设置为分页元数据djangorest框架

python - 图像分割结果中的噪声