torch

torchtext的使用方法

半腔热情 提交于 2020-12-19 12:26:26
torchtext包含以下组件 Field :主要包含以下数据预处理的配置信息,比如指定分词方法,是否转成小写,起始字符,结束字符,补全字符以及词典等等 Dataset :继承自pytorch的Dataset,用于加载数据,提供了TabularDataset可以指点路径,格式,Field信息就可以方便的完成数据加载。同时torchtext还提供预先构建的常用数据集的Dataset对象,可以直接加载使用,splits方法可以同时加载训练集,验证集和测试集。 Iterator : 主要是数据输出的模型的迭代器,可以支持batch定制。 Field Field 包含一写文本处理的通用参数的设置,同时还包含一个词典对象,可以把文本数据表示成数字类型,进而可以把文本表示成需要的tensor类型 以下是Field对象包含的参数: sequential: 是否把数据表示成序列,如果是False, 不能使用分词 默认值: True. use_vocab: 是否使用词典对象. 如果是False 数据的类型必须已经是数值类型. 默认值: True. init_token: 每一条数据的起始字符 默认值: None. eos_token: 每条数据的结尾字符 默认值: None. fix_length: 修改每条数据的长度为该值,不够的用pad_token补全. 默认值: None. tensor

从文本分类来看图卷积神经网络

隐身守侯 提交于 2020-12-19 10:04:26
https://zhuanlan.zhihu.com/p/112477513 ​ “ 图神经网络火了这么久,是时候掌握它了。 ” 本文包括以下内容,阅读时间10min 图神经网络是什么意思 文本如何构建图 图卷积神经网络 源代码实现 图卷积神经网络最新进展 本文阅读基础 神经网络基础 本文不包含拉普拉斯矩阵的数学推导 01“图神经网络”是什么 过去几年,神经网络在机器学习领域大行其道。比如说卷积神经网络(CNN)在图像识别领域的成功以及循环神经网络(LSTM)在文本识别领域的成功。对于 图像 来说,计算机将其量化为多维矩阵;对于 文本 来说,通过词嵌入(word embedding)的方法也可以将文档句子量化为规则的矩阵表示。以神经网络为代表的深度学习技术在这些规范化的数据上应用的比较成功。但是现实生活中还存在很多不规则的 以图的形式存在的数据 。比如说社交关系图谱中人与人之间的连接关系,又比如说电子商务系统中的人与货物的关系等等,这些数据结构像下面这样: 演员-电影 关系位于neo4j的图数据 图神经网络 (Graph Neural Network, GNN)是指神经网络在图上应用的模型的统称,图神经网络有五大类别:分别是:图卷积网络(Graph Convolution Networks,GCN)、 图注意力网络(Graph Attention Networks)、图自编码器(

Pytorch: list, numpy. Tensor 格式转化 (附 only one element tensors can be converted to Python scalars 解决)

蓝咒 提交于 2020-12-16 13:55:49
Pytorch :list, numpy.array, torch.Tensor 格式相互转化 同时解决 ValueError:only one element tensors can be converted to Python scalars 问题 torch.Tensor 转 numpy ndarray = tensor.numpy() 如果是在 gpu,命令如下 ndarray = tensor.cpu().numpy() # 这是因为 gpu上的 tensor 不能直接转为 numpy numpy 转 torch.Tensor tensor = torch.from_numpy(ndarray) list 转 torch.Tensor tensor=torch.Tensor(list) 注意:有时,上面操作会出现报错: ValueError:only one element tensors can be converted to Python scalars 原因是:要转换的list里面的元素包含多维的tensor。 在 gpu 上的解决方法是: val= torch.tensor([item.cpu().detach().numpy() for item in val]).cuda() # 这是因为 gpu上的 tensor 不能直接转为 numpy; 需要先在 cpu

pytorch中的torch.nn.Unfold和torch.nn.Fold

