李沐动手学深度学习pytorch实践笔记
2、标量对向量求导;
4、如何直观理解梯度下降;
梯度,是个向量,有方向和长度就是向量,向量里的各个元素是偏导、是标量对向量求导的那个偏导、是多元函数全微分里z对x、y求的那个偏导。
全微分dz所在的z轴是向上的,而梯度下降需要向下,所以要找负梯度方向,也就是移动了Δx和Δy之后,这个Δz的增量最大,他降低的最多,他最陡。这个向量怎么找,用方向导数,方向导数需要什么,需要偏导和角度,角度永远是0,因为cos0=1最大,所以只要有偏导就行。
所以,李沐课程第8节第3课,线性回归从零实践里,梯度下降循环了300次以更新系数w和b,这些系数就是梯度、是要找的向量。
每次更新之后,就以新的向量点的坐标为起点,继续计算方向导数,找到下一个Δz增量最大的向量。
5、课程第九节softmax回归有2个问题:
1 load_data_fashion_mnist函数里FashionMNIST是下载不了图片集的,可以把torch里的load_data_fashion_mnist改成MNIST
def load_data_fashion_mnist(batch_size, resize=None):
"""Download the Fashion-MNIST dataset and then load it into memory. Defined in :numref:`sec_utils`"""
trans = [transforms.ToTensor()]
if resize:
trans.insert(0, transforms.Resize(resize))
trans = transforms.Compose(trans)
mnist_train = torchvision.datasets.MNIST(
root=".\\data", train=True, transform=trans, download=True)
mnist_test = torchvision.datasets.MNIST(
root=".\\data", train=False, transform=trans, download=True)
return (torch.utils.data.DataLoader(mnist_train, batch_size, shuffle=True,
num_workers=get_dataloader_workers()),
torch.utils.data.DataLoader(mnist_test, batch_size, shuffle=False,
num_workers=get_dataloader_workers()))
标签也改成0~9,MNIST是识别手写数字的
def get_fashion_mnist_labels(labels):
"""Return text labels for the Fashion-MNIST dataset. Defined in :numref:`sec_utils`"""
text_labels = ['0', '1', '2', '3', '4',
'5', '6', '7', '8', '9']
return [text_labels[int(i)] for i in labels]
这样以后就可以正常用 train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size) 加载图片数据集了
2 pycharm中这一节的动画和图片不显示
show_images函数后面 d2l.plt.show() 就可以显示图片
在d2l的torch文件中,在 class Animator add函数最后两行中间加入两行代码
display.display(self.fig)
d2l.plt.draw()
d2l.plt.pause(0.001)
display.clear_output(wait=True)
然后 调用 train_ch3 时,记得里面的Animator 类 要实例化 d2l的,如果改自己的Animator 就对应改它的add函数,最后调完train_ch3 函数在下面加上d2l.plt.show()就能显示动画
6、权重衰减
以softmax为例,求出的向量元素都是概率,这个向量作为损失函数的入参。所以一组大的或一组小的w和b,得到的都是概率组成的向量,最后损失函数的最小值是一样的,但是大的w和b会使特征放大,也使噪音放大了,那还不如选个小的w和b
正则化参数是限制w的Θ的倒数。所以λ=0,Θ无穷大;Θ无穷大,Θ=0
激活函数relu tanh 在原点附近接近f(x)=x,再配合合理的权重初始值,可以提升数值稳定性,防止梯度爆炸或消失
新加的层训练的是上一层的输出x和正确值之间的残差,最终训练的结果输出,就是新加层的残差输出Fx加上之前层的输出x
7、微调
现在都用基于预训练的模型和参数,然后进行微调,最后一层之前的,就基于预训练的参数和正常的学习率训练,因为这些参数变动不大,而最后的输出层变动很大,因此用10倍的学习率训练。很少有人会对所有参数重新训练,除非是大公司。
学术界和竞赛界是固定数据调模型,调试太多,验证集也变成训练集了,会过拟合。而工业界不需要调太多,需要提升数据质量,因为工业界不断有新数据,所以应该优化训练集的数据,找更多数据。
目标检测直接用别人写好的包,细节太多别自己写,Python 效率低,一般用c++或cuda 写
李沐动手学深度学习pytorch实践笔记的更多相关文章
- 《动手学深度学习》系列笔记—— 1.2 Softmax回归与分类模型
目录 softmax的基本概念 交叉熵损失函数 模型训练和预测 获取Fashion-MNIST训练集和读取数据 get dataset softmax从零开始的实现 获取训练集数据和测试集数据 模型参 ...
- 《动手学深度学习》系列笔记 —— 语言模型(n元语法、随机采样、连续采样)
目录 1. 语言模型 2. n元语法 3. 语言模型数据集 4. 时序数据的采样 4.1 随机采样 4.2 相邻采样 一段自然语言文本可以看作是一个离散时间序列,给定一个长度为\(T\)的词的序列\( ...
- 小白学习之pytorch框架(2)-动手学深度学习(begin-random.shuffle()、torch.index_select()、nn.Module、nn.Sequential())
在这向大家推荐一本书-花书-动手学深度学习pytorch版,原书用的深度学习框架是MXNet,这个框架经过Gluon重新再封装,使用风格非常接近pytorch,但是由于pytorch越来越火,个人又比 ...
- 对比《动手学深度学习》 PDF代码+《神经网络与深度学习 》PDF
随着AlphaGo与李世石大战的落幕,人工智能成为话题焦点.AlphaGo背后的工作原理"深度学习"也跳入大众的视野.什么是深度学习,什么是神经网络,为何一段程序在精密的围棋大赛中 ...
- 【动手学深度学习】Jupyter notebook中 import mxnet出错
问题描述 打开d2l-zh目录,使用jupyter notebook打开文件运行,import mxnet 出现无法导入mxnet模块的问题, 但是命令行运行是可以导入mxnet模块的. 原因: 激活 ...
- 动手学深度学习9-多层感知机pytorch
多层感知机 隐藏层 激活函数 小结 多层感知机 之前已经介绍过了线性回归和softmax回归在内的单层神经网络,然后深度学习主要学习多层模型,后续将以多层感知机(multilayer percetro ...
- mxnet 动手学深度学习
http://zh.gluon.ai/chapter_crashcourse/introduction.html 强化学习(Reinforcement Learning) 如果你真的有兴趣用机器学习开 ...
- 动手学深度学习14- pytorch Dropout 实现与原理
方法 从零开始实现 定义模型参数 网络 评估函数 优化方法 定义损失函数 数据提取与训练评估 pytorch简洁实现 小结 针对深度学习中的过拟合问题,通常使用丢弃法(dropout),丢弃法有很多的 ...
- 动手学深度学习6-认识Fashion_MNIST图像数据集
获取数据集 读取小批量样本 小结 本节将使用torchvision包,它是服务于pytorch深度学习框架的,主要用来构建计算机视觉模型. torchvision主要由以下几个部分构成: torchv ...
- 动手学深度学习1- pytorch初学
pytorch 初学 Tensors 创建空的tensor 创建随机的一个随机数矩阵 创建0元素的矩阵 直接从已经数据创建tensor 创建新的矩阵 计算操作 加法操作 转化形状 tensor 与nu ...
随机推荐
- 【framework】DisplayContent简介
1 前言 DisplayContent 用于管理屏幕,一块屏幕对应一个 DisplayContent 对象,虽然手机只有一个显示屏,但是可以创建多个 DisplayContent 对象,如投屏时, ...
- FTP命令详解(含操作实例)
以下是微软命令行FTP客户端命令大全,如果你想使用"未加工(RAW)"FTP命令而非下面翻译过的请参考:http://www.nsftools.com/tips/RawFTP.ht ...
- Go微服务框架go-kratos实战学习06:配置中心使用-nacos作为配置中心和 file作为配置存储
一.kratos 配置介绍 配置文件的作用就是把一些会变化的配置项单独存放,与程序相剥离. 把配置项进行单独管理. kratos 支持多种形式的配置, 比如 file,环境变量. 还支持一些配置软件, ...
- [Android逆向] 重打包时报BrutException
执行apktool b --use-aapt2 进行重打包时,重打包失败,抛出异常 apktool b /Users/***/work/appsApk/testApp --use-aapt2 I: U ...
- socket及黏包现象及解决黏包---day28
1.四次挥手(补充) 客户端向服务端发送一个请求消息,断开连接(代表客户端没有数据传输了) 服务端接收请求,发出响应 等到服务端所有数据收发完毕之后 服务端向客户端发送断开连接的请求 客户端接收请求后 ...
- django中的Case,When,then用法
# 参考文档 https://docs.djangoproject.com/en/2.2/ref/models/conditional-expressions/ # Case()接受任意数量的When ...
- Java 开发人员调度软件项目 (java基础编程总结项目)+javaBean+测试代码+数组知识+数据结构+继承+多态+封装+自定义异常,异常处理+构造器知识+重载+重写+接口+实现接口+关键字使用(static +equalsIgnoreCase+fianl+instanceof判断类型)+向下转型与向上转型
/** * * @Description Java 开发人员调度软件项目 (java基础编程总结项目) * +javaBean+测试代码+数组知识+数据结构+继承+多态+封装+自定义异常,异常处理 * ...
- 14 CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!)C. Tenzing and Balls(dp+前缀最大值优化)
思路: dp还是挺明显的,思路可以参考最长上升子序列 有点dp的感觉 \(f[i]\)表示考虑前\(i\)个数,的最大值 当前数有两种删或不删 不删:\(f[i]=f[i-1]\); 删:\(f[i] ...
- 用几张图实战讲解MySQL主从复制
本文分享自华为云社区<结合实战,我为MySQL主从复制总结了几张图!>,作者: 冰 河. MySQL官方文档 MySQL 主从复制官方文档链接地址如下所示: http://dev.mysq ...
- ohmyposh 安装 - 基于 powershell7.2.1 - 最后改成 profile自定义
今天偶然下载了 powershell7.2.1 https://mydown.yesky.com/pcsoft/468254.html 这想着 vscode也支持了,得装一个 ohmyposh的主题啊 ...