前言
我认为,沐神的第七节课和第八节课十分的重要,是后面的基础。一定要掌握牢固了。
先处理几个问题:
1、图片不显示的问题
因为沐神使用的是jupyter,而我使用的是pycharm,所以在原本的d2l.plt…后面需要添加一行代码,比如
或者在 调用d2l的时候,后面添加d2l.plt.show()
2、ModuleNotFoundError: No module named ‘d2l’
解决办法是,下载d2l包
d2l包里面包含这几个文件,沐神的GitHub里面 下载地址
3、多线程的问题
报错原因是因为李沐用的linex系统,直接这样写没有问题,但是在window系统下,就出问题了,解决办法是,把return的值由4改为0,后面他直接调用的d2l.torch里面也需要改,遇到这个错误的时候,直接改就可以了。
代码详细解释
沐神提供了两个版本,一个是从零开始实现,一个是简洁实现。所谓的简洁实现就是用一些torch自带的库和他自己的d2l封装在一起的,沐神很贴心的后面加上了 # @save。
1、
torch.normal(a,b,c) # a:均值、b方差、c是size
len(w) # 方法返回对象(字符、列表、组等)长度或项目个数。
torch.matmul的维度问题 ([1,2,3]是一维的,而[[1,2,3]]是二维的只不过只有一行而已)
一维乘以一维==》标量
二维乘以二维==》矩阵
一维乘以二维==》3×(3×2)》(1×3)×(3×2)》1×2==》2(例子)
一维乘以二维==》(3×2)×2==》(3×2)×(2×1)》3×1》3(例子)
2、
yield:作用就是使用一个固定大小的内存来处理不断生成的数据,从未达到减少内存的消耗。
yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 data_iter(1) 不会执行data_iter 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 data_iter函数内部的代码,执行到 yield 时,data_iter函数就返回一个迭代值,下次迭代时,代码从 yield 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。
也可以手动调用 data_iter的 next() 方法(因为data_iter 是一个 generator 对象,该对象具有 next() 方法),这样我们就可以更清楚地看到 data_iter 的执行流程。
一言以蔽之:yield就像一个中断器,每次循环调用一次。
for X, y in data_iter(batch_size, features, labels):
在这个循环中,yield了一次,生成了一个batch_size的数据,进入循环体进行处理。处理完之后,执行for的时候又生成了一个batch_size的数据,再进行处理,直到所有的数据全部处理完成。
3、简洁实现
逐行解释
PyCharm激活2023.2.4
4、回归问题
理解:真实的值是0和2,第一次预测的0,1,2的概率分别为[0.1,0.3,0.6],第一次预测的0,1,2的概率分别为[0.3, 0.2, 0.5],那么两次预测都正确的概率为[0.1,0.5]
PyCharm激活2023.2.4
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/119888.html