关于一些criterion
1.PyTorch 中的亦混 loss
Pytorch 中提供了很多类型的 loss (Criterion),如 l1, l2, crossentropy 等。同时,同一种 criterion 可 能被包含在不同的功能模块下,如 torch.nn,torch.nn.functional 等。
1.1 F.xx 和 nn.xx (xx 表示某 criterion 如 cross_entropy 等)在使用时的区别
即nn.xx是包装好的类,F.xx是可以直接调用的函数,具体参照pytorch-nn.xx与nn.functional.xx的区别——googler_offer的文章。
1.2 具体区别
1.2.1 传入参数
nn.Xxx
需要先实例化并传入参数,然后以函数调用的方式调用实例化的对象并传入输入数据。
nn.functional.xxx
同时传入输入数据和weight, bias等其他参数 。
1.2.2 数学形式
完全相同
1.2.3 作用目的
nn.Xxx
继承于nn.Module
, 能够很好的与nn.Sequential
结合使用, 而nn.functional.xxx
无法与nn.Sequential
结合使用。
nn.Xxx
不需要你自己定义和管理weight;而nn.functional.xxx
需要你自己定义weight,每次调用的时候都需要手动传入weight, 不利于代码复用。
2.常用的criterion
来源:pytorch常用损失函数criterion———DLung
3.softmax的求导以及代码
代码:https://github.com/passional/cv_tool/blob/main/softmax.py