目录
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)]
涉及损失函数可参考:
损失函数定义:用来度量模型的预测值和真实值的差异程度的运算函数。(损失函数越小,模型的鲁棒性。)
以下是softmax回归从零开始实现代码:
3.6 softmax回归的简洁实现
1、重新审视softmax的实现
!!所做改进:(改进softmax函数、loss函数)
在简洁实现中调用了之前jupyter文件中的自己写的module块,需要创建一个py文件进行调用,详细请看:
(3条消息) 调用jupyter notebook文件内的函数一种简单方法_jupyter之间函数调用_dodott的博客-CSDN博客
总结:
已学习两章pytorch,对于其中的很多函数使用起来仍然有些不了解,尤其是pytorch语法,以及jupyter文件的认识仍不足,需要进一步回顾也好,学习新内容也好,去熟悉pytorch代码编写的特点,会用,更会灵活使用,要多思考。既没有那么难,因为目前遇到的问题都可求得解决方法,但是,也没有那么简单,需要自己静下心,好好捋一捋所学到的、学了忘记的知识。更重要还是提高效率,保持好心态,相信一定可以学有所思,思有所获!