- 博客(29)
- 收藏
- 关注
原创 RNN 自然语言处理(三)LSTM实例
LSTM 做词性预测文章目录LSTM 做词性预测1. 模型介绍2. 字符编码3.构建模型1. 模型介绍对于一个单词,会有这不同的词性,首先能够根据一个单词的后缀来初步判断,比如 -ly 这种后缀,很大概率是一个副词,除此之外,一个相同的单词可以表示两种不同的词性,比如 book 既可以表示名词,也可以表示动词,所以到底这个词是什么词性需要结合前后文来具体判断。根据这个问题,我们可以使用 lstm 模型来进行预测,首先对于一个单词,可以将其看作一个序列,比如 apple 是由 a p p l e 这
2021-06-17 10:28:38
819
原创 RNN 自然语言处理(二)N-Gram模型
N-Gram模型上一篇,我们讲了词嵌入以及词嵌入是如何得到的,现在我们来讲讲词嵌入如何来训练语言模型,首先我们介绍一下 N-Gram 模型的原理和其要解决的问题。对于一句话,单词的排列顺序是非常重要的,所以我们能否由前面的几个词来预测后面的几个单词呢,比如 ‘I lived in France for 10 years, I can speak _’ 这句话中,我们能够预测出最后一个词是 French。对于一句话 T,其由 w1,w2,⋯ ,wnw_1, w_2, \cdots, w_nw1,w2
2021-06-16 16:24:09
506
原创 RNN 自然语言处理(一)之词嵌入
词嵌入(Word Embedding)文章目录词嵌入(Word Embedding)1. 介绍2. PyTorch实现3.Skip_Gram模型3.1 模型结构1. 介绍现在循环神经网络最火热的应用是自然语言处理,下面我们介绍一下自然语言处理中如果运用循环神经网络,首先我们介绍一下第一个概念,词嵌入。对于图像分类问题,我们可以使用 one-hot 的类型去编码,比如一共有 5 类,那么属于第二类就可以用 (0, 1, 0, 0, 0) 去表示,对于分类问题,这样当然特别简单,但是在自然语言处理中,因
2021-06-16 15:50:31
608
原创 CNN实战之手写数字识别
MNIST数据集手写数字识别1.数据集介绍MNIST 包括6万张28x28的训练样本,1万张测试样本,很多教程都会对它”下手”几乎成为一个 “典范”,可以说它就是计算机视觉里面的Hello World。所以我们这里也会使用MNIST来进行实战。前面在介绍卷积神经网络的时候说到过LeNet-5,LeNet-5之所以强大就是因为在当时的环境下将MNIST数据的识别率提高到了99%,这里我们也自己从头搭建一个卷积神经网络,也达到99%的准确率2. 手写数字识别首先,我们定义一些超参数:import t
2021-06-07 18:55:51
554
1
原创 常见的RNN网络
常见的RNN网络于最简单的 RNN,我们可以使用下面两种方式去调用,分别是 torch.nn.RNNCell() 和 torch.nn.RNN(),这两种方式的区别在于 RNNCell() 只能接受序列中单步的输入,且必须传入隐藏状态,而 RNN() 可以接受一个序列的输入,默认会传入全 0 的隐藏状态,也可以自己申明隐藏状态传入。import torchfrom torch.autograd import Variablefrom torch import nnrnn_seq = nn.RN
2021-06-07 17:31:33
994
原创 RNN(一)简介
RNN 简介文章目录RNN 简介1. RNN起因2. 为什么需要RNN3. RNN都能做什么3.1 机器翻译3.2 语音识别3.3 生成图像描述RNN的结构和原理1. RNN起因现实世界中,很多元素都是相互连接的,比如室外的温度是随着气候的变化而周期性的变化的、我们的语言也需要通过上下文的关系来确认所表达的含义。但是机器要做到这一步就相当得难了。因此,就有了现在的循环神经网络,他的本质是:拥有记忆的能力,并且会根据这些记忆的内容来进行推断。因此,他的输出就依赖于当前的输入和记忆。2. 为什么需要RN
2021-06-06 17:55:08
626
原创 深度学习之 数据增强 【附代码】
数据增强文章目录数据增强常用的数据增强方法1.1 随机比例缩放主要使用的是1.2随机位置截取1.3 随机的水平和竖直方向翻转1.3 随机角度旋转1.4 亮度、对比度和颜色的变化前面我们已经讲了几个非常著名的卷积网络的结构,但是单单只靠这些网络并不能取得很好的结果,现实问题往往更加复杂,非常容易出现过拟合的问题,而数据增强的方法是对抗过拟合问题的一个重要方法。2012 年 AlexNet 在 ImageNet 上大获全胜,图片增强方法功不可没,因为有了图片增强,使得训练的数据集比实际数据集多了很多’新’
2021-06-06 15:55:52
5875
4
原创 深度学习(一)优化算法之动量法详解
动量法使用梯度下降法,每次都会朝着目标函数下降最快的方向,这也称为最速下降法。这种更新方法看似非常快,实际上存在一些问题。1. 梯度下降法的问题考虑一个二维输入,[x1,x2][x_1, x_2][x1,x2],输出的损失函数 L:R2→RL: R^2 \rightarrow RL:R2→R,下面是这个函数的等高线:可以想象成一个很扁的漏斗,这样在竖直方向上,梯度就非常大,在水平方向上,梯度就相对较小,所以我们在设置学习率的时候就不能设置太大,为了防止竖直方向上参数更新太过了,这样一个较小的学
2021-06-03 17:13:33
10481
1
原创 深度学习(一)优化算法之随机梯度下降法(SGD)详解
优化算法1.SGD随机梯度下降法:θi+1=θi−η∇L(θ) \theta_{i+1} = \theta_i - \eta \nabla L(\theta)θi+1=θi−η∇L(θ)import numpy as npimport torchfrom torchvision.datasets import MNIST # 导入 pytorch 内置的 mnist 数据from torch.utils.data import DataLoaderfrom torch import nn
2021-06-03 17:06:07
2656
原创 神经网络 参数初始化方法
参数初始化方法文章目录参数初始化方法1. 使用NumPy来初始化2. [Xavier 初始化方法](http://proceedings.mlr.press/v9/glorot10a.html)3.torch.nn.init参数初始化对模型具有较大的影响,不同的初始化方式可能会导致截然不同的结果。PyTorch 的初始化方式并没有那么显然,如果你使用最原始的方式创建模型,那么你需要定义模型中的所有参数,当然这样你可以非常方便地定义每个变量的初始化方式,但是对于复杂的模型,这并不容易,而且我们推崇使用
2021-06-02 19:15:24
869
原创 卷积网络 经典模型(二)GoogLeNet和ResNet
经典网络(二)文章目录经典网络(二)4. GoogLeNet (Inception)5.ResNet退化问题残差网络的解决办法我们该如何选择网络?4. GoogLeNet (Inception)Google Christian Szegedy 论文 - 使用1×1卷积块(NiN)来减少特征数量,这通常被称为“瓶颈”,可以减少深层神经网络的计算负担。 - 每个池化层之前,增加 feature maps,增加每一层的宽度来增多特征的组合性googlenet最大的特点就是包含若干个inception模块,
2021-06-01 21:15:29
3034
原创 卷积网络 经典模型(一)之 AlexNet和VGG
经典模型文章目录经典模型1.LeNet-52. AlexNet3.VGG1.LeNet-51998, Yann LeCun 的 LeNet5卷积神经网路的开山之作,麻雀虽小,但五脏俱全,卷积层、pooling层、全连接层,这些都是现代CNN网络的基本组件 - 用卷积提取空间特征; - 由空间平均得到子样本; - 用 tanh 或 sigmoid 得到非线性; - 用 multi-layer neural network(MLP)作为最终分类器; - 层层之间用稀疏的连接矩阵,以避免大的计算成本。结
2021-06-01 20:25:52
474
原创 深度学习(一)卷积神经网络
卷积神经网络简介文章目录卷积神经网络简介1. 为什么要用卷积神经网络2. 结构组成2.1 卷积层2.2 激活函数2.3 池化层(pooling)2.4 dropout层2.5 全连接层卷积神经网络由一个或多个卷积层和顶端的全连通层(也可以使用1x1的卷积层作为最终的输出)组成一种前馈神经网络。Yann LeCun是卷积神经网络的创始人。2006年后,随着深度学习理论的完善,尤其是计算能力的提升和参数微调(fine-tuning)等技术的出现,卷积神经网络开始快速发展,在结构上不断加深,各类学习和优化理
2021-06-01 18:47:02
756
原创 深度学习(一)深层神经网络的搭建【附实例代码】
深层神经网络文章目录深层神经网络1. MNIST 数据集2. 多分类问题2.1 softmax2.2 交叉熵3. 数据加载4. 搭建网络并训练前面一篇我们简要介绍了神经网络的一些基本知识,同时也是示范了如何用神经网络构建一个复杂的非线性二分类器,更多的情况神经网络适合使用在更加复杂的情况,比如图像分类的问题,下面我们用深度学习的入门级数据集 MNIST 手写体分类来说明一下更深层神经网络的优良表现。1. MNIST 数据集mnist 数据集是一个非常出名的数据集,基本上很多网络都将其作为一个测试的标
2021-06-01 17:49:01
5413
原创 深度学习(一)多层神经网络,nn.Module搭建和保存网络
多层神经网络(nn.Module)文章目录多层神经网络(nn.Module)1. Logistic回归2.神经网络3.nn.Module上节我们讲了神经网络,可以看到使用了激活函数之后,神经网络可以通过改变权重实现任意形状,越是复杂的神经网络能拟合的形状越复杂,可以任意逼近非线性函数,这就是著名的神经网络万有逼近定理。下面用实例来说明神经网络效果更好。import torchimport numpy as npfrom torch import nnimport torch.nn.functi
2021-05-26 18:56:46
1300
原创 深度学习(一)之神经网络
神经网络简介概述在生物神经网络中,每个神经元与其他神经元相连,当它兴奋时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个阈值,那么它就会激活,即兴奋起来并向其他神经元发送化学物质。在深度学习中也借鉴了这样的结构,每一个神经元接受输入xxx,通过带权重www的连接进行传递,将总输入信号与神经元的阈值进行比较,最后通过激活函数处理确定是否激活,并将激活后的计算结果yyy输出,而我们所说的训练,所训练的就是这里面的权重www。神经网络的表示我们可以将神经元拼接起
2021-05-26 15:08:55
910
原创 深度学习最常见的损失函数【整合】
损失函数损失函数(loss function)是用来估量模型的预测值(我们例子中的output)与真实值(例子中的y_train)的不一致程度,它是一个非负实值函数,损失函数越小,模型的鲁棒性就越好。我们训练模型的过程,就是通过不断的迭代计算,使用梯度下降的优化算法,使得损失函数越来越小。损失函数越小就表示算法达到意义上的最优。这里有一个重点:因为PyTorch是使用mini-batch来进行计算的,所以损失函数的计算出来的结果已经对mini-batch取了平均。1.范数1.1 nn.L1Loss
2021-05-24 20:57:58
856
原创 深度学习(一) 之线性模型【附代码详解】
线性模型文章目录线性模型1.深度学习介绍1.1 监督学习和无监督学习1.2 线性回归(Linear Regreesion)1.深度学习介绍1.1 监督学习和无监督学习监督学习、无监督学习、半监督学习、强化学习是我们日常接触到的常见的四个机器学习方法:监督学习:通过已有的训练样本(即已知数据以及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优则表示在某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出。无监督学习:它与监督学习的不同之处,在于我们事先没有任何
2021-05-24 16:52:51
1437
原创 PyTorch 基础 :数据的加载和预处理之Dataset, Dataloader, torchvision
PyTorch 基础 :数据的加载和预处理文章目录PyTorch 基础 :数据的加载和预处理1.Dataset2.Dataloader3.torchvision包3.1 torchvision.datasets3.2 torchvision.models3.3 torchvision.transformsPyTorch通过torch.utils.data对一般常用的数据加载进行了封装,可以很容易地实现多线程数据预读和批量加载。 并且torchvision已经预先实现了常用图像数据集,包括前面使用过的CI
2021-05-23 19:47:54
759
1
原创 PyTorch torch.nn从头开始【详解附代码】
关于 torch.nn文章目录关于 `torch.nn `MNIST 数据下载1. Neural net from scratch (不用torch.nn)2.Using torch.nn.functional3. 使用nn.Module重构4. nn.Linear5. optim6. Dataset6. DataLoader7. Add validation8. fit() and get_data()9. Switch to CNN10. nn.Sequential11. 包装DataLoaderUs
2021-05-23 19:29:25
529
1
原创 PyTorch 如何从头开始训练分类器【附完整代码】
训练分类器1.数据处理通常,我们会遇到处理图像,文本,音频或视频数据时,可以使用Python标准包将数据加载到 NumPy 数组中。 然后,您可以将该数组转换为torch.*Tensor格式的数据。对于图像,Pillow,OpenCV 包对于音频,使用 SciPy 和 librosa 等包对于文本,基于 Python 或 Cython 的原始加载,或者 NLTK 和 SpaCy另外,pytorch针对视觉,还创建了一个torchvision的包,其中包含常见的数据集集(例如Imagenet,
2021-05-22 19:15:44
1606
原创 PyTorch 搭建一个简单的神经网络【详细附代码】
神经网络(Neural Network --nn)可以使用torch.nn包来构建神经网络。之前已经介绍了autograd包,nn包则依赖于autograd包来定义模型并对它们求导。nn.Module包含层,以及返回output的方法forward(input)。例如:一个数图像识别这是一个简单的前馈神经网络(feed-forward network)。它接受一个输入,然后将它送入下一层,一层接一层的传递,最后给出输出.1. 一个神经网络的训练过程如下:定义包含一些可学习参数(或权重)的神经网
2021-05-22 16:57:41
5377
2
原创 PyToch 张量乘法之torch.mm(),torch.matmul(),torch.mul() ,torch.bmm() 的区别
torch.mm() torch.matmul() torch.mul() torch.bmm() 的区别1.torch.mul()Hadamard product(哈达玛积)或者 element-wise product,按元素相乘,可以广播。torch.mul(input,other,out=None)该函数处理两种情况:input是矩阵/向量,other是标量这个时候是就是input的所有元素乘上other。nput是矩阵/向量,other是矩阵/向量,这时候对位相乘,可以广播。
2021-05-21 17:41:29
616
原创 PyTorch 数据在CPU和GPU之间转换
PyTorch-GPU加速(数据在CPU与GPU上的相互转换)文章目录PyTorch-GPU加速(数据在CPU与GPU上的相互转换)1. 安装GPU2. Tensor放在GPU上2.1 可以使用以下两种方式将 Tensor 放到 GPU 上2.2 在实际训练时,一般需要把数据,网络,与损失函数转换到GPU上:3. 在更新了的版本中:在进行深度学习开发时,GPU加速可以提升我们开发的效率。PyTorch要先指定数据位置,即是放在GPU上面还是CPU上面。1. 安装GPU使用GPU之前我需要安装PyTo
2021-05-20 10:29:09
16248
5
原创 PyTorch Variable与Tensor 【详解】
Variable 与 Tensortensor 是 PyTorch 中的完美组件,高效的数据格式,但是构建神经网络还远远不够,我们需要能够构建计算图的 tensor,这就是 Variable。Variable 是对 tensor 的封装,操作和 tensor 是一样的,但是每个 Variabel都有三个属性,Variable 中的 tensor本身.data,对应 tensor 的梯度.grad以及这个 Variable 是通过什么方式得到的.grad_fn,是由什么函数得到的张量,如果是自己创建的,则维
2021-05-19 20:51:51
3844
2
原创 PyTorch 自动求导机制【附示例代码】
Pytorch 自动求导机制文章目录Pytorch 自动求导机制1. 简单的自动求导(输出是1维)2. 多维数组的自动求导(输出是多维)3. 多次自动求导自动求导是 PyTorch 中非常重要的特性,能够让我们避免手动去计算非常复杂的导数,这能够极大地减少了我们构建模型的时间。每个Tensor都有个标志:requires_grad,它都允许从梯度计算中精细地排除子图,并可以提高效率。requires_grad=True 要求梯度requires_grad=False 不要求梯度什么是排除
2021-05-19 18:37:44
3543
1
原创 PyTorch Tensor(三)Tensor常见运算
Tensor运算1.算术运算1.1 torch.abs()将参数传递到torch.abs后返回输入参数的绝对值作为输出,输出参数必须是一个Tensor数据类型的变量。import torchx = torch.randn(3,3)print(x)y = torch.abs(x)print(y)tensor([[-1.0108, 0.3079, 0.4085], [-0.3317, 0.1803, -0.4838], [ 0.8184, -1.233
2021-05-18 18:14:23
758
原创 PyTorch Tensor(二) 常见命令
Tensor常见命令1.创建操作1.1 torch.eye返回一个2维张量,对角线位置全1,其它位置全0,返回值类型Tensortorch.eye(n, m=None, out=None)参数:n (int ) – 行数m (int, optional) – 列数.如果为None,则默认为nout (Tensor, optinal) - Output tensortorch.eye(3)tensor([[1., 0., 0.], [0., 1., 0.],
2021-05-17 20:54:10
307
原创 PyTorch Tensor(一)【附代码】
PyTorch Tensor 介绍目录Tensor1.Tensor Shape(形状)2. Tensor Constructor(创建、初始化)3.Tensor Operators(简单操作)3.1 改变形状3.2算术运算4. 索引(类似numpy)5. Broadcasting(类似numpy)6.Tensor 和Numpy之间相互转换1.Tensor Shape2. Tensor Constructorimport torch...
2021-05-17 17:23:54
335
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人