深度学习
文章平均质量分 87
AutoFerry
这个作者很懒,什么都没留下…
展开
-
RNN 自然语言处理(三)LSTM实例
LSTM 做词性预测文章目录LSTM 做词性预测1. 模型介绍2. 字符编码3.构建模型1. 模型介绍对于一个单词,会有这不同的词性,首先能够根据一个单词的后缀来初步判断,比如 -ly 这种后缀,很大概率是一个副词,除此之外,一个相同的单词可以表示两种不同的词性,比如 book 既可以表示名词,也可以表示动词,所以到底这个词是什么词性需要结合前后文来具体判断。根据这个问题,我们可以使用 lstm 模型来进行预测,首先对于一个单词,可以将其看作一个序列,比如 apple 是由 a p p l e 这原创 2021-06-17 10:28:38 · 831 阅读 · 0 评论 -
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 · 514 阅读 · 0 评论 -
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 · 621 阅读 · 0 评论 -
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 · 556 阅读 · 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 · 996 阅读 · 0 评论 -
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 · 627 阅读 · 0 评论 -
深度学习之 数据增强 【附代码】
数据增强文章目录数据增强常用的数据增强方法1.1 随机比例缩放主要使用的是1.2随机位置截取1.3 随机的水平和竖直方向翻转1.3 随机角度旋转1.4 亮度、对比度和颜色的变化前面我们已经讲了几个非常著名的卷积网络的结构,但是单单只靠这些网络并不能取得很好的结果,现实问题往往更加复杂,非常容易出现过拟合的问题,而数据增强的方法是对抗过拟合问题的一个重要方法。2012 年 AlexNet 在 ImageNet 上大获全胜,图片增强方法功不可没,因为有了图片增强,使得训练的数据集比实际数据集多了很多’新’原创 2021-06-06 15:55:52 · 5964 阅读 · 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 · 10613 阅读 · 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 · 2662 阅读 · 0 评论 -
神经网络 参数初始化方法
参数初始化方法文章目录参数初始化方法1. 使用NumPy来初始化2. [Xavier 初始化方法](http://proceedings.mlr.press/v9/glorot10a.html)3.torch.nn.init参数初始化对模型具有较大的影响,不同的初始化方式可能会导致截然不同的结果。PyTorch 的初始化方式并没有那么显然,如果你使用最原始的方式创建模型,那么你需要定义模型中的所有参数,当然这样你可以非常方便地定义每个变量的初始化方式,但是对于复杂的模型,这并不容易,而且我们推崇使用原创 2021-06-02 19:15:24 · 879 阅读 · 0 评论 -
卷积网络 经典模型(二)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 · 3053 阅读 · 0 评论 -
卷积网络 经典模型(一)之 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 · 481 阅读 · 0 评论 -
深度学习(一)卷积神经网络
卷积神经网络简介文章目录卷积神经网络简介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 · 777 阅读 · 0 评论 -
深度学习(一)深层神经网络的搭建【附实例代码】
深层神经网络文章目录深层神经网络1. MNIST 数据集2. 多分类问题2.1 softmax2.2 交叉熵3. 数据加载4. 搭建网络并训练前面一篇我们简要介绍了神经网络的一些基本知识,同时也是示范了如何用神经网络构建一个复杂的非线性二分类器,更多的情况神经网络适合使用在更加复杂的情况,比如图像分类的问题,下面我们用深度学习的入门级数据集 MNIST 手写体分类来说明一下更深层神经网络的优良表现。1. MNIST 数据集mnist 数据集是一个非常出名的数据集,基本上很多网络都将其作为一个测试的标原创 2021-06-01 17:49:01 · 5472 阅读 · 0 评论 -
深度学习(一)多层神经网络,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 · 1314 阅读 · 0 评论 -
深度学习(一)之神经网络
神经网络简介概述在生物神经网络中,每个神经元与其他神经元相连,当它兴奋时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个阈值,那么它就会激活,即兴奋起来并向其他神经元发送化学物质。在深度学习中也借鉴了这样的结构,每一个神经元接受输入xxx,通过带权重www的连接进行传递,将总输入信号与神经元的阈值进行比较,最后通过激活函数处理确定是否激活,并将激活后的计算结果yyy输出,而我们所说的训练,所训练的就是这里面的权重www。神经网络的表示我们可以将神经元拼接起原创 2021-05-26 15:08:55 · 941 阅读 · 0 评论 -
深度学习最常见的损失函数【整合】
损失函数损失函数(loss function)是用来估量模型的预测值(我们例子中的output)与真实值(例子中的y_train)的不一致程度,它是一个非负实值函数,损失函数越小,模型的鲁棒性就越好。我们训练模型的过程,就是通过不断的迭代计算,使用梯度下降的优化算法,使得损失函数越来越小。损失函数越小就表示算法达到意义上的最优。这里有一个重点:因为PyTorch是使用mini-batch来进行计算的,所以损失函数的计算出来的结果已经对mini-batch取了平均。1.范数1.1 nn.L1Loss原创 2021-05-24 20:57:58 · 867 阅读 · 0 评论 -
深度学习(一) 之线性模型【附代码详解】
线性模型文章目录线性模型1.深度学习介绍1.1 监督学习和无监督学习1.2 线性回归(Linear Regreesion)1.深度学习介绍1.1 监督学习和无监督学习监督学习、无监督学习、半监督学习、强化学习是我们日常接触到的常见的四个机器学习方法:监督学习:通过已有的训练样本(即已知数据以及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优则表示在某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出。无监督学习:它与监督学习的不同之处,在于我们事先没有任何原创 2021-05-24 16:52:51 · 1476 阅读 · 0 评论 -
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 · 308 阅读 · 0 评论