pytorch 如何自定义损失函数

我是大佬们的搬运工

在做神经网络的时候,一般情况我们可以直接调用pytorch提供的函数损失函数,例如:

class torch.nn.MSELoss(size_average=True)

调用方式:

creterion=torch.nn.MSELoss()

loss=creterion(x,y)

pytorch 如何自定义损失函数_第1张图片

 

pytorch 如何自定义损失函数_第2张图片

想要自定义损失函数,就要按照损失函数的格式来编写

观察自带的损失函数,我们要写的损失函数应该也是这种样子的

又参考了知乎上大佬的分享

虽说大佬给了三种方法,但是我觉得像我这种平头小老百姓其实用得到的只有第一种:

pytorch 如何自定义损失函数_第3张图片

说白了,和调用自带的损失函数的方法一毛一样

但是此处有疑问,根据源码的观察,自定义的损失函数不是应该继承的是_loss模块吗?

未完待续

后续来啦,虽然原因没搞明白,但是在github上找到了相应的代码,发现有大佬就是这么自定义损失函数的

之前我还有一个疑问:对于使用批处理的神经网络,损失函数对于参数的操作是不是应该针对整批的样本来设定的呢?

研究了一下大神的代码,竟然不需要!!!!直接还是对单个样本进行操作就可以了,输出的是整批样本损失函数的平均值

机理是啥倒没深入研究。。。。

你可能感兴趣的:(pytorch)