
深度学习
笔记
Whisper_yl
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
深度学习笔记 —— 注意力机制 + 注意力分数
随意线索:指有意识去关注的点根据查询去寻找比较感兴趣的东西原创 2022-05-12 20:36:20 · 662 阅读 · 3 评论 -
深度学习笔记 —— 样式迁移
直观地理解就是滤镜目的是训练这样一张图片X,使得该图片放进和内容图片同样一个CNN的时候在某一层的输出能够匹配上内容;同理,X和样式图片进入同一个CNN,某些层的输出在样式上能够匹配。如果能够同时满足这两个条件,那么X既保留了内容,也保留了样式。import torchimport torchvisionfrom torch import nnfrom d2l import torch as d2limport matplotlib.pyplot as plt# 阅读内容和样式图原创 2022-04-30 17:15:35 · 1871 阅读 · 1 评论 -
深度学习笔记 —— 转置卷积
语义分割要做像素级别的预测,但是卷积不断地减小高宽,所以需要另外一种卷积把小的高宽变大。转置卷积:输入中的单个元素与kernel按元素做乘法但不相加,然后按元素写回到原始的地方。再谈转置卷积:换算成卷积之后,卷积是正常卷积,也就是填充为0,步幅为1,与前面填充和步幅是无关的。如果要做逆变换需要能推出来:n >= sn' + k -2p - s(刚好整除的情况下取等号)转置卷积是形状上做逆运算,但元素值不是。转置卷积本质上还是一种卷积。...原创 2022-04-25 19:10:40 · 1130 阅读 · 0 评论 -
深度学习笔记 —— 语义分割和数据集
语义分割只关心像素属于哪个类,实例分割关心像素属于哪个类的哪个实例(可以认为是目标检测的进化版本)。import osimport torchimport torchvisionfrom d2l import torch as d2limport matplotlib.pyplot as pltd2l.DATA_HUB['voc2012'] = (d2l.DATA_URL + 'VOCtrainval_11-May-2012.tar', ...原创 2022-04-21 22:05:36 · 2721 阅读 · 0 评论 -
深度学习笔记 —— 物体检测和数据集 + 锚框
任务:识别我们所有感兴趣的物体,同时将每个物体的位置找出来import torchfrom d2l import torch as d2limport matplotlib.pyplot as pltd2l.set_figsize()img = d2l.plt.imread('./img/catdog.jpg')d2l.plt.imshow(img)plt.show()# 定义在这两种表示之间进行转换的函数def box_corner_to_cente..原创 2022-04-19 20:48:05 · 4190 阅读 · 0 评论 -
深度学习笔记 —— 微调
通常希望能在很大的数据集上训练好的模型能够帮助提升精度。一部分做特征抽取,一部分做线性分类。核心思想:在源数据集(通常是比较大的数据集)上训练的模型,我们觉得可以把做特征提取那块拿来用。(越底层的特征越为通用)在自己的数据集上训练的时候,使用一个与pre-train一样架构的模型,做除了最后一层的初始化的时候,不再是随机的初始化,而是使用pre-train训练好的weight(可能与最终的结果很像了,总好于随机的初始化),等价于把特征提取模块复制过来作为我初始化的模型,使得我一开始就..原创 2022-04-18 21:49:42 · 1666 阅读 · 0 评论 -
深度学习笔记 —— 数据增广
固定形状?卷积神经网络通常是一个固定的输入。作用好不好是不一定的。很多时候觉得它有用是因为觉得测试集里会有图片跟这个效果是差不多的。所以如何选择数据增强?可以从后往前推,想一下部署和测试集里面的图片与训练集的图片会有什么变化,从而确定需要什么样的数据增强方式。多样性更强,使得泛化性更好。增广的目的是想让训练集更像测试集,如果完全一样就更好了!:)import torchimport torchvisionfrom torch impo...原创 2022-04-18 17:10:31 · 5439 阅读 · 0 评论 -
深度学习笔记 —— 批量归一化
梯度在上面(损失处)的时候比较大,越到下面越容易变小,因为很多时候都是n个很小的数相乘,乘到最后梯度就比较小了。所以就导致上面参数更新快,而下面参数更新慢(下面参数在小范围内变化时,抽取的底层特征变化不大,此时上层的参数是针对这些底层特征进行学习的)。这也意味着,如果下面的参数改变了,那么上面的参数之前也就白学了,需要重新训练。使得收敛比较慢。核心想法:方差和均值的分布不同层之间变化,如果把分布固定住了,相对来说就是比较稳定的。模型稳定了,也就是说更新的时候不会爆炸,也不会太小,收敛就不会变慢...原创 2022-04-17 21:59:16 · 1602 阅读 · 0 评论 -
深度学习笔记 —— 池化层
卷积层对位置敏感,比如下面的例子中,一个像素的偏移就会导致0输出而现实情况下,边缘很容易会发生变化。而我们并不希望它对位置过于敏感,所以提出了“池化层”最大池化层可以允许输入发生一定范围内的偏移,作用在卷积输出上,有一定模糊化的效果每个输入通道做一次池化层,而不像卷积层一样融合多个输入通道import torchfrom torch import nnfrom d2l import torch as d2l# 实现池化层的正向传播def poo.原创 2022-04-15 18:39:47 · 2020 阅读 · 0 评论 -
深度学习笔记 —— 卷积层里的多输入多输出通道
输出是一个单通道,因为不管输入有多少个通道,最后都会把结果相加因为1x1卷积层每次只识别一个像素,而不查看该像素与周围像素的关系,所以它并不识别空间信息import torchfrom d2l import torch as d2l# 多通道互相关运算def corr2d_multi_in(X, K): return sum(d2l.corr2d(x, k) for x, k in zip(X, K))# 验证互相...原创 2022-04-15 17:36:10 · 2099 阅读 · 3 评论 -
深度学习笔记 —— 卷积层里的填充和步幅
有时候,如果输入图像的尺寸比较小,那么通过几层卷积之后尺寸就不能够支持继续做卷积了,从了限制了网络的深度填充通常设置成kernel_size - 1,以保持输入输出尺寸一致,算起来比较方便import torchfrom torch import nndef comp_conv2d(conv2d, X): # 在维度的前面加入一个通道数和批量大小数 X = X.reshape((1, 1) + X.shape) Y ...原创 2022-04-14 20:43:49 · 1232 阅读 · 0 评论 -
深度学习笔记 —— 卷积层
单隐藏层就已经需要14GB的参数了!平移不变性:识别器不会因为像素的位置而发生改变局部性:找Waldo只需要看局部的信息即可,不需要看全局的信息个人理解:由前面的例子可知,全连接层需要的参数量会非常多,这也就使得MLP受到了限制。但是为了解决问题,提出了“平移不变性”和“局部性”两个性质。我们从全连接层出发,应用两种性质,对原本的计算方式做一些改进,也就得到了卷积层的计算方式。相较于全连接,平移不变性使得卷积的权重在一定范围内,v是相同的;但是由于局...原创 2022-04-14 17:52:05 · 5115 阅读 · 2 评论 -
深度学习笔记 —— PyTorch 神经网络基础
import torchfrom torch import nnfrom torch.nn import functional as F'''模型构造'''# nn.Sequential定义了一种特殊的Modulenet = nn.Sequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256, 10))X = torch.rand(2, 20)print(net(X))# 自定义块# 任何一个层或者一个神经网络都应该是Mo.原创 2022-04-14 00:39:59 · 948 阅读 · 2 评论 -
深度学习笔记 —— 数值稳定性 + 模型初始化和激活函数
t:层:第t-1层隐藏层的输出y:要优化的目标函数这里的h都是一些向量,向量关于向量的导数是一个矩阵,这里做了太多的矩阵乘法,就容易导致梯度爆炸和梯度消失的问题。原创 2022-03-26 23:58:52 · 777 阅读 · 0 评论 -
深度学习笔记 —— 权重衰退 + 丢弃法
硬性限制柔性限制“罚”(即后一项)的引入,使得最优解往原点走,使得w的绝对值会小一些,从而降低了整个模型的复杂度原创 2022-03-10 23:44:45 · 1743 阅读 · 0 评论 -
深度学习笔记 —— 模型选择 + 过拟合和欠拟合
我们关心的是泛化误差,而非训练误差。这也给我们一定启示啊,光背题是行不通滴,要理解背后的本质和逻辑Attention:验证数据一定不要和训练数据混在一起! 也不能用测试数据集来调超参数!好处是尽可能地把数据作为训练数据集,坏处是代价高(因为要跑多次)数据简单,应该选择比较低的模型容量,就会得到一个比较正常的结果;如果简单数据使用了很复杂的模型容量,就会出现过拟合。模型容量低的时候,因为过于简单,所以难以拟合数据,造成训练误差和...原创 2022-03-05 20:03:55 · 910 阅读 · 0 评论 -
深度学习笔记 —— 多层感知机
感知机是一个二分类模型,求解算法等价于使用批量大小为1的梯度下降。感知机的缺点:不能解决XOR问题原创 2022-02-27 22:25:01 · 3658 阅读 · 0 评论 -
深度学习笔记 —— Softmax回归 + 损失函数 + 图片分类数据集
优点:梯度永远是常数,会带来稳定性上的好处。缺点:零点处不可导,此处梯度剧烈变化,这种不平滑性导致在预测值与真实值相差比较小的时候变得不太稳定。也可以自己提出损失函数。因此,分析损失函数时,可从其梯度函数的图像入手,分析当预测值与真实值相差较大或者较小时,进行更新会是怎样的情况。...原创 2022-02-18 22:27:31 · 1821 阅读 · 2 评论 -
深度学习笔记 —— 线性回归 + 基础优化算法
import randomimport torchfrom d2l import torch as d2l# 根据带有噪声的线性模型构造一个人造数据集def synthetic_data(w, b, num_examples): """生成 y = Wx + b + 噪声""" X = torch.normal(0, 1, (num_examples, len(w))) # 均值为0,标准差为1 y = torch.matmul(X, w) + b y += .原创 2022-02-13 23:08:12 · 1160 阅读 · 1 评论 -
深度学习笔记 —— 自动求导
显示构造:先定义好公式,再待入值。隐式构造:系统负责记住一步步的计算,之后定义公式。import torch# 假设我们想对函数y = 2xTx关于列向量x求导x = torch.arange(4.0)# 计算y关于x的梯度之前,需要一个地方来存储梯度x.requires_grad_(True) # 等价于 x = torch.arange(4.0, require_grad=True)print(x.grad) ...原创 2022-02-13 13:51:12 · 1712 阅读 · 3 评论 -
深度学习笔记 —— 矩阵计算
布局:个人理解,不论是分子布局,还是分母布局,都不过是人为规定的布局方式而已。它们的目的是为了对求导后的形式作规定,以达到方便计算的目的。原创 2022-02-11 23:02:28 · 703 阅读 · 0 评论 -
深度学习笔记 —— 线性代数
线性代数实现:1.标量由只有一个元素的的张量表示import torchx = torch.tensor([3.0])y = torch.tensor([2.0])2.可以将向量视为标量值组成的列表x = torch.arange(4)# 通过张量的索引来访问任一元素x[3]3.访问张量的长度x = tensor.arange(4)len(x)Output:4只有一个轴的张量,形状只有一个元素x.shapeOutput:torch.Siz原创 2022-01-30 01:41:28 · 559 阅读 · 0 评论 -
深度学习笔记 —— 数据操作 + 数据预处理
数据操作:0-d:标量,可表示一个类别1-d:向量,可表示一个特征向量(把样本抽象成一行数字)2-d:矩阵,可表示样本的特征矩阵,比如一个三行三列的矩阵,每一行表示一个样本,每一列表示不同的特征3-d:可表示RGB图片(宽x高x通道),宽即为列数,高为行数,通道即为RGB三个通道。4-d:可表示一个RGB图片的批量(批量大小x宽x高x通道)5-d:可表示一个视频批量(批量大小x时间x宽x高x通道)由此可见,维度越高,我们能表示的数据的信息就越多。[::3, ::2]..原创 2022-01-20 20:13:50 · 1525 阅读 · 1 评论