torch.nn.function 与 torch.nn - Pytorch

Ana*_*and 11 neural-network pytorch

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

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

Dis*_*ani 14

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

\n

F.cross entropy 与 torch.nn.Cross_Entropy_Loss

\n
\n

\xe2\x80\x99 对于损失来说没有太大区别。\n 和 之间的主要区别nn.functional.xxxnn.Xxx一个有状态而一个没有。
\n这意味着,例如,对于线性层,如果您使用函数版本,您将需要自己处理权重(包括将它们传递给优化器或将它们移动到 GPU),而该nn.Xxx版本将为您完成所有这些工作与.parameters().to(device)

\n

对于损失函数,由于不需要参数(一般情况下),您不会发现\xe2\x80\x99有多大区别。举例来说,如果您在类之间使用交叉熵和一些权重,则使用该nn.CrossEntropyLoss()模块时,您将在创建模块时仅给出一次权重,然后使用它。如果您使用的是功能版本,则每次使用时都需要传递权重。

\n
\n