随机梯度下降
模型(y=wx)
数据集
x | y |
---|---|
1.0 | 2.0 |
2.0 | 4.0 |
3.0 | 6.0 |
4.0 | ? |
实现代码:
# Author:gt
# CreatTime:2021/10/29
# FileName:lesson2_1.py
#第一步,准备数据集
x_train=[1.0,2.0,3.0]
y_train=[2.0,4.0,6.0]
w=1.0
#模型
def forward(x):
return x*w
#损失函数
def loss(x,y):#单个样本数据对
y_pre=forward(x)
return (y_pre-y)**2
#单个样本上进行随机梯度下降
def gradient(x,y):#单个样本数据对
return 2*x*(w*x-y)
print('Predict(before training)',4,forward(4))
for epoch in range(100):
for x,y in zip(x_train,y_train): #在整个样本上进行了3次梯度下降
grad=gradient(x,y)
w=w-0.01*grad
print('\tgrad:',x,y,grad)
l=loss(x,y)
print("progress:",epoch,"w=",w,"loss=",l)
print('Predict(after training)',4,forward(4))
执行结果:
完结,撒花