模型的 Pytorch 推理每次都给我不同的结果
Pytorch Inferencing form the model is giving me different results every time
我在 pytorch 中创建并训练了一个非常简单的网络,如下所示:
self.task_layers[task][task_layer_key]; TaskLayerManager(
(taskLayers): ModuleList(
(0): lc_hidden(
(dropout_layer): Dropout(p=0.0, inplace=False)
(layer_norm): LayerNorm((768,), eps=1e-05, elementwise_affine=True)
)
(1): cnn(
(cnn_layer): CNN_Text(
(dropout): Dropout(p=0.1, inplace=False)
(fc1): Linear(in_features=300, out_features=2, bias=True)
(convs1): ModuleList(
(0): Conv2d(1, 300, kernel_size=(5, 768), stride=(1, 1), padding=(4, 0))
)
)
)
)
)
Layer descriptions:
taskLayers.0.linear_weights torch.Size([13])
taskLayers.0.layer_norm.weight torch.Size([768])
taskLayers.0.layer_norm.bias torch.Size([768])
taskLayers.1.cnn_layer.fc1.weight torch.Size([2, 300])
taskLayers.1.cnn_layer.fc1.bias torch.Size([2])
taskLayers.1.cnn_layer.convs1.0.weight torch.Size([300, 1, 5, 768])
taskLayers.1.cnn_layer.convs1.0.bias torch.Size([300])
这是一个二元分类网络,以3d张量为输入[N,K,768]并给出输出[N,2]张量
我无法弄清楚“为什么每次 运行 都会给我不同的结果”?
请帮助我 - 我是 pytorch 的新手。
如果需要任何其他信息,请告诉我。
我怀疑这是因为您没有将模型设置为 和
model.eval()
如果您不这样做,您的 dropout 层将保持激活状态并在每次调用时随机丢弃 p
比例的神经元。
我在 pytorch 中创建并训练了一个非常简单的网络,如下所示:
self.task_layers[task][task_layer_key]; TaskLayerManager(
(taskLayers): ModuleList(
(0): lc_hidden(
(dropout_layer): Dropout(p=0.0, inplace=False)
(layer_norm): LayerNorm((768,), eps=1e-05, elementwise_affine=True)
)
(1): cnn(
(cnn_layer): CNN_Text(
(dropout): Dropout(p=0.1, inplace=False)
(fc1): Linear(in_features=300, out_features=2, bias=True)
(convs1): ModuleList(
(0): Conv2d(1, 300, kernel_size=(5, 768), stride=(1, 1), padding=(4, 0))
)
)
)
)
)
Layer descriptions:
taskLayers.0.linear_weights torch.Size([13])
taskLayers.0.layer_norm.weight torch.Size([768])
taskLayers.0.layer_norm.bias torch.Size([768])
taskLayers.1.cnn_layer.fc1.weight torch.Size([2, 300])
taskLayers.1.cnn_layer.fc1.bias torch.Size([2])
taskLayers.1.cnn_layer.convs1.0.weight torch.Size([300, 1, 5, 768])
taskLayers.1.cnn_layer.convs1.0.bias torch.Size([300])
这是一个二元分类网络,以3d张量为输入[N,K,768]并给出输出[N,2]张量 我无法弄清楚“为什么每次 运行 都会给我不同的结果”? 请帮助我 - 我是 pytorch 的新手。 如果需要任何其他信息,请告诉我。
我怀疑这是因为您没有将模型设置为
model.eval()
如果您不这样做,您的 dropout 层将保持激活状态并在每次调用时随机丢弃 p
比例的神经元。