送分小仙女□ 提交于 2020-12-16 13:46:15
1. torch.nn.Unfold(kernel_size, dilation=1, padding=0, stride=1) torch.nn.Unfold按照官方的说法,既从一个batch的样本中,提取出滑动的局部区域块,也就是卷积操作中的提取kernel filter对应的滑动窗口。 1)由上可知,torch.nn.Unfold的参数跟nn.Conv2d的参数很相似,即,kernel_size(卷积核的尺寸),dilation(空洞大小),padding(填充大小)和stride(步长)。 2)官方解释中:unfold的输入为( N, C, H, W),其中N为batch_size,C是channel个数,H和W分别是channel的长宽。则unfold的输出为( N, C × π ( k e r n e l _ s i z e ) C\times\pi (kernel\_size) C × π ( k e r n e l _ s i z e ) , L),其中 π ( k e r n e l _ s i z e ) \pi (kernel \_size) π ( k e r n e l _ s i z e ) 为kernel_size长和宽的乘积, L是channel的长宽根据kernel_size的长宽滑动裁剪后,得到的区块的数量。 3)例如:输入(1, 2, 4, 4

unexpected EOF, expected 455433 more bytes. The file might be corrupted.解决方案

落爺英雄遲暮 提交于 2020-12-16 04:25:26
unexpected EOF, expected 455433 more bytes. The file might be corrupted.不完美解决方案 在下载pytorch的预训练模型权重的时候,如果网络不稳定导致权重下载到一半中断,这时候如果我们不把损坏的权重文件删除,就会报unexpected EOF, expected xxxxxx more bytes. The file might be corrupted。 常规解决步骤: 找到权重文件,将权重文件删除 重新下载 我在网上查到的解决方案基本都围绕上面两个步骤,然而我找不到pytorch的权重文件!网上说一般在路径 \home\用户名\.cache\torch 中,然而我打开.cache文件夹是这样的 这里要注意一下,.cache是个隐藏文件夹,在winSCP中按 ctrl+Alt+H 才会显示。 最终解决方案 1. 在torch.hub.load_state_dict_from_url中指定权重保存路径。 一般我们下载pytorch的预训练权重都是用torch文件夹中,hub.py文件里的 load_state_dict_from_url(url, model_dir=None, map_location=None, progress=True, check_hash=False) 函数,查看函数定义我们发现

[Tensorflow] TensorFlow之Hello World!(1)

ぃ、小莉子 提交于 2020-12-04 08:26:59
哇!今天挺开心的,30天的时间,19篇文章,2459人阅读,5313人次阅读!今天开通的原创标识,恩!除了激动,就是非常感谢大家的支持! 感谢大家的支持! 大家的支持! 的 支持! 支持! 持!我会继续努力的!我们一起进步!(./鞠躬!) ***** ** *** *** *****分割线 ********** *** ** *** 在学习TensorFlow之前,先给大家安利一波其他的几个库,主要有caffe,CNTK,keras,Theano,Torch,MaxNet。 总的来说,Caffe,CNTK这类是基于配置文件来定义模型,而Torch,Theano,Keras,TensorFlow是基于语言来定义模型。其中Torch是基于lua,一个比较小众的语言,不过也有了Python版。基于Python的有Theano,TensorFlow,Keras。Theano是和TensorFlow最像的一个,应该说TensorFlow是受到了Theano的启发而开发的,他们都是利用了tensor张量的思想。但是Theano是由LISA lab基于学术目的而开发的一套底层算法库,而TensorFlow是由google支持的。他俩主要区别还在于TensorFlow支持分布式编程。 下面有些网址可能打不开,这不是说链接无效~,而是需要“翻墙”,我觉得肯定有人不知道怎么办,就像我刚听说的时候

torch nll_loss

不想你离开。 提交于 2020-11-28 13:29:22
正确格式: 1. data:3,3,3,2 label:3,3,2 2.data:3:2 label:2 3.data:2,1,6 label:2,6 Traceback (most recent call last): torch.Size([3, 3, 3, 2]) torch.Size([3, 2]) File "F:/project/chedaoxian/Ultra-Fast-bar-Detection/utils/loss.py", line 91, in <module> out_size, target.size())) ValueError: Expected target size (3, 3, 2), got torch.Size([3, 2]) data维度 [2,6] label维度[2],这样才可以,增加维度就报错。 如果data是[2,1,6] label就需要是[2,6] import torch import torch.nn as nn import torch.nn.functional as F data = torch.randn(2,6) target = torch.tensor([1,2]) print('data:', data.size(),target.size()) entropy_out = F.cross_entropy

