Pytorch
CC‘s World
这个作者很懒,什么都没留下…
展开
-
【Pytorch】LSTM在自然语言处理中的应用
以词性标注为例# 输入数据封装成Variabledef prepare_sequence(seq, to_ix): idxs = [to_ix[w] for w in seq] tensor = torch.LongTensor(idxs) return autograd.Variable(tensor)# 输入数据格式,单个的词和对应的词性training_data = [ ("The dog ate the apple".split(), ["DET", "NN", "V", "DET原创 2021-02-15 13:35:45 · 652 阅读 · 0 评论 -
【Pytorch】自编码器
自编码器最初被提出用于高维复杂数据的降维。自编码器是一种无监督学习算法,使用反向传播,训练目标是让目标值等于输入值。自编码器的结构如下:输入 -> 编码器 -> 嵌入 -> 解码器 -> 输出输入数据经过编码压缩得到低维度向量,这个部分称为编码器,因为它产生了低维度嵌入或编码。网络的第二部分不同于在前向神经网络中把嵌入映射为输出标签,而是把编码器逆化,重建原始输入,这个部分称为解码器。自编码器是无监督学习方法,目标输出就是其输入。能够用于数据压缩和恢复,还可以用于数据的去噪。原创 2021-02-09 11:58:31 · 608 阅读 · 0 评论 -
【Pytorch】PCA的Pytorch实现
from sklearn import datasetsimport torchimport numpy as npdef PCA(data, k=2): X = torch.from_numpy(data) X_mean = torch.mean(X, 0) X = X - X_mean.expand_as(X) U, S, V = torch.svd(torch.t(X)) # U*Diag(S)*V_T return torch.mm(X, U[:,:,k])iris = d原创 2021-02-06 22:39:57 · 4749 阅读 · 1 评论 -
【Pytorch】MNIST数据集上卷积神经网络的实现
1.配置库和配置参数import torchimport torch.nn as nnimport torchvision.datasets as dsetsimport torchvision.transforms as transforms from torch.autograd import Variable# 配置参数torch.manual_seed(1) #设置随机数种子,确保结果可重复input_size = 784hidden_size = 500num_classes原创 2021-02-06 22:29:26 · 595 阅读 · 1 评论 -
【Pytorch】 迁移学习
随着深度神经网络越来越强大,监督学习下的很多场景能够很好的解决,比如在图像、语音、文本的场景下,能够非常准确地学习从大量的有标签的数据中输入到输出的映射。但是这种在特定环境下模型仍旧缺乏泛化到不同于训练环境的能力。当将训练的模型用到现实场景,而不是特地构建的数据集的时候,模型的性能大打折扣。这是因为现实的场景是混乱的,并且包含大量全新的场景,尤其很多是模型在训练的时候未曾遇到的,这使得模型做不出好的预测。同时,存在大量这样的情况,以语音识别为例,一些小语种的训练数据过小,而深度神经网络又需要大量的数据。可以原创 2020-05-12 20:44:29 · 263 阅读 · 0 评论 -
【Pytorch】 Pytorch实例:基于词向量的语言模型实现
在Pytorch中,词嵌入使用函数nn.Embedding,embedding常用的只有两个参数:num_embeddings:用于词嵌入的字典大小embedding_dim:词嵌入的维度词嵌入的简单使用例子如下:import torch import torch.nn as nnimport torch.aurtograd as aotugradword_to_idx = {"hello":0, "pytorch":1}embeds = nn.Embedding(2,5) # 2原创 2020-05-12 13:05:36 · 1034 阅读 · 1 评论 -
【Pytorch】 Pytorch实例:深度神经网络实现
本篇使用Pytorch实现一个简单的深度神经网络,使用的数据集是MNIST。1.配置库和配置参数import torchimport torch.nn as nnimport torchvision.datasets as dsetsimport torchvision.transforms as transforms from torch.autograd import Variable# 配置参数torch.manual_seed(1) #设置随机数种子,确保结果可重复input_s原创 2020-05-12 11:42:17 · 1796 阅读 · 0 评论 -
【机器学习】正则化
正则化项是损失函数的附加标准,以确保不会过度拟合。这样做的目的是:权重不应该过大,如果权重太大,特征上小小的变化就会引起预测较大的改变;也不希望给某个特征过大的权重,因为如果它有太大的权重,就会有很大的影响,其他的特征就起不到应有的作用;我们也希望无用的特征其权重为0.正则化项有多种计算方式:L1正则:绝对值求和L2正则:平方和区别在于:平方和权重给予较大值更多的惩罚p-范数:p次方...原创 2020-04-06 18:20:11 · 308 阅读 · 0 评论 -
【Pytorch】 梯度下降
神经网络在层数较多的网络模型训练的时候很容易出问题,除了计算资源不足和带标注的训练数据因素引起的问题外,还表现出两个重大的问题:梯度消失和梯度爆炸。如果存在梯度消失问题,根据反向传播算法原理,接近输出的隐藏层的权值更新相对正常;在反方向上,权值更新越来越不明显,以此类推,接近输入层的隐藏层的权值更新几乎消失,导致经过很多次训练后,仍然接近初始化的权值,这样导致接近输入层的隐藏层相当于只对输入做了同一映射,那么整个神经网络相对于不包括这一隐藏层的神经网络。其实梯度爆炸和梯度消失问题都是因为网络层数太深、权值原创 2020-05-12 10:20:11 · 521 阅读 · 0 评论 -
【Pytorch】 Pytorch实例:单层神经网络实现
一般神经网络的训练包括几个重要的步骤,数据准备、初始化权重、激活函数、前向计算、损失函数、计算损失、反向计算、更新参数,直到收敛或达到终止条件。本篇介绍神经网络在iris数据集上完成多分类的任务。程序头引入必要的包import torchimport torch.nn.functional as Ffrom sklearn.datasets import load_irisfrom torch.autograd import Variablefrom torch.optim import S原创 2020-05-12 08:59:33 · 1778 阅读 · 0 评论 -
【Pytorch】数据的准备
Pytorch中提供了torch.utils.data.Dataset对数据进行封装,是所有要加载数据集的父类。在定义Dataset的子类时,必须重载两个函数: _len_ 和 _getitem_。其中, _len_返回数据集的大小,_getitem_实现数据集的下标索引,返回对应的图像和标记。在创建DataLoader时会判断_getitem_返回值的数据类型,然后用不同的分支把数据转换成相应的张量。因此,_getitem_返回值的数据类型可选择范围很多,一种可以选择的数据类型是图像为numpy.ar原创 2020-05-12 08:31:52 · 186 阅读 · 0 评论 -
【Pytorch】反向传播算法
前向算法中,需要w参与运算,w是网络中各个连接上的权重,这个值需要在训练中确定,在传统的机器学习方法中,可以通过梯度下降来确定权重的调整。在多层感知机中获得隐藏层的权重是困难的,我们能做的是计算输出层的误差更新参数。虽然无法直接获得隐藏层的权值,但是我们知道在权重变化后相应的输出误差的变化。预测值和真实值之间的差别可以评估输出层的误差,然后根据输出层的误差,计算最后一个隐藏层中的每个神经元对输出层误差影响了多少,最后一层隐藏层的误差又由前一层的隐藏层的计算得出。如此类推,直到输入层,这就是反向传播算法的思想原创 2020-05-11 23:06:23 · 601 阅读 · 0 评论 -
【Pytorch】Pytorch基础知识
【Tensor】Tensor是Pytorch中的基本对象,意思为张量,表示多维的矩阵,是Pytorch中的基本操作对象之一,Tensor与Numpy的array可以进行相互啊转换,转换函数为:# torch -> numpy:y = x.numpy()# numpy -> torch:x = y.torch.from_numpy()【Variable】Variable...原创 2020-04-28 18:33:03 · 370 阅读 · 0 评论