神经网络和深度学习-均方误差Mean Square Error

均方误差Mean Square Error

测量预测值Ŷ与某些真实值匹配程度。MSE 通常用作回归问题的损失函数。

由单个样本训练损失来推导出整个训练集的MSE

神经网络和深度学习-均方误差Mean Square Error_第1张图片

M S E = 1 n ∑ i = 1 n ( Y i − Y ^ i ) 2 \mathrm{MSE}=\frac{1}{n} \sum_{i=1}^{n}\left(Y_{i}-\hat{Y}_{i}\right)^{2} MSE=n1i=1n(YiY^i)2

下面来看MSE的python实现

定义输入输出

神经网络和深度学习-均方误差Mean Square Error_第2张图片

定义模型,这里就使用线性模型

神经网络和深度学习-均方误差Mean Square Error_第3张图片

定义损失函数

神经网络和深度学习-均方误差Mean Square Error_第4张图片

权重矩阵和对应的MSE损失值

神经网络和深度学习-均方误差Mean Square Error_第5张图片

生成0.0-4.0的序列

神经网络和深度学习-均方误差Mean Square Error_第6张图片

计算训练集中的每一个样本的损失函数

神经网络和深度学习-均方误差Mean Square Error_第7张图片

保存w和mse

神经网络和深度学习-均方误差Mean Square Error_第8张图片

画图

神经网络和深度学习-均方误差Mean Square Error_第9张图片

下面是部分结果

w= 0.0

1.0 2.0 0.0 4.0

2.0 4 0.0 16.0

3.0 0 0.0 0.0

MSE= 6.666666666666667

w= 0.1

1.0 2.0 0.1 3.61

2.0 4 0.2 14.44

3.0 0 0.30000000000000004 0.09000000000000002

MSE= 6.046666666666667

w= 0.2

1.0 2.0 0.2 3.24

2.0 4 0.4 12.96

3.0 0 0.6000000000000001 0.3600000000000001

MSE= 5.5200000000000005

w= 0.30000000000000004

1.0 2.0 0.30000000000000004 2.8899999999999997

2.0 4 0.6000000000000001 11.559999999999999

3.0 0 0.9000000000000001 0.8100000000000003

MSE= 5.086666666666667

w= 0.4

1.0 2.0 0.4 2.5600000000000005

2.0 4 0.8 10.240000000000002

3.0 0 1.2000000000000002 1.4400000000000004

MSE= 4.746666666666667

w= 0.5

1.0 2.0 0.5 2.25

2.0 4 1.0 9.0

3.0 0 1.5 2.25

MSE= 4.5

神经网络和深度学习-均方误差Mean Square Error_第10张图片
下面是具体代码

import numpy as np
import matplotlib.pyplot as plt

x_data = [1.0, 2.0, 3.0]  # 输入x
y_data = [2.0, 4, 0, 6, 0]  # 输出y


# 定义模型
def forward(x):
    return x * w


# 定义损失函数
def loss(x, y):
    y_pred = forward(x)
    return (y_pred - y) * (y_pred - y)


w_list = []  # 权重矩阵
mse_list = []  # 对应的MSE损失值

for w in np.arange(0.0, 4.1, 0.1):  # 生成0.0-4.0的序列
    print('w=', w)
    l_sum = 0
    for x_val, y_val in zip(x_data, y_data):  # 计算训练集中的每一个样本的损失函数
        y_pred_val = forward(x_val)
        loss_val = loss(x_val, y_val)
        l_sum += loss_val
        print('\t', x_val, y_val, y_pred_val, loss_val)
    print('MSE=', l_sum / 3)
    w_list.append(w)
    mse_list.append(l_sum / 3)

plt.plot(w_list,mse_list)
plt.ylabel('Loss')
plt.xlabel('w')
plt.show()

你可能感兴趣的:(神经网络,Python深度学习,深度学习,神经网络)