Tensorflow深度学习 2.3 线性模型实战
这里采用w=1.477,b=0.089的线性模型,即y=1.477x + 0.089,来进行数据采样。给模型添加随机噪声eps,服从均值为0,标准差为0.1的高斯分布(正太分布):
y=1.477x + 0.089 + eps.
数据采样代码:
import numpy as np
# 创建列表,用于保存采集得到的样本
data = []
for i in range(100):
x = np.random.uniform(-10., 10.) # 随机采样输入x
#采样高四噪声
eps = np.random.normal(0.,0.01)
y = 1.477 * x + 0.089 + eps
data.append([x, y])
data = np.array(data) #转为2D Numpy数组
data
计算误差代码:
计算在每个点(,
)处的预测值与真实值之间的差的平方在累加,从而获得训练集上的均方误差损失值。
def mse(b, w, points):
# 根据当前的w, b参数计算均方差损失
totalLoss = 0
for i in range(0, len(points)): # 循环迭代所有点
x = points[i, 0] #points中 每个元素都是一个数组(x,y), i表示points中的第几个元素,0代表该元素的第一个值,即x值
y = points[i, 1] # 同理,1代表第i个元素的第二个值,即y
# 计算差的平方和
totalLoss += (y - (w * x + b)) ** 2
# 将累加的误差求平均,得到均方差
return totalLoss/ len(points)
计算梯度代码:
如图 所示, 𝑓(𝑥, 𝑦) = −(cos2 𝑥 + cos2 𝑦)2,图中𝑥𝑦平面的红色箭头的长度表示梯度向量的模,箭头的方向表示梯度向量的方向。可以看到,箭头的方向总是指向当前位置函数值增速最大的方向,函数曲面越陡峭,箭头的长度也就越长,梯度的模也越大。
<