第二讲pytorch深度学习实践的学习以及源码
B站刘二大人传送门:第二讲pytorch 线性模型
正常的训练工作步骤
步骤1,DataSet 数据集
步骤2,Model 选择模型
步骤3,Training 训练
步骤4,inferring 推理工作
第二讲源码
import numpy as np
import matplotlib.pyplot as plt
x_data=[1.0,2.0,3.0]
y_data=[2.0,4.0,6.0]
#模型
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=[]
#步长为0.1从0.0到4.0
for w in np.arange(0.0,4.1,0.1):
print('w=',w)
l_sum=0
#zip拿出来拼接
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()
代码画出的结果 权重和损失类太长,不展示,只展示图
第二讲课后作业
题目:线性模型 y=kx+b
作业代码:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
x_data=[1.0,2.0,3.0]
y_data=[2.0,4.0,6.0]
def forward(x):
return x*w+b
def loss(x,y):
y_pred=forward(x)
return (y_pred-y)*(y_pred-y)
w_list=[]
b_list=[]
mse_list=[]
w=np.arange(0,4.1,0.5)
b=np.arange(-2,2.1,0.5)
[w,b]=np.meshgrid(w,b)
l_sum=0
for x_val,y_val in zip(x_data,y_data):
y_pred_val=forward(x_val)
# print(y_pred_val)
loss_val=loss(x_val,y_val)
l_sum+=loss_val
fig = plt.figure()
ax=Axes3D(fig)
surf=ax.plot_surface(w,b,l_sum/3,cmap=cm.coolwarm)
ax.set_xlabel('w')
ax.set_ylabel('b')
ax.set_zlabel('loss')
plt.title("liner model y=w*x+b")
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
效果图
实在是实现不了那个颜色,感觉有点丑,还是回归原始
代码:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x_data=[1.0,2.0,3.0]
y_data=[2.0,4.0,6.0]
def forward(x):
return x*w+b
def loss(x,y):
y_pred=forward(x)
return (y_pred-y)*(y_pred-y)
w_list=[]
b_list=[]
mse_list=[]
w=np.arange(0,4.1,0.5)
b=np.arange(-2,2.1,0.5)
[w,b]=np.meshgrid(w,b)
l_sum=0
for x_val,y_val in zip(x_data,y_data):
y_pred_val=forward(x_val)
# print(y_pred_val)
loss_val=loss(x_val,y_val)
l_sum+=loss_val
fig = plt.figure()
ax=Axes3D(fig)
ax.plot_surface(w,b,l_sum/3)
ax.set_xlabel('w')
ax.set_ylabel('b')
ax.set_zlabel('loss')
plt.title("liner model y=w*x+b")
plt.show()
效果图:
第二讲完结 撒花!