
深度学习
文章平均质量分 85
深度学习
因吉
这个作者很懒,什么都没留下…
展开
-
torch学习(一):环境配置
环境配置1 Anaconda安装2 Jupyter安装3 Torch安装致谢1 Anaconda安装 Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等多个科学包及其依赖项。 安装可以参考:https://blog.youkuaiyun.com/ITLearnHall/article/details/817081482 Jupyter安装 Jupyter是...原创 2020-01-07 13:19:12 · 1518 阅读 · 6 评论 -
多示例学习 (multi-instance learning, MIL) 学习路线 (归类、重点文章列举、持续更新)
MIL学习路线:归类、重点文章概述 (持续更新ing...)原创 2024-01-15 20:43:24 · 8711 阅读 · 3 评论 -
光流方法Flownet的简单调用
如果是自己训练,30G的FLyingChairs数据集还是很吃设备,这里只介绍如何使用FlowNet。原创 2022-10-31 20:21:32 · 1623 阅读 · 7 评论 -
torch学习 (43):Generator--伪随机数生成算法的状态管理
torch中的伪随机数生成算法管理原创 2022-04-04 10:31:07 · 1452 阅读 · 6 评论 -
torch学习 (42):tensor的索引、切片、拼接,以及变异操作 (Indexing, Slicing, Joining, Mutating)
对torch中tensor的索引、切片、拼接等操作进行说明原创 2022-03-31 19:44:42 · 6411 阅读 · 0 评论 -
torch学习 (41):torch中的tensor初始化操作
torch中tensor的一些创建方式原创 2022-03-30 21:10:34 · 6668 阅读 · 0 评论 -
torch学习 (40):图像转换与增广 (Transforming and Augmenting Images)
详细介绍torch库中的torchvision.transforms函数原创 2022-03-27 20:11:33 · 7940 阅读 · 2 评论 -
torch学习 (三十九):空间Transformer网络
基于MNIST数据集的空间Transformer网络示意。参考文献:pytorch中文版。原创 2022-03-24 19:07:44 · 2965 阅读 · 0 评论 -
torch学习 (三十八):使用TorchVision微调物体检测模型 (Penn-Fudan数据库)
本文对Penn-Fudan数据库的行人检测和分割的预训练Mask R-CNN模型进行微调,其包含170张图片,且有345个行人实例。原创 2021-12-24 10:23:39 · 3445 阅读 · 0 评论 -
torch学习 (三十七):DCGAN详解
文章目录引入1 生成器2 鉴别器3 模型训练:生成器与鉴别器的交互4 参数设置5 数据载入6 完整代码引入 论文详解:Unsupervised representation learning with deep convolutional generative adversarial networks 对抗生成网络的核心在于生成器、鉴别器以及两者之间的交互,本文将详细对这几个部分进行介绍。1 生成器 DCGAN生成器的本质是多个卷积层、批量归一化、激活函数的堆叠,具体结构如下表:结原创 2021-11-19 21:18:52 · 7763 阅读 · 13 评论 -
torch学习 (三十六):词嵌入 (word2vec)
自然语言是一套用来表达含义的复杂系统。这套系统中,词是表义的基本单元,词向量则是用来表示词的向量。把词映射为实数域向量的技术也叫做词嵌入 (word embedding)。近年来,词嵌入逐渐成为自然语言处理的基础知识。原创 2021-08-18 22:18:19 · 672 阅读 · 0 评论 -
torch学习 (三十五):目标检测之锚框
目标检测算法通常会在输入图像中采样大量区域,然后判断这些区域是否包含感兴趣的目标,并调整区域边缘从而更准确地预测目标的真实边界框 (ground-truth bounding box)。不同的模型使用的区域采样方法可能不同,这里介绍其一:以每个像素为中心生成多个大小和宽高比 (aspect ratio)不同的边界框,称为锚框 (anchor box)。原创 2021-07-20 09:34:29 · 904 阅读 · 4 评论 -
torch学习 (三十四):迁移学习之微调
场景:从图像中识别出不同种类的椅子,然后将购买链接推荐给用户。方案1: 找出100种常见的椅子,为每种椅子拍摄1000张不同角度的图像,并训练模型。缺点: 数据集看似庞大,样本类型和数据集仍不足;适用于更大规模数据集的模型,可能会在该数据集上过拟合。方案2: 收集更多的数据。缺点: 收集和标注的成本巨大。方案3: 应用迁移学习 (transfer learning):将从源数据集学到的知原创 2021-07-19 17:03:35 · 3370 阅读 · 0 评论 -
torch学习 (三十三):Torch之图像增广
图像增广 (image augmentation) 通过对训练图像做一系列随机改变,来产生相似但又不同的训练样本,从而扩大训练集的规模。另一种解释是,随机改变训练样本可以降低模型对某些属性的依赖,从而提高模型的泛化能力。例如,可以对图像进行不同方式的裁剪,使感兴趣的物体出现在不同位置,从而减轻模型对物体出现位置的依赖性;也可以调整亮度、色彩等因素来降低模型对色彩的敏感性。原创 2021-06-19 19:23:33 · 2394 阅读 · 0 评论 -
torch学习 (三十二):周杰伦歌词数据集与长短期记忆 (LSTM)
文章目录1 引入2 长短期记忆2.1 输入门、遗忘门和输出门2.2 候选记忆细胞2.3 记忆细胞2.4 隐藏状态3 代码致谢1 引入 本文介绍一种常用的门控循环神经网络:长短期记忆 (long short-term memory, LSTM)。它比门控循环单元的结构稍微复杂一点。2 长短期记忆 LSTM引入了333个门,即输入门 (input gate)、遗忘门 (forget gate)和输出门 (output gate),以及与隐藏状态形状相同的记忆细胞,从而记录额外的信息。2.1 输入门原创 2021-06-18 22:06:09 · 974 阅读 · 0 评论 -
torch学习 (三十一):门控循环单元 (GRU)
当时间步较大或者较小时,RNN容易出现梯度衰减或者梯度爆炸。虽然梯度裁剪可以应对梯度爆炸,但是无法解决梯度衰减的问题。通常由于这个原因,RNN在实际中较难捕捉时间序列中时间步距离较大的依赖关系。门控循环神经网络 (gated recurrent neural network)的提出,正是为了更好地捕捉时间序列中的时间步较大的依赖关系。它可以通过学习的门来控制信息的流动。其中,门控循环单元 (gated recurrent unit, GRU)是一种常用的门控循环神经网路。原创 2021-06-08 20:39:04 · 1615 阅读 · 0 评论 -
torch学习 (三十):RNN梯度的计算与存储,即通过时间反向传播
于RNN,如果不进行梯度裁剪,模型将无法正常训练。为了深刻理解这一现象,本文将详细介绍RNN中梯度的计算与存储,即通过时间反向传播 (back-propagation through time)原创 2021-06-03 22:16:26 · 907 阅读 · 0 评论 -
torch学习 (二十九):周杰伦歌词数据集测试循环神经网络
使用周杰伦歌词数据集实验循环神经网络,具体内容包括:1)数据导入;2)One-hot向量;3)梯度裁剪;4)模型构建;5)模型训练原创 2021-06-03 21:50:01 · 3128 阅读 · 3 评论 -
torch学习 (二十八):Torch定义自己的图像数据集以及加载训练
文章目录1 加载普通数据集2 加载图像数据集2.1 编写图像路径文件2.2 编写MyDataset类2.3 使用LeNet来测试1 加载普通数据集 加载类似于iris这样的数据集,即数据类型为{(x,y)}\{(\boldsymbol{x}, y)\}{(x,y)},其中\boldsymbol{x}为实例,y为标签:import torch.utils.data as data_utilsdata = data_utils.TensorDataset(ins, ins_lab) # in原创 2021-04-15 21:36:43 · 2594 阅读 · 0 评论 -
torch学习 (二十七):稠密连接网络 (DenseNet)
稠密连接网络 (DenseNet)与ResNet的主要区别如下\color{red}^{[1]} [1] : ResNet的B的输出与A的输出相加,DenseNet则是在通道维上连结。这样模块A的输出可以直接传入B之后的层,这也是该网络被称为稠密网络的原因。 DenseNet的主要构建模块是稠密块 (dense block)和过渡层 (transition layer)。前者定义了输入与输出是如何连结的,后者则用来控制通道数,使之不过大。原创 2021-01-14 20:45:11 · 2353 阅读 · 0 评论 -
torch学习 (二十六):残差网络 (ResNet)
首先思考这样一个问题: 对神经网络添加新的层,充分训练后的模型是否只可能更有效地降低训练误差?\color{red}^{[1]} [1] 理论上,原模型解的空间只是新模型解的空间的子空间,即如果能将新添加的层训练成恒等映射f (x) = xf(x)=x,新模型和原模型将同样有效。 由于新模型可能得到更优的解来拟合训练数据集,因此添加层似乎更容易降低训练误差。 然后在实践中,添加过多的层后训练误差往往不降反升。即使使用批量归一化带来的数值稳定使得训练深层模型更加容易,但问题仍然存在。 残差原创 2021-01-14 17:33:02 · 3752 阅读 · 1 评论 -
torch学习 (二十五):批量归一化
文章目录引入1 批量归一化层1.1 全连接层的批量归一化1.2 卷积层的批量归一化2 代码实现util.SimpleTool引入 模型训练时,批量归一化利用小批量上的均值和标准差,不断地对神经网络中间输出进行调整,从而使得整个神经网络在各层的中间输出的数值更稳定[1]\color{red}^{[1]}[1]。【1】李沐、Aston Zhang等老师,《动手学深度学习》1 批量归一化层 全连接层和卷积层的批量归一化稍有不同1.1 全连接层的批量归一化 批量归一化层通常置于全连接层的仿射变原创 2021-01-13 09:17:21 · 1281 阅读 · 1 评论 -
torch学习 (二十四):卷积神经网络之GoogleNet
文章目录引入1 Inception块2 GoogleNet模型3 模型训练完整代码util.SimpleTool引入 GoogleNet吸收了NIN网络串联网络的思想,并在此基础上做了改进。 本文介绍其第一个版本[1]\color{red}^{[1]}[1]。【1】李沐、Aston Zhang等老师的这本《动手学深度学习》一书。1 Inception块 GoogleNet中的基础卷积块叫做Inception块,得名于电影《盗梦空间》。 网络结构如下:import timeim原创 2020-12-22 22:08:07 · 501 阅读 · 1 评论 -
torch学习 (二十三):卷积神经网络之NIN模型
文章目录引入1 NIN块2 NIN模型3 模型训练引入 NIN意为网络中的网络,提出了串联多个由卷积层和“全连接”层构成的小网络,以此构建一个深层网络[1]\color{red}^{[1]}[1]。1 NIN块 NIN使用1×11 \times 11×1卷积层来替代全连接层,从而使空间信息能够自然传递到后面的层中去。 下图对比了NIN同AlexNet和VGG网络在结构上的主要区别: NIN块是NIN模型中的基础块,其特点如下: 1)由一个卷积层加两个充当全连接层的1×11 \tim原创 2020-12-21 22:38:59 · 1315 阅读 · 0 评论 -
torch学习 (二十二):卷积神经网络之VGG模型
文章目录引入1 库引入2 VGG块3 VGG网络4 获取数据和模型训练完整代码引入 本节对VGG进行介绍,其名字源于论文所在实验室Visual Geometry Group[1]^{\color{red}[1]}[1]。VGG提出了可以通过重复使用简单的基础块来构建深度模型的思路[2]^{\color{red}[2]}[2]。注:[1] Simonyan, K., & Zisserman, A. (2014). Very deep convolutional networks for l原创 2020-12-20 15:09:36 · 1408 阅读 · 0 评论 -
torch学习 (二十一):卷积神经网络之AlexNet模型
文章目录引入1 模型构建2 读取数据3 模型训练完整代码支持代码uitl.SimpleTool引入 AlexNet[1]\color{red}^{[1]}[1]与Lenet的设计理念很相似,但也有显著的区别[2]\color{red}^{[2]}[2]: 1)包含8\mathbf{8}8层变换,其中有555层卷积和222层全连接隐藏层,以及一个全连接输出层: 1.1)第一层卷积窗口形状为11×11\mathbf{11 \times 11}11×11,可以适用于尺寸更大的图像; 1.原创 2020-12-18 17:03:21 · 1245 阅读 · 0 评论 -
torch学习 (二十):卷积神经网络之LeNet模型
引入1 相关概念2 LeNet模型2.1 卷积层块2.2 全连接层块2.3 LeNet模型的torch构建2.4 数据获取2.5 模引入 卷积神经网络就是含卷积层的网络。本节将介绍一个早期用来识别手写数字图像的卷积神经网络 (LeNet),其网络结构如下图[1]^{[1]}[1]:参考文献[1] 李沐、Aston Zhang等老师的这本《动手学深度学习》一书。1 相关概念 多层感知机中,通过构造一个含单隐藏层的多层感知机模型来对Fashion-MNIST数据集进行分类。原创 2020-12-18 11:28:40 · 1333 阅读 · 1 评论 -
torch学习 (十九):池化层
文章目录引入1 二维最大池化层和平均池化层2 填充和步幅3 多通道引入 池化层 (pooling)的提出是为了缓解卷积层对位置的过度敏感性^{[1]} [1] 。例如在实际图像中,感兴趣的物体不会总出现在固定位置:即使连续拍摄同一个物体,也可能出现像素位置上的偏移。这将导致同一个边缘对应的输出可能出现在卷积输出中的不同位置,从而对后面的模式识别造成不便。1 二维最大池化层和平均池化层 池化层所对应的固定形状的窗口称为池化窗口,与互相关运算不同:池化层直接计算池化窗口内元素的最大值或原创 2020-12-18 10:16:58 · 1531 阅读 · 0 评论 -
torch学习 (十八):多输入通道和多输出通道
文章目录引入1 多输入通道2 多通道输出3 1×11 \times 11×1卷积层引入 本节主要介绍多输入通道或者多输出通道的卷积核[1]^{[1]}[1]。例如彩色图像中,其在高和宽222个维度外还有RGB333个颜色通道,即其可以表示为一个3×h×w3 \times h \times w3×h×w的多维数组。333所对应的维则称为通道维。1 多输入通道 当输入数据含多个通道时,需要构造一个输入通道数与输入数据的通道数相同的卷积核,从而能够与含多通道的输入数据做互相关运算。 假设输入数据的原创 2020-12-17 17:23:33 · 2963 阅读 · 0 评论 -
torch学习 (十七):填充和步幅
文章目录引入1 填充2 步幅引入 一般来说,对于输入为nh×nwn_h \times n_wnh×nw的矩阵,以及kh×kwk_h \times k_wkh×kw的核矩阵,互相关运算后,输出的形状将会是:(nh−kh+1)×(nw−kw+1).(1)(n_h - k_h + 1) \times (n_w - k_w + 1).\tag{1}(nh−kh+1)×(nw−kw+1).(1) 因此,卷积层的输出形状是由输入形状和卷积核矩阵形状决定。 本节主要介绍卷积层的两个超参原创 2020-12-17 16:15:13 · 1139 阅读 · 0 评论 -
torch学习 (十六):二维卷积层
文章目录引入1 二维互相关运算2 二维卷积层3 图像中物体边缘检测4 通过数据学习核矩阵5 互相关运算和卷积运算引入 本文对卷积神经网络中最常见的二维卷积层进行介绍。它具有高和宽两个空间维度,常用来处理图像数据[1]^{[1]}[1]。1 二维互相关运算 虽然卷积层得名于卷积 (convalution)计算,但通常在卷积层中使用更为直观的互相关 (cross-correlation)运算。 在二维卷积层中,一个二维输入数组和一个二维核通过互相关运算,输出一个二维数组。例如下原创 2020-12-17 13:08:14 · 1194 阅读 · 0 评论 -
torch学习 (十五):读取和存储模型
文章目录引入1 读写Tensor2 读写模型2.1 state_dict2.2 保存和加载模型2.2.1 保存和加载state_dict (推荐)2.2.2 保存整个模型引入 本节介绍如何把在内存中训练好的模型参数进行存储,以及后续的读取[1]^{[1]}[1]。1 读写Tensor torch的save与load函数与numpy的类似:import torchfrom torch import nnif __name__ == '__main__': # Main x原创 2020-12-17 11:09:48 · 1803 阅读 · 0 评论 -
torch学习 (十四):自定义层
文章目录引入1 不含模型参数的自定义层2 含模型参数的自定义层引入 深度学习的一个魅力在于神经网络中各种各样的层,例如全连接层和卷积层、池化层、循环层等。当然,Torch提供了大量常用的层,那如果需要自定义层呢? 本节主要对使用Module来自定义层进行介绍。1 不含模型参数的自定义层 以下定义了一个将输入剪掉均值后输出的层,该层不包含任何模型参数:import torchfrom torch import nnclass Test(nn.Module): def __i原创 2020-12-16 21:11:45 · 1206 阅读 · 0 评论 -
torch学习 (十三):模型参数的访问和初始化
文章目录引入1 网络生成2 访问模型参数3 初始化模型参数4 自定义初始化方法引入 本节对模型参数的访问、初始化和共享进行详细介绍。1 网络生成 本节使用一个简易的多层感知机作为测试:def get_net(): # The parameters setting of torch: ret_net = nn.Sequential( nn.Linear(num_inputs, num_hiddens), nn.ReLU(),原创 2020-12-16 11:33:01 · 825 阅读 · 0 评论 -
torch学习 (十二):简单与复杂模型构造 (Module、Sequential、ModuleList、ModuleDict以及嵌套)
文章目录引入1 继承Module类来构造模型2 Module的子类2.1 Sequential类2.2 ModuleList类2.3 ModuleDict类3 复杂模型构造引入 本文对基于Module类的模型构造方法进行介绍^{[1]} [1] 。1 继承Module类来构造模型 Module类是torch.nn模块里的一个模型构造类,是所有神经网络模块的基类。 通过继承Module,我们可以定义自己想要的模型。以下示例构造了一个多层感知机,并重载了__init__和fo原创 2020-12-16 09:31:51 · 1751 阅读 · 0 评论 -
torch学习 (十一):实战KAGGLE房价预测数据 (附带数据集)
文章目录引入1 库引入2 数据载入3 获取网络4 评价函数5 训练函数6 kk折交叉验证7 主函数完整代码引入 本文主要对KAGGLE房价预测数据进行预测,并提供模型的设计以及超参数的选择^{[1]} [1] 。 数据集介绍可参照: https://blog.youkuaiyun.com/weixin_44575152/article/details/110852303 已处理数据可参照: https://gitee.com/inkiinki/data20201205/blo原创 2020-12-12 20:20:43 · 4662 阅读 · 3 评论 -
torch学习 (十):正向传播、反向传播和计算图
文章目录引入1 正向传播引入 本节中,将以带L2L_2L2范数正则化的含单隐藏层的多层感知机为样例模型解释正向传播和反向传播[1]^{[1]}[1]。1 正向传播 正向传播是指对神经网络沿着输入层到输出层的顺序,依次计算并存储模型的中间变量,包括输出。 为简单表示,假设输入是一个特征为x∈Rd\boldsymbol{x} \in \mathbb{R}^dx∈Rd的样本,且不考虑偏差项,那么中间变量z=W(1)x,(1)\boldsymbol{z} = \boldsymbol{W}^{(原创 2020-12-07 19:57:36 · 1468 阅读 · 6 评论 -
torch学习 (九):丢弃法
文章目录引入1 丢弃法2 简洁实现引入 深度学习中,模型常常使用丢弃法 (dropout)来应对拟合问题。丢弃法有不同的变体,本文主要对倒置丢弃法 (inverted dropout)进行介绍。 参考文献:李沐、Aston Zhang等老师的这本《动手学深度学习》一书。1 丢弃法 2 简洁实现...原创 2020-12-07 12:57:49 · 749 阅读 · 0 评论 -
torch学习 (八):权重衰减
引入 本文介绍应对过拟合的常用方法:权重衰减 (weight decay) 参考文献:李沐、Aston Zhang等老师的这本《动手学深度学习》一书。原创 2020-12-06 23:20:27 · 1973 阅读 · 1 评论 -
torch学习 (七):多项式函数拟合实验
文章目录引入1 生成数据集引入 本文通过多项式函数的拟合实验,来理解模型复杂度和训练数据集大小对欠拟合和过拟合的影响。 参考文献:李沐、Aston Zhang等老师的这本《动手学深度学习》一书。1 生成数据集 给定样本特征x{x}x,将使用下列三阶多项式来生成样本标签:y=1.2x−3.4x2+5.6x3+5+ϵ,(1)y = 1.2 x - 3.4 x^2 + 5.6 x^3 + 5 + \epsilon,\tag{1}y=1.2x−3.4x2+5.6x3+5+ϵ,(1)...原创 2020-12-06 11:18:20 · 3628 阅读 · 9 评论