torch same padding

醉酒当歌 提交于 2020-11-27 09:04:38
CNN中,增加Padding过后,为我们带来的那些负面影响。 如上图所示: 第一行为普通3x3卷积,步长1,padding 0, 第二行为普通3x3卷积,步长1,padding 1, 第三行为膨胀3x3卷积,dilation rate=3,步长1,padding 3. 上图箭头右向所指,为cnn底层在caffe 和darknet的底层实现,用c或c++,至于pytorch和tensorflow 是否也是这样实现cnn我不清楚,但是目前来讲,有效实现卷积的也就3种方式, im2col(上图) ,winograd, FFT,但是还是im2col比较常见,winograd好像是商汤最近几年提出来的,通过特殊数学计算方式,减少计算量,目前该方法被应用在腾讯移动端深度学习框架NCNN中,至于FFT,还没见到用在深度学习种。 至于为什么使用im2col,这还是贾清扬大神在写caffe时提出来的,因为图像中,一个块内的像素点在内存中是地址不连续的,所以对于同一个块内的像素想要缓存到cache上,可能出现多次内存访问,效率极低,所以设计出im2co方式,提前将需要计算的像素点放在连续地址上。 因此,对于同一图像,除了原始图像在内存中占空间,使用im2col又会消耗另一份空间。 如上图所示,对于8x8的图像: 不加padding,计算量为9x36=324, 内存消耗为8x8=64,有效内存为64

10分钟入门pytorch(0)

十年热恋 提交于 2020-11-24 09:55:58
10分钟入门pytorch(0) 我将我学习pytorch的经验写出来,一步一步从0开始让大家学会pytorch,教程比官网的更加简单,同时也增加了更多简单的例子让大家快速上手pytorch,愉快地开始炼丹。 什么?你还不知道pytorch是啥,快点去看看专栏里面的pytorch介绍吧。 1 环境配置 首先当然是需要安装pytorch了,目前pytorch只支持mac和linux,如果你的电脑是windows,装虚拟机或者双系统。如果想要愉快地炼丹,那么强烈推荐使用linux系统,因为所有的深度学习框架在linux上都有很好的支持,远远好于windows系统,而且linux也没有大家想象中的那么难学,目前linux系统的图形界面让大家上手的时候更加容易。 装完了系统之后就需要安装环境了,首推Anaconda,这是一个科学计算的集成环境,安装完这之后基本所需要的包都有了,而且还提供交互式的jupyter notebook,可以说为我们做实验提供了很好的交互。如果去Anaconda的官网下载速度比较慢,可以去清华镜像下载。 安装完Anaconda之后我们就可以安装pytorch了,进入主页,一步一步来就行了,如果要装GPU版的,需要cuda和cudnn,这个网上有很多教程,可以去看看,如果你只是为了快速上手玩玩pytorch,那么可以不用废时间装GPU版。 2 pytorch基础

mmdetection源码解读(二)

五迷三道 提交于 2020-11-21 05:52:26
  一:关于Python修饰符@property和装饰器(decorator)等的解释和用法   二:mmdetection/mmdet/core/fp16/utils.py   from collections import abc   import numpy as np   import torch   def cast_tensor_type(inputs, src_type, dst_type):   if isinstance(inputs, torch.Tensor):   return inputs.to(dst_type)   elif isinstance(inputs, str):   return inputs   elif isinstance(inputs, np.ndarray):   return inputs   elif isinstance(inputs, abc.Mapping):   return type(inputs)({   k: cast_tensor_type(v, src_type, dst_type)   for k, v in inputs.items()   })   elif isinstance(inputs, abc.Iterable):   return type(inputs)(   cast_tensor