版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深度学习第4章线性回归和逻辑回归4.1回归4.2线性回归模型4.3一元线性回归的实现4.4梯度及梯度下降4.5多元线性回归实现24.6逻辑回归课上练习第4章线性回归和逻辑回归4.1回归3图4.1回归示例第4章线性回归和逻辑回归4.1回归4图4.2回归分类第4章线性回归和逻辑回归4.2线性回归模型线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,可以解决如预测等问题。
5图4.3一元线性回归图4.4多元线性回归第4章线性回归和逻辑回归4.2线性回归模型
6线性模型的基本形式是:一般向量形式是:是一组独立的预测变量。为模型从训练数据中学习到的参数,或赋予每个变量的权值。其中的b也是一个学习到的参数,这个线性函数的常量也成为模型的偏置。4.2线性回归模型
7图1.9人体神经元细胞输入(树突)-计算(细胞核)-输出(轴突)第4章线性回归和逻辑回归怎么把回归模型和人工神经网络联系在一起?4.2线性回归模型
8
画出一个神经元模型:包含有2个输入,2个计算功能(求和与非线性函数)以及1个输出。图1.13人工神经元模型第4章线性回归和逻辑回归连接:连接神经元4.2线性回归模型
9
画出一个神经元模型:包含有2个输入,2个计算功能(求和与非线性函数)以及1个输出。一个神经网络的训练算法就是让权重的值调整到最佳,以使得整个网络的预测效果最好。第4章线性回归和逻辑回归4.2线性回归模型
10神经元模型用变量符号表示输出的计算公式为Z=sign(a1*w1+a2*w2)神经元网络扩展节点下一页第4章线性回归和逻辑回归
画出一个神经元模型:包含有2个输入,2个计算功能(求和与非线性函数)以及1个输出。4.2线性回归模型
11画出表达式对应的单层神经网络(感知机)模型。第4章线性回归和逻辑回归4.2线性回归模型
12画出表达式对应的单层神经网络(感知机)模型。线性模型都可以表达。下一页第4章线性回归和逻辑回归第4章线性回归和逻辑回归4.3一元线性回归的实现
13图4.5寻找拟合直线最小二乘法形式如下:如何在PyTorch中表示呢?下一页第4章线性回归和逻辑回归4.3一元线性回归的实现
这里又要引入一个新的概念,叫做损失函数。14
损失函数或代价函数是用来拟合的直线和真实值之间的距离。损失函数越小说明对训练数据拟合的越好。所有样本点与拟合直线的距离:该值既是损失函数的值。第4章线性回归和逻辑回归4.3一元线性回归的实现
15第4章线性回归和逻辑回归4.3一元线性回归的实现
16红色点集成算法中的每个评估器产生的预测值;红色虚线代表这些预测值的平均值;蓝色实线代表数据的真实值。偏差:模型预测值与真实值之间的差异,即:红色点到蓝色实线的距离。在集成算法中,每个基评估器都会产生自己的偏差,集成评估器的偏差是基评估器偏差的均值。模型越精准,偏差越低。方差:模型预测值与预测值的平均值之间的差异。即:红色点到红色虚线之间的距离,以此衡量模型的稳定性。模型越稳定,方差越低。通常来讲,偏差和方差是一个“此消彼长”的关系。
第4章线性回归和逻辑回归4.3一元线性回归的实现
17PyTorch中常用的损失函数很多,比如均方误差损失、交叉熵损失、L1范数损失、KL散度损失、二进制交叉熵损失等等。第4章线性回归和逻辑回归4.3一元线性回归的实现
其思路是先给定一个训练集,根据这个训练集学习出一个线性函数,然后预测这个函数训练的好与不好,挑出最好的函数。再用这个最好的函数完成预测。18第4章线性回归和逻辑回归4.3一元线性回归的实现
【例4.1】一元线性回归的代码实现(七个步骤)。第一步:导入包、定义超参数。导入Torch模块库和Matplotlib画图模块库。importtorchimporttorch.nnasnnimportnumpyasnpimportmatplotlib.pyplotaspltfromtorch.autogradimportVariable如何在pytorch中导入库(包)?19第4章线性回归和逻辑回归4.3一元线性回归的实现
如何在pytorch中导入库(包)?1.联网直接安装20第4章线性回归和逻辑回归4.3一元线性回归的实现
如何在pytorch中导入库(包)?1.联网直接安装21python各种镜像安装包下载链接阿里云/pypi/simple/中国科技大学/simple/豆瓣(douban)/simple/清华大学/simple/中国科学技术大学/simple/torch对应版本下载专用:/whl/torch_stable.html深度学习实践教程第4章线性回归和逻辑回归4.3一元线性回归的实现
如何在pytorch中导入库(包)?2.pip安装PyTorch依赖于一些其他的库和工具,例如NumPy、scipy、matplotlib等。可以使用pip命令安装这些库,例如:在cmd输入:pip3installnumpyscipymatplotlib解决下载慢的问题:pipinstallmatplotlib-i/simple--trusted-host23第4章线性回归和逻辑回归4.3一元线性回归的实现
如何在pytorch中导入库(包)?3.安装Anaconda24第4章线性回归和逻辑回归4.3一元线性回归的实现
如何在pytorch中导入库(包)?4.离线安装:
先用迅雷下载,然后在pycharmterminal安装
25第4章线性回归和逻辑回归4.3一元线性回归的实现
第一步:导入包、定义超参数。#定义超参数input_size=1output_size=1num_epochs=1000learning_rate=0.00126第4章线性回归和逻辑回归4.3一元线性回归的实现
第二步:“制造”出一些数据,即生成矩阵数据。x_train=np.array([[2.3],[4.4],[3.7],[6.1],[7.3],[2.1],[5.6],[7.7],[7.7],[4.1],[6.7],[6.1],[7.5],[2.1],[7.2],[5.6],[5.7],[7.7],[3.1]],dtype=np.float32)#xtrain生成矩阵数据y_train=np.array([[2.7],[4.76],[4.1],[7.1],[7.6],[3.5],[5.4],[7.6],[7.9],[5.3],[7.3],[7.5],[7.5],[3.2],[7.7],[6.4],[6.6],[7.9],[4.9]],dtype=np.float32)plt.figure()#画散点图27第4章线性回归和逻辑回归4.3一元线性回归的实现
plt.scatter(x_axis,y_axis)plt.xlabel('x_axis')#x轴名称plt.ylabel('y_axis')#y轴名称plt.show()#显示图片28第4章线性回归和逻辑回归4.3一元线性回归的实现
第三步:建立线性回归模型。这里nn.Linear表示的是y=+wxb,input_size表示的是自变量x的尺寸,是一维;output_size表示的是因变量y的尺寸,也是一维。classLinearRegression(nn.Module):def__init__(self,input_size,output_size):#调用父类的构造函数super(LinearRegression,self).__init__()#定义线性层,input_size为输入特征的维度,output_size为输出特征的维度self.linear=nn.Linear(input_size,output_size)defforward(self,x):#前向传播函数,接受输入x,通过线性层计算输出out=self.linear(x)returnout29第4章线性回归和逻辑回归4.3一元线性回归的实现
第四步:定义损失函数。这里使用均方误差函数MSELoss()定义损失函数criterion,即对每个训练样本的预测值与真实值之差的平方求和。需要将model的参数model.parameters()传进去。#创建线性回归模型的实例model=LinearRegression(input_size,output_size)#定义损失函数criterion=nn.MSELoss()30第4章线性回归和逻辑回归4.3一元线性回归的实现
第五步:定义优化函数。优化函数代表通过什么方式去优化需要学习的值,即本例中的w和b。优化的方法有很多,常用的有随机梯度下降法(SGD算法)、标准动量优化算法(Momentum)、RMSProp算法、Adam算法。这里选择SGD算法。#定义优化器optimizer=torch.optim.SGD(model.parameters(),lr=learning_rate)31第4章线性回归和逻辑回归4.3一元线性回归的实现
第六步:训练模型。首先定义迭代的次数,这里为1000次,先进行前向传播计算损失函数,然后进行反向传播计算梯度。需要注意的是,每次计算梯度前都要将梯度归零,不然梯度会累加到一起造成结果不收敛。为了便于查看结果,每隔一段时间输出一次当前的迭代次数和损失函数。#训练模型forepochinrange(num_epochs):#将numpy数组转换为torchVariableinputs=Variable(torch.from_numpy(x_train))targets=Variable(torch.from_numpy(y_train))32第4章线性回归和逻辑回归4.3一元线性回归的实现
#清零梯度,防止梯度累积optimizer.zero_grad()#前向传播,得到模型的预测输出outputs=model(inputs)#计算损失,通过模型的输出和真实标签loss=criterion(outputs,targets)#反向传播,计算梯度loss.backward()#更新模型参数,执行优化步骤optimizer.step()#打印损失率if(epoch+1)%50==0:print('Epoch[%d/%d],Loss:%.4f'%(epoch+1,num_epochs,loss.item()))33第4章线性回归和逻辑回归4.3一元线性回归的实现
第七步:测试模型。通过model.eval()函数将模型变为测试模式(这是因为有一些操作,如Dropout和BatchNormalization在训练和测试时是不一样的),然后将数据放入模型中进行测试。最后,通过画图工具Matplotlib查看拟合结果。#绘制图形model.eval()predicted=model(Variable(torch.from_numpy(x_train))).data.numpy()plt.plot(x_train,y_train,'ro')plt.plot(x_train,predicted,label='predict')plt.legend()plt.show()34第4章线性回归和逻辑回归4.3一元线性回归的实现代码运行
35图4.8100次训练后的结果图4.1410000次训练后的结果第4章线性回归和逻辑回归4.3一元线性回归的实现步骤总结:第一步:导入包、定义超参数。第二步:“制造”数据。第三步:建立线性回归模型。第四步:定义损失函数。第五步:定义优化函数。第六步:训练模型。第七步:测试模型。36第4章线性回归和逻辑回归4.4梯度及梯度下降4.4.1梯度梯度是微积分中的一个重要概念。1.在单变量函数中,梯度就是函数的微分,代表着函数在某个给定点的切线的斜率。2.在多变量函数中,梯度是一个向量,向量有方向,梯度的方向或反方向就指明了函数在给定点的上升或下降最快的方向。37第4章线性回归和逻辑回归4.4梯度及梯度下降4.4.1梯度38方向距离终止条件第4章线性回归和逻辑回归4.4梯度及梯度下降4.4.2梯度下降法
梯度下降是迭代法的一种。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。
在深度学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。39第4章线性回归和逻辑回归4.4梯度及梯度下降4.4.2梯度下降法在梯度下降法调优中,影响较大的三个因素为步长、初始值和归一化。1.步长:又称学习率,决定了梯度下降迭代过程中每一步沿梯度负方向前进的长度。也就是上述所说的沿最陡峭的位置走的那一步的长度。2.初始值:随机选取的值,当损失函数是非凸函数时,找到的可能是局部最优解,此时需要多测试几次,从局部最优解中找出最优解。当损失函数是凸函数时,得到的解就是最优解。3.归一化:若不进行归一化,会导致收敛速度很慢,从而形成“之”字形的路线。40第4章线性回归和逻辑回归4.5多元线性回归实现代码运行所谓多元线性回归,其本质也是线性回归。其采取的方法是,提高每个属性的次数来增加维度数。41第4章线性回归和逻辑回归4.6逻辑回归4.6.1什么是逻辑回归
逻辑回归是一种广义的回归模型:y=wx+b。其中x可以是一个多维的特征,逻辑回归会对y作用一个逻辑函数,将其变为一种概率的结果。
逻辑函数是逻辑回归的核心,逻辑函数也被称为Sigmoid函数。42本质是二分类问题第1章深度学习基础1.4神经网络中常用的激励函数431.Sigmoid函数Sigmoid函数表达式:1.21Sigmoid函数示意图旧知识点回顾第4章线性回归和逻辑回归4.6逻辑回归4.6.2逻辑回归中的损失函数44
第4章线性回归和逻辑回归4.6逻辑回归4.6.3逻辑回归的代码实现第一步:导入包。importtorchastimportmatplotlib.pyplotaspltfromtorchimportnnfromtorch.autogradimportVariableimportnumpyasnp45第4章线性回归和逻辑回归4.6逻辑回归4.6.3逻辑回归的代码实现第二步:构造数据集。n_data=t.ones(100,2)#normal()返回一个张量,张量里面的随机数是从相互独立的正态分布中随机生成的。x0=t.normal(2*n_data,1)y0=t.zeros(100)x1=t.normal(-2*n_data,1)y1=t.ones(100)#把数据给合并以下,并且数据的形式必须是下面形式x=t.cat((x0,x1),0).type(t.FloatTensor)y=t.cat((y0,y1),0).type(t.FloatTensor)#观察制造的数据plt.scatter(x.data.numpy()[:,0],x.data.numpy()[:,1],c=y.data.numpy(),s=100,lw=0)plt.show()46第4章线性回归和逻辑回归4.6逻辑回归4.6.3逻辑回归的代码实现
第三步:建立逻辑回归模型。classLogisticRegression(nn.Module):def__init__(self):super(LogisticRegression,self).__init__()self.lr=nn.Linear(2,1)self.sm=nn.Sigmoid()defforward(self,x):x=self.lr(x)x=self.sm(x)returnx#实例化logistic_model=LogisticRegression()ift.cuda.is_available():logistic_model.cuda()#看GPU是否可使用,如果可以使用GPU否则不使用47第4章线性回归和逻辑回归4.6逻辑回归4.6.3逻辑回归的代码实现第四步:定义损失函数和优化函数。criterion=nn.BCELoss()optimizer=t.optim.SGD(logistic_model.parameters(),lr=1e-3,momentum=0.9)48第4章线性回归和逻辑回归4.6逻辑回归
49pytorch中常用的损失函数官方链接:/docs/stable/_modules/torch/nn/modules/loss.html第4章线性回归和逻辑回归4.6逻辑回归
随机梯度下降法(SGD)、标准动量优化算法(Momentum)、RMSProp算法、Adam算法50pytorch中常用的四种优化器第4章线性回归和逻辑回归4.6逻辑回归4.6.3逻辑回归的代码实现第五步:训练模型。forepochinrange(1000):ift.cuda.is_available():x_data=Variable(x).cuda()y_data=Variable(y).cuda()else:x_data=Variable(x)y_data=Variable(y)out=logistic_model(x_data)loss=criterion(out,y_data)print_loss=loss.data.item()#以0.5为阈值进行分类mask=out.ge(0.5).float()#计算正确预测样本的个数correct=(mask==y_data).sum()
51第4章线性回归和逻辑回归4.6逻辑回归4.6.3逻辑回归的代码实现
第五步:训练模型。#计算精度acc=correct.item()/x_data.size(0)optimizer.zero_grad()loss.backward()optimizer.step()#每个200个epoch打印一次当前的误差和精度if(epoch+1)%200==0:print('*'*10)#迭代次数print('epoch{}'.format(epoch+1))#误差print('lossis{:.4f}'.format((print_loss)))#精度print('accis{:.4f}'.format(acc))52第4章线性回归和逻辑回归4.6逻辑回归4.6.3逻辑回归的代码实现第六步:测试模型if__name__=="__main__":logistic_model.eval()w0,w1=logistic_model.lr.weight[0]w0=float(w0.item())w1=float(w1.item())b=float(logistic_model.lr.bias.item())plot_x=n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年内蒙古化工职业学院单招职业适应性考试题库及1套参考答案详解
- 2026年兰州资源环境职业技术大学单招职业适应性考试题库附答案详解(研优卷)
- 2026年北京北大方正软件职业技术学院单招职业适应性测试题库附答案详解(典型题)
- 2026年内蒙古美术职业学院单招职业倾向性考试题库有答案详解
- 2026年兰州职业技术学院单招职业倾向性考试题库及答案详解(典优)
- 2026年南昌理工学院单招职业技能考试题库附参考答案详解(b卷)
- 2026年内江职业技术学院单招职业倾向性考试题库及答案详解(各地真题)
- 2026年南昌影视传播职业学院单招职业倾向性考试题库附答案详解(能力提升)
- 2026年兰州石化职业技术学院单招职业技能考试题库附答案详解(巩固)
- 2026年包头钢铁职业技术学院单招职业技能测试题库完整答案详解
- 2026四川成都市简阳市招聘四级城乡社区工作者65人考试备考题库及答案解析
- (2026春新版本) 苏教版科学三年级下册全册教学设计
- 2026年1月浙江省高考(首考)化学试题(含标准答案及解析)
- 2025年河北省公务员考试行测试卷真题附答案详解
- 中国移动社会招聘在线笔试题
- 全屋定制讲解方案
- 上海市奉贤区2026届初三一模英语试题(含答案)
- 《电力系统继电保护及应用》课件-110kv线路保护配置-双语
- 餐饮厨房消防安全培训
- 天津市和平区天津一中2026届高二上数学期末学业水平测试试题含解析
- GB/T 19275-2025材料在特定微生物作用下潜在生物分解和崩解能力的评价
评论
0/150
提交评论