如何计算 PyTorch 中输入和目标张量之间的交叉熵损失?
为了计算输入值和目标值(预测值和实际值)之间的交叉熵损失,我们应用了函数CrossEntropyLoss()。它是从torch.nn模块访问的。它创建了一个衡量交叉熵损失的标准。它是torch.nn模块提供的一种损失函数。
损失函数用于通过最小化损失来优化深度神经网络。CrossEntropyLoss()在训练多类分类问题时非常有用。输入应包含每个类别的非标准化分数。
目标张量可能包含[0,C-1]范围内的类索引,其中C是类数或类概率。
语法
torch.nn.CrossEntropyLoss()
脚步
要计算交叉熵损失,可以按照下面给出的步骤
导入所需的库。在以下所有示例中,所需的 Python 库是torch。确保您已经安装了它。
import torch
创建输入和目标张量并打印它们。
input = torch.rand(3, 5)target = torch.empty(3, dtype = torch.long).random_(5)
创建一个标准来衡量交叉熵损失。
loss = nn.CrossEntropyLoss()
计算交叉熵损失并打印出来。
output = loss(input, target)print('Cross Entropy Loss: \n', output)
注意- 在以下示例中,我们使用随机数来生成输入和目标张量。因此,您可能会注意到这些张量的值不同
示例 1
在这个例子中,我们计算输入和目标张量之间的交叉熵损失。在这里,我们以具有类索引的目标张量为例。
# Example of target with class indices输出结果import torch
importtorch.nnas nn
input = torch.rand(3, 5)
target = torch.empty(3, dtype = torch.long).random_(5)
print(target)
loss = nn.CrossEntropyLoss()
output = loss(input, target)
print('input:\n ', input)
print('target:\n ', target)
print('Cross Entropy Loss: \n', output)
tensor([2, 0, 4])input:
tensor([[0.2228, 0.2523, 0.9712, 0.7887, 0.2820],
[0.7778, 0.4144, 0.8693, 0.1355, 0.3706],
[0.0823, 0.5392, 0.0542, 0.0153, 0.8475]])
target:
tensor([2, 0, 4])
Cross Entropy Loss:
tensor(1.2340)
示例 2
在这个例子中,我们计算输入和目标张量之间的交叉熵损失。在这里,我们以具有类概率的目标张量为例。
# Example of target with class probabilities输出结果import torch
importtorch.nnas nn
input = torch.rand(3, 5, requires_grad=True)
target = torch.empty(3, dtype=torch.long).random_(5)
print(target.size())
loss = nn.CrossEntropyLoss()
output = loss(input, target)
output.backward()
print("Input:\n",input)
print("Target:\n",target)
print("Cross Entropy Loss:\n",output)
print('Input grads: \n', input.grad)
torch.Size([3])Input:
tensor([[0.8671, 0.0189, 0.0042, 0.1619, 0.9805],
[0.1054, 0.1519, 0.6359, 0.6112, 0.9417],
[0.9968, 0.3285, 0.9185, 0.0315, 0.9592]],
requires_grad=True)
Target:
tensor([1, 0, 4])
Cross Entropy Loss:
tensor(1.8338, grad_fn=<NllLossBackward>)
Input grads:
tensor([[ 0.0962, -0.2921, 0.0406, 0.0475, 0.1078],
[-0.2901, 0.0453, 0.0735, 0.0717, 0.0997],
[ 0.0882, 0.0452, 0.0815, 0.0336, -0.2484]])
以上是 如何计算 PyTorch 中输入和目标张量之间的交叉熵损失? 的全部内容, 来源链接: utcz.com/z/297081.html