torch

pytorch torch.nn 实现上采样——nn.Upsample

心不动则不痛 提交于 2020-08-20 08:42:15
Vision layers 1)Upsample CLASS torch.nn.Upsample(size=None, scale_factor=None, mode='nearest', align_corners=None) 上采样一个给定的多通道的 1D (temporal,如向量数据), 2D (spatial,如jpg、png等图像数据) or 3D (volumetric,如点云数据)数据 假设输入数据的格式为minibatch x channels x [optional depth] x [optional height] x width。因此对于一个空间spatial输入,我们期待着4D张量的输入,即minibatch x channels x height x width。而对于体积volumetric输入,我们则期待着5D张量的输入,即minibatch x channels x depth x height x width 对于上采样有效的算法分别有对 3D, 4D和 5D 张量输入起作用的 最近邻、线性,、双线性, 双三次(bicubic)和三线性(trilinear)插值算法 你可以给定scale_factor来指定输出为输入的scale_factor倍或直接使用参数size指定目标输出的大小(但是不能同时制定两个) 参数: size ( int or

写给程序员的机器学习入门 (七)

﹥>﹥吖頭↗ 提交于 2020-08-20 07:48:55
这一篇将会介绍什么是双向递归模型和如何使用双向递归模型实现根据上下文补全句子中的单词。 双向递归模型 到这里为止我们看到的例子都是按原有顺序把输入传给递归模型的,例如传递第一天股价会返回根据第一天股价预测的涨跌,再传递第二天股价会返回根据第一天股价和第二天股价预测的涨跌,以此类推,这样的模型也称单向递归模型。如果我们要根据句子的一部分预测下一个单词,可以像下图这样做,这时 天气 会根据 今天 计算, 很好 会根据 今天 和 天气 计算: 那么如果想要预测在句子中间的单词呢?例如给出 今天 和 很好 预测 天气 ,因为只能根据前面的单词预测,单向递归模型的效果会打折,这时候双向递归模型就派上用场了。双向递归模型 (BRNN, Bidirectional Recurrent Neural Network) 会先按原有顺序把输入传给递归模型,然后再按反向顺序把输入传给递归模型,然后合并正向输出和反向输出。如下图所示, hf 代表正向输出, hb 代表反向输出,把它们合并到一块就可以实现根据上下文预测中间的内容, 今天 会根据反向的 天气 和 很好 计算, 天气 会根据正向的 今天 和反向的 很好 计算, 很好 会根据正向的 今天 和 天气 计算。 在 pytorch 中使用双向递归模型非常简单,只要在创建的时候传入参数 bidirectional = True 即可: self.rnn

pytorch预训练模型的下载地址以及解决下载速度慢的方法

坚强是说给别人听的谎言 提交于 2020-08-19 19:10:27
pytorch快速加载预训练模型参数的方式 https://github.com/pytorch/vision/tree/master/torchvision/models 常用预训练模型在这里面 总结下各种模型的下载地址: 1 Resnet: 2 3 model_urls = { 4 ' resnet18 ' : ' https://download.pytorch.org/models/resnet18-5c106cde.pth ' , 5 ' resnet34 ' : ' https://download.pytorch.org/models/resnet34-333f7ec4.pth ' , 6 ' resnet50 ' : ' https://download.pytorch.org/models/resnet50-19c8e357.pth ' , 7 ' resnet101 ' : ' https://download.pytorch.org/models/resnet101-5d3b4d8f.pth ' , 8 ' resnet152 ' : ' https://download.pytorch.org/models/resnet152-b121ed2d.pth ' , 9 } 10 11 inception: 12 13 model_urls = { 14 #

经典对抗攻击Deepfool原理详解与代码解读

荒凉一梦 提交于 2020-08-19 17:28:18
©PaperWeekly 原创 · 作者|孙裕道 学校|北京邮电大学博士生 研究方向|GAN图像生成、情绪对抗样本生成 论文标题: DeepFool: a simple and accurate method to fool deep neural networks 论文链接: https://arxiv.org/abs/1511.04599 引言 Deepfool 是一种经典的对抗攻击方式,它首次对样本鲁棒性和模型鲁棒性镜进行了定义,并且它可以精确计算深度分类器对大规模数据集扰动,从而可靠地量化分类器的鲁棒性。该论文通俗易懂,并且有大量细节丰富的图示,有高中的代数知识基本上就能看懂算法的核心原理。本文会对 Deepfool 算法的原理进行详解,最后一部分是对 Deepfool 核心代码的解读。 论文的贡献 本文的贡献可以归结如下三点: 作者提出了一种新的计算对抗样本的方法 DeepFool,该方法是基于梯度迭代方法中生成扰动最小的,并且能有较高的攻击准确率。 作者用对抗样本增加训练数据,显著提高模型对对抗扰动的鲁棒性,该部分贡献对抗训练的前期研究。 作者分析了 FGSM 算法来验证分类器的鲁棒性的不合理性,并提出该算法会过分的评估分类器的鲁棒性,并定义了什么是样本鲁棒性,什么是模型的鲁棒性。 模型介绍 3.1 鲁棒性定义 给定一个分类器,样本鲁棒性是使得模型出现误分类的最小扰动

PyTorch 安装(CUDA 是8.0以下旧版本,如何安装 pytorch?)

混江龙づ霸主 提交于 2020-08-19 13:03:28
PyTorch 官方安装命令合集 最近刚刚来到新的单位,分配了新的服务器。发现没有安装 pytorch,于是乎开始安装。 安装PyTorch正常方法 CUDA 低于 8.0 肿么办 附录 安装PyTorch正常方法 首先,先看看自己的 anaconda 里 Python 是什么版本的。 直接输入指令: $ python Python 3.6.10 |Anaconda, Inc.| (default, May 8 2020, 02:54:21) [GCC 7.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. 再检查自己的 cuda 版本 : $ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2016 NVIDIA Corporation Built on Tue_Jan_10_13:22:03_CST_2017 Cuda compilation tools, release 8.0, V8.0.61 最后,去官网查看指令: https://pytorch.org/ 进入官网,点击 ,进入下面界面: 根据自己的配置,选择相应指令。 CUDA 低于 8.0 肿么办 这时,我发现

【pytorch】关于Embedding和GRU、LSTM的使用详解

北城以北 提交于 2020-08-19 09:52:32
1. Embedding的使用 pytorch中实现了Embedding,下面是关于Embedding的使用。 torch.nn包下的Embedding,作为 训练的一层 ,随模型训练得到适合的词向量。 建立词向量层 embed = torch.nn.Embedding(n_vocabulary,embedding_size) 找到对应的词向量放进网络:词向量的输入应该是什么样子 实际上,上面通过 随机初始化 建立了词向量层后,建立了一个“二维表”,存储了词典中每个词的词向量。每个mini-batch的训练,都要从词向量表找到mini-batch对应的单词的词向量作为RNN的输入放进网络。那么怎么把mini-batch中的每个句子的所有单词的词向量找出来放进网络呢,输入是什么样子,输出是什么样子? 首先我们知道肯定先要建立一个词典,建立词典的时候都会建立一个dict:word2id:存储 单词到词典序号的映射 。假设一个mini-batch如下所示: ['I am a boy.','How are you?','I am very lucky.'] 显然,这个mini-batch有3个句子,即 batch_size=3 第一步首先要做的是:将句子标准化,所谓标准化,指的是:大写转小写,标点分离,这部分很简单就略过。经处理后,mini-batch变为: [['i','am','a',