MSELoss的定义:
其中,N是batch_size,如果reduce设置为true,则:
求和运算符计算后,仍会对除以n;如果size_average设置为False后,就会避免除以N;
参数:
size_average (bool, optional):已经弃用,默认loss在对输入batch计算损失后,会求平均值。对于sample中有多个元素时,如果size_average设置为false,loss则是对每个batch进行求和,当reduce设置为False时,该参数就会被设置为False,默认为True。
reduce (bool, optional):默认为True,当前已弃用。默认情形下,loss会对batch数据进行求和然后计算均值。当reduce设置为False时,相当于size_average设置为False,只对batch的loss求和,不求平均。
reduction (string, optional):设置对输出的计算方法,有三个选项:none | elementwise_mean | sum。none:对每个元素求loss后不进行任何额外计算;elementwise_mean:将对loss结果求平均;sum:只对所有loss进行求和。注意:参数size_average和reduce已经弃用,当时当设置这两个参数中的任意一个时,将会对reduction进行覆盖。默认选项:elementwise_mean。
用法示例:
loss = nn.MSELoss()
input = torch.randn(3, 5, requires_grad=True)
target = torch.randn(3, 5)
output = loss(input, target)
output.backward()