Pau*_*ers 7 deep-learning pytorch
我有这个代码:
actual_loes_score_g = actual_loes_score_t.to(self.device, non_blocking=True)
predicted_loes_score_g = self.model(input_g)
loss_func = nn.L1Loss()
loss_g = loss_func(
predicted_loes_score_g,
actual_loes_score_g,
)
Run Code Online (Sandbox Code Playgroud)
哪里predicted_loes_score_g
是tensor([[-24.9374]], grad_fn=<AddmmBackward0>)
和actual_loes_score_g
是tensor([20.], dtype=torch.float64)
. (出于调试目的,我使用批量大小 1。)
我收到此警告:
torch/nn/modules/loss.py:96: UserWarning: Using a target size (torch.Size([1])) that is
different to the input size (torch.Size([1, 1])). This will likely lead to incorrect
results due to broadcasting. Please ensure they have the same size.
Run Code Online (Sandbox Code Playgroud)
我如何正确确保它们具有相同的尺寸?
我想这可能就是答案:
predicted_loes_score = predicted_loes_score_g.detach()[0]
loss_g = loss_func(
predicted_loes_score,
actual_loes_score_g,
)
Run Code Online (Sandbox Code Playgroud)
但后来我得到这个错误:
torch/autograd/__init__.py", line 154, in backward
Variable._execution_engine.run_backward(
RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
Run Code Online (Sandbox Code Playgroud)
小智 9
predicted_loes_score_g = tensor([[-24.9374]], grad_fn=<AddmmBackward0>)
Run Code Online (Sandbox Code Playgroud)
大小为 [1,1]
actual_loes_score_g = tensor([20.], dtype=torch.float64)
Run Code Online (Sandbox Code Playgroud)
这是尺寸 [1]
您需要从预测中删除维度或向目标添加维度。我会推荐后者,因为额外的尺寸对应于您的批量大小。尝试这个:
actual_loes_score_g = actual_loes_score_g.unsqueeze(1)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17989 次 |
最近记录: |