工具PyTorch
Learning PyTorch with Examples — PyTorch Tutorials 2.3.0+cu121 documentation
基础知识
《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibili
如何建立学习模型?(训练得到模型)
1.基于规则的
人工设计,改进的图搜索树搜索等;表示学习,通过数据集的训练得到
2.经典机器学习
分类(有标签),回归,聚类(无标签),降维
SVM支持向量机方法缺陷:人工设计的特征有局限,无法应对大数据、非结构化的数据
3.深度学习(端到端的训练)
Machine Learning
数据集合分training set (分训练和开发)/test set-避免过拟合-泛化能力
y=wx+b拟合曲线:1.给定random,2.求预测结果,3.得与实际值之间评估loss(需要最小)
cost function: MSE平均平方误差mean square error
实践操作
使用jupyter分块调试,控制台输入
source activate pytorch%进入环境pytorch(或者自己重新创建环境)
jupyter notebook
或者Pycharm,在test新建python文件,运行,报错少文件,点terminal 安装,输入pip install 少的文件。
实践一
作业
线性模型下的MSE y=wx+b,通过枚举w,b,得到损失函数,求累计求和除以总数的MSE误差最小
import numpy as py #导入数组的包并简写为np
import matplotlib.pyplot as plt #导入数学绘图的包并简写为plt
from mpl_toolkits.mplot3d import Axes3D #从工具箱导入3D绘图工具包Axes3D
#数据集
x_data=[1.0,2.0,3.0]
y_data=[5.0,8.0,11.0]
#定义前向传播函数
def forward(x):
return x*w+b #注意缩进,这里w,b是在函数调用的时候才有用
#定义损失函数
def loss(x,y,w,b):
y_pred=forward(x)
return (y_pred-y)**2 #平方可用**2表示
#参数生成
W=np.arange(0.0,4.1,0.1) #(起始,终止,步长)
B=np.arange(0.0,4.1,0.1)
[w,b]=np.meshgrid(W,B) #绘3D图需要
#计算损失函数的总和
l_sum=np.zeros_like(w)
for i in range(len(W))
for j in range(len(B))
for x_val,y_val in zip(x_data,y_data)
loss_val=loss(x_val,y_val,w[i,j],b[i,j])
l_sum[i,j]+=loss_val
#创建3D图表并绘制图像
fig=plt.figre()
ax=fig.add_subplot(lll,projection='3d')
ax.plot_surface(w,b,l_sum/3,cmap='viridis')
ax.set_xlabel('w')#标注轴的名称
ax.set_ylabel('b')
ax.set_zlabel('Loss')
plt.title('3D Graph of Loss Surface with Weignt w and b')#标注标题
plt.show()
实践二
梯度下降法:避免枚举的复杂度,通过损失函数相邻的下降斜率(倒数,学习率)来决定下一步的走向,能够快速找到局部最优点(类似贪心算法,注意局部最优不等于全局最优,最大问题是鞍点)
import matplotlib.pyplot as plt
#训练集
x_d