ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

pytorch深度学习实践(刘二大人)课堂代码作业——线性模型

pytorch深度学习实践(刘二大人)课堂代码作业——线性模型 一、课堂代码np.arange( )用于创建一个等间隔的数组类似于 Python 中的range()函数其参数包括起始值、终止值和步长。np.arange()函数生成的数组不包括终止值本身即从起始值开始依次加上步长直到小于终止值为止。zip( )将多个可迭代对象的元素配对创建具有相应元素的元组。如list1 [1, 2, 3]list2 [a, b, c]那么zip(list1, list2)将list1和list2中的相应元素配对创建了(1, a)、(2, b)和(3, c)这样的元组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均方误差MSE w_list [] mse_list [] #计算各个权重对应的预测值以及损失并记录权重和对应损失 for w in np.arange(0.0, 4.1, 0.1): #输出只会到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()二、课后作业np.meshgrid( )目的是生成一个网格矩阵矩阵包含了在给定参数组合下的所有可能的点。以下面代码中的W, B np.meshgrid(W, B)为例W是一个包含水平轴通常是 x 轴或 w 轴上的坐标点的一维数组。B是一个包含垂直轴通常是 y 轴或 b 轴上的坐标点的一维数组。函数将这两个一维数组作为输入并生成两个二维矩阵这两个矩阵的行数和列数由W和B的长度决定第一个输出W是一个二维矩阵其每个元素 W[i, j]的值对应于W中第j个元素。第二个输出B是一个二维矩阵其每个元素 B[i, j]的值对应于B中第i个元素。import numpy as np import matplotlib.pyplot as plt from matplotlib import cm 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 np.arange(0.0, 4.1, 0.1) B np.arange(-2.0, 2.1, 0.1) W, B np.meshgrid(W, B) #输出两个二维数组对应的到每个w,b坐标 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 MSE l_sum / 3 fig plt.figure() #创建新的空白图形窗口 ax Axes3D(fig) #创建一个三维坐标轴对象 surf ax.plot_surface(W, B, MSE, cmapcm.coolwarm) #ax.plot_surface()用来绘制三维表面图cmapcm.coolwarm是冷暖色调的颜色映射 fig.colorbar(surf, shrink0.5, aspect5) #在图形fig里添加一个颜色条颜色条尺寸缩小为原尺寸的一半宽高比为5 ax.set_xlabel(w) ax.set_ylabel(b) ax.set_zlabel(loss) ax.set_title(Cost Value) plt.show()结果
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进