跟李沐老师动手学习AI学习笔记:第三章——线性神经网络

该文介绍了线性回归模型,包括简单的模型定义、损失函数和基础优化算法如梯度下降。接着讲解了线性回归的从零实现和简洁实现。随后转向多类分类问题,阐述了softmax回归的原理、损失函数及图像分类数据集的应用。文章还提供了softmax回归的代码实现,并讨论了简洁实现中的改进。最后,作者强调了对PyTorch语法和Jupyternotebook的深入理解和实践的重要性。
摘要由CSDN通过智能技术生成

目录

3.1 线性回归

1、一个简单的模型

2、损失函数(目标函数)

3.2 基础优化算法

1、梯度下降算法

 2、选择学习率,不能太小也不能太大

3、小批量随机梯度下降

 4、总结

3.3 线性回归实现

1、线性回归从零实现

2、线性回归简洁实现

3.4 softmax回归+损失函数+图片分类数据集

1、从回归到多类分类

2、图像分类数据集代码

3.5 softmax回归的从零开始实现代码

3.6 softmax回归的简洁实现

1、重新审视softmax的实现

 总结:


3.1 线性回归

1、一个简单的模型

· 假设1:影响房价的关键因素是卧室个数,卫生间个数,和居住面积,记为x1,x2,x3

· 假设2:成交价是关键因素的加权和:y=w1x1+w2x2+w3x3+b

(权重和偏差的实际值在后面决定)

· 线性模型可以看成单层神经网络,

 

2、损失函数(目标函数)

 

(arg是取参数的意思)

 

3.2 基础优化算法

1、梯度下降算法

 2、选择学习率,不能太小也不能太大

3、小批量随机梯度下降

 

 

 4、总结

3.3 线性回归实现

1、线性回归从零实现

 

 

2、线性回归简洁实现

 

 

3.4 softmax回归+损失函数+图片分类数据集

1、从回归到多类分类

均方损失

 

(其实原理也是下图:)

 

2、图像分类数据集代码

 

3.5 softmax回归的从零开始实现代码

在读到分类精度时,对于这里代码的疑问,可以参考:(4条消息) 【李沐】 softmax回归的代码_softmax函数代码_é«的博客-CSDN博客

 //得到的是张量第1维中最大数的index
 y_hat.argmax(axis=1)

 //这里先是将y_hat的数据类型转成与y一致
 //(y_hat和y的数据类型可能不一样,把y_hat转成y的数据类型,变成一个bool的tensor)
 //然后利用==号进行比较,cmp是一个bool类型的向量
 cmp = y_hat.type(y.dtype) == y

 //这里是将cmp中true的个数相加
 float(cmp.type(y.dtype).sum())

 //accuracy函数得到的是预测正确的个数,然后除以len(y)得到预测率
 accuracy(y_hat,y)/len(y) 

对于Accumulator类理解可以参考:

(4条消息) 李沐的深度学习Accumulator怎么理解_accumulator函数_0 -> 1的博客-CSDN博客

//倘若这里的n为2,则此时self.data以[0.0, 0.0]这样的列表展现出来
self.data = [0.0] * n

//这里的self是刚刚初始化self.data,*args接收非关键字的传参可以是元组,或者是字符串
add(self, *args)

//对于zip,其实是将相同位置的元素进行打包。
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]

涉及损失函数可参考:

损失函数(Loss Function) - 知乎 (zhihu.com)

损失函数定义:用来度量模型的预测值和真实值的差异程度的运算函数。(损失函数越小,模型的鲁棒性。)

以下是softmax回归从零开始实现代码:

 

 ​​​​​​

 

 

3.6 softmax回归的简洁实现

1、重新审视softmax的实现

!!所做改进:(改进softmax函数、loss函数)

 

在简洁实现中调用了之前jupyter文件中的自己写的module块,需要创建一个py文件进行调用,详细请看:

(3条消息) 调用jupyter notebook文件内的函数一种简单方法_jupyter之间函数调用_dodott的博客-CSDN博客

 

 总结:

        已学习两章pytorch,对于其中的很多函数使用起来仍然有些不了解,尤其是pytorch语法,以及jupyter文件的认识仍不足,需要进一步回顾也好,学习新内容也好,去熟悉pytorch代码编写的特点,会用,更会灵活使用,要多思考。既没有那么难,因为目前遇到的问题都可求得解决方法,但是,也没有那么简单,需要自己静下心,好好捋一捋所学到的、学了忘记的知识。更重要还是提高效率,保持好心态,相信一定可以学有所思,思有所获!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值