在Pytorch中添加丢失时,我在torch.nn.Functional和torch.nn中都有相同的函数。有什么不同吗?
torch.nn.CrossEntropyLoss()和torch.nn.functional.cross_entropy
发布于 2020-09-10 10:19:36
在PyTorch论坛 @Alban D上发表同样的文章,也给出了类似问题的答案。
损失没有多大区别。
nn.functional.xxx和nn.Xxx之间的主要区别是,一个有状态,而另一个没有。 这意味着,例如,对于线性层,如果使用函数版本,则需要自己处理权重(包括将它们传递给优化器或将它们移动到gpu),而nn.Xxx版本将使用.parameters()或.to(device)为您处理所有这些。 对于丢失函数,由于不需要任何参数(一般情况下),您将不会发现有什么不同。除了例如,如果您使用交叉熵和类之间的一些权重,使用nn.CrossEntropyLoss()模块,在创建模块时只会给出一次权重,然后使用它。如果您使用的是功能版本,则每次使用它时都需要传递权重。
https://stackoverflow.com/questions/63826328
复制相似问题