torch.nn.function 与 torch.nn - Pytorch

问题描述 投票:0回答:1

在 Pytorch 中添加损失时,我在 torch.nn.Functional 和 torch.nn 中具有相同的功能。有什么区别?

 torch.nn.CrossEntropyLoss()
torch.nn.functional.cross_entropy 

python pytorch neural-network
1个回答
14
投票

PyTorch 讨论论坛中放入相同的文本@Alban D 已经给出了类似问题的答案。

F.cross entropy 与 torch.nn.Cross_Entropy_Loss

损失没有太大区别。

nn.functional.xxx
nn.Xxx
之间的主要区别在于,一个有状态,一个没有。
这意味着,例如,对于线性层,如果您使用函数版本,您将需要自己处理权重(包括将它们传递给优化器或将它们移动到 GPU),而
nn.Xxx
版本将完成所有这些工作为您提供
.parameters()
.to(device)

对于损失函数,由于(一般情况下)不需要参数,所以你不会发现太大的差异。例如,如果您在类之间使用交叉熵和一些权重,则使用

nn.CrossEntropyLoss()
模块,您将在创建模块时仅给出一次权重,然后使用它。如果您使用的是功能版本,则每次使用时都需要传递权重。

© www.soinside.com 2019 - 2024. All rights reserved.