深度学习之:对均方误差 mse 的理解

文章目录

  • 代码
    • 反例

代码

'''
a1, a2 是两个矩阵或者多维张量
'''
import numpy as np
def calculate_mse(a1,a2):
    return np.mean(np.square(a1-a2),axis=-1)
  • 假设现在有两个张量,维度都是 (32,32,64),那么他们之间做均方误差就是每个通道分别做对应位置相减的平方,得到的张量还是 (32,32,64),然后再根据 axis=-1 的方向 (因为存在通道维,所以是沿着通道的方向) 进行平均计算,最终得到的结果是 (32,32) 的一个矩阵。
  • 一定要注意,假设你现在有两个是 (8,8) 的矩阵,你要是还想按照如上的定义进行正确的 mse 计算,那么请你先把 (8,8) 矩阵变成 (8,8,1),否则当你还沿着 axis=-1 也就是最后一个维度方向进行平均计算的时候,这个时候的 axis 可不是通道维度了,而是沿着 axis = 1 的方向进行了
    深度学习之:对均方误差 mse 的理解_第1张图片

反例

  • 举个直观点的反例
    深度学习之:对均方误差 mse 的理解_第2张图片
    • 在这个例子中,如果两个 (2,2) 的矩阵做 mse 还是按照 axis=-1 进行平均,那么按照 axis=1 的方向平均,16 和 16 平均还是 16;36 和 49 平均就成了 42.5,这不是我们要的结果
    • 如果我们能人为地增加通道维度,再按照通道的维度进行平均,就会得到正确的结果(其实只有一个维度是不需要平均的,这里只是想让大家弄明白~)

你可能感兴趣的:(日常学习,深度学习,矩阵,线性代数)