pytorch张量数据类型入门
1、对于pytorch的深度学习框架,其基本的数据类型属于张量数据类型,即Tensor数据类型,对于python里面的int,float,int array,flaot array对应于pytorch里面即在前面加一个Tensor即可——intTensor ,Float tensor,IntTensor of size [d1,d2...], FloatTensor of size[d1,d2,...]
2、对于pytorch,并不能表示string类型的数据类型,一般情况下,可以将其数据分类的string结果进行编码表示,将其编码为一个向量的数据类型[d1,d2...dn],这个方法将其称为One-hot的编码表示方法。其中,n为数据分类结果的类别数目,即表示向量的总长度。例如:对于数据进行分类的时候,其实现的功能是区分猫和狗,一共含有两个数据分类结果,因此可以将其结果的类别进行编码表示为[0,1]猫和[1,0]狗
3、对于pytorch里面的数据进行数据类型判断和输出时,一般有三种方法:
(1)print(a.type):输出数据a的详细数据类型;
(2)print(type(a)):输出数据a的基本数据类型,没有(1)中那么详尽;
(3)print(isinstance(a,torch.FloatTensor)):用来输出数据a是否为torch.Tensor数据类型,即返回值为True或者False.
4、对于pytorch的张量Tensor数据类型,在不同的平台上是不一样的,如果在CPU上即为正常的张量Tensor数据类型,如果在GPU上面,则需要将其数据类型转换:
data=data.cuda(),此时data的数据类型从torch.FlaotTensor转换为了torch.cuda.FloatTensor,它可以在cuda上面进行算法的加速实现。
5、对于pytorch里面的标量数据a,进行相关的数据定义时,一般将其定义为torch.tensor(a),则输出时返回为tensor(a)
6、对于标量的数据类型,其数据shape输出一般为a.shape=tensor.size([]),对于其长度输出len(a.shape)=0,另外,对于a.size也是等于tensor.size([])的。
7、对于pytorch里面的任何一个张量数据torch.tensor([d1,d2,d3,d4])DIM和size以及shape三种数据属性的含义解析与区分如下:
DIM是指张量数据的长度(即数据的层数)=len(a.shape),size和shape都是指张量数据的形状;
另外,a.numel()是指数据的大小为d1*d2*d3*d4
(1)DIM=2:
a=torch.tensor([4,784])
其中4是指数据图片的数目,而784是指每一张图片的特征维度
举例:对于a=torch.tensor([1,2,3])
适用于普通的机器学习数据
(2)DIM=3:
1)a.size/shape=tensor.size([1,2,3])
2)a.size(0)=1
3)a.shape[2]=3
4)a[0].shape=[2,3]
适用于RNN神经网络的数据类型[length,num,feature]
例如,对于RNN神经网络进行语音识别与处理时[10,20,100]表示:每个单词包含100个特征,一句话一共有10个单词,而每次输20句话
(3)DIM=4:
一般适用于CNN卷积神经网络[b,c,h,w]:图像处理中图片的信息
torch.tensor([2,3,28,28]):
1)2是指每次输入的图片的个数
2)3是指每张图片的基本特征通道类型
3)28,28是指每张图片的像素特征:长和宽
8、创建Tensor数据的方法主要有以下几种:
(1)Import from numpy:
a=np.array([1.1,2.1)
b=torch.from_numpy(a)
a=np.ones([2,3]) #定义矩阵的方式
b=torch.from_numpy(a)
注:从numpy中导入的数据float类型其实是double类型的。
(2)Import from List:
a=torch.tensor([[1.1,2.1],[1.5,1.2]]),这里的小写tensor中的list数据就是指data本身数据
b=torch.FloatTensor/Tensor(d1,d2,d3),这里的大写Tensor中为数据的shape,即数据的维度组成
9、生成未初始化的数据uninitialized:
(1)torch.empty()
(2)torch.FloatTensor(d1,d2,d3)
(3)torch.IntTensor(d1,d2,d3)
10、tensor数据的随机初始化的方式—rand/rand_like(0-1),randint(整数数据类型),randn(正态分布数据):
(1)torch.rand():产生0-1之间的数据
(2)torch.rand_like(a):a为一个tensor数据类型,产生一个和a数据shape相同的随机tensor数据类型
(3)torch.randint(min,max,[d1,d2,d3]):产生一个shape类型为[d1,d2,d3]的tensor数据,数据最小和最大分别为min和max
(4)torch.randn:产生一个正态分布的数据类型N(0,1),对于自定义的正态分布的数据N(mean,std),一般需要用到torch.normal()函数,一般需要两步步骤进行,其具体的用法如下举例所示:
a=torch.normal(mean=torch.full([10],0)),std=torch.arange(1,0,-0.1))
b=a.reshape(2,5)
11、生成一个全部填充相同的数据:torch.full([d1,d2,de3],a)其中填充数据为a
12、递增或者递减函数API:arange/range
torch.arange(min,max,distance):左闭右开区间,不包含最大值
torch。range(min,max,distance):全闭区间,包含最大值,不推荐使用
13、linspace/logspace:线性空间
(1)torch.linspace(min,max,steps=data number):返回的是等间距的数据,其中左右数据均包括,数据个数为steps,数据间隔为(max-min)/(steps-1)
(2)torch.logspace(min,max,steps=data number):返回的是10的各个线性空间次方的数值
14、torch中一些零、一和单位张量数据生成API:
torch.zeros(3,4) #零张量数据
torch.ones(3,4) #1张量数据
torch.eye(4,5) #单位张量数据
15、randperm:主要是产生随机的索引值:
torch.randperm(10):在[0,10),即0-9产生随机的10个索引

综上所示,对于tensor张量数据类型的基础训练python代码如下所示:

import torch
a=torch.randn([1,2,3,4])
print(a)
print(a.dim()) #输出张量数据的层数,即长度
print(a.dim()==len(a.shape))
print(a.numel()) #输出张量数据的总个数,即数据大小,占内存的个数
print(a.shape) #输出数据的形状
print(a.size())
print(a.size(3)) #输出size和shape的其中元素
print(a.shape[3])
x=torch.empty(2,2,3)
print(x)
print(torch.IntTensor(2,3))
print(torch.FloatTensor(1,2,3))
print(torch.Tensor(1,2,10)) #未初始化tensor数据,占据一定的内存区间
print(x.type()) #输出tensor数据类型
#torch.set_default_tensor_type(torch.DoubleTensor) #设置tensor的数据类型为doubletensor
x=torch.empty(2,2,3)
print(x)
print(x.type()) #重新输出tensor数据类型
#随机初始化的方式
a=torch.rand(3,3) #产生0-1的shape为[3,3]的tensor数据
print(a)
b=torch.rand_like(a) #产生一个和a的tensor数据类型相同的tensor数据,其数据大小也在0-1之间,如果变大可以利用一定的数据处理
print(b)
c=torch.randint(0,10,[3,5])
print(c)

a=torch.randn(2,5) #产生一个标准正态分布的数据
print(a)
a=torch.normal(mean=torch.full([10],0),std=torch.arange(1,0,-0.1)) #产生一般自定义的正态分布数据大小
b=a.reshape(2,5)
print(a)
print(b)
#torch.full
a=torch.full([2,3],3)
print(a)
b=torch.full([],1) #生成一个标量
print(b)
c=torch.full([1],1) #生成一个dim=1的tensor张量数据
print(c)
print(a.type(),b.type(),c.type())
a=torch.arange(0,10,2) #半开区间,左闭右开,不包含右边的最大值
print(a)
b=torch.range(0,10) #包含右端数据10,全闭区间
print(b)

#linspace/logspace
#(1)torch.linspace(min,max,steps=data number):返回的是等间距的数据,其中左右数据均包括,数据个数为steps,数据间隔为(max-min)/(steps-1)
#(2)torch.logspace(min,max,steps=data number):返回的是10的各个线性空间次方的数值
a=torch.linspace(0,10,steps=10)
print(a)
b=torch.linspace(0,10,steps=11)
print(b)
c=torch.logspace(0,10,steps=11)
print(c)
d=torch.logspace(-1,0,steps=10)
print(d)
#Ones/zeros/eyes
print(torch.zeros(3,4)) #零张量数据
print(torch.ones(3,4)) #1张量数据
print(torch.eye(4,5)) #单位张量数据
#randperm产生随机的索引值
a=torch.rand(2,3)
b=torch.rand(2,2)
print(a,b)
idx=torch.randperm(2)
print(idx)
a=a[idx]
b=b[idx]
print(a,b)

最终实现结果如下所示:

pytorch中tensor张量数据基础入门的更多相关文章

  1. pytorch中tensor张量的创建

    import torch import numpy as np print(torch.tensor([1,2,3])) print(torch.tensor(np.arange(15).reshap ...

  2. pytorch中tensor数据和numpy数据转换中注意的一个问题

    转载自:(pytorch中tensor数据和numpy数据转换中注意的一个问题)[https://blog.csdn.net/nihate/article/details/82791277] 在pyt ...

  3. 对pytorch中Tensor的剖析

    不是python层面Tensor的剖析,是C层面的剖析. 看pytorch下lib库中的TH好一阵子了,TH也是torch7下面的一个重要的库. 可以在torch的github上看到相关文档.看了半天 ...

  4. [Pytorch]Pytorch中tensor常用语法

    原文地址:https://zhuanlan.zhihu.com/p/31494491 上次我总结了在PyTorch中建立随机数Tensor的多种方法的区别. 这次我把常用的Tensor的数学运算总结到 ...

  5. VS2013中Python学习笔记[基础入门]

    前言 在上一节中简单的介绍了在VS2013中如何进行开发Hello World,在VS2013中进行搭建了环境http://www.cnblogs.com/aehyok/p/3986168.html. ...

  6. Pytorch 中 tensor的维度拼接

    torch.stack() 和 torch.cat() 都可以按照指定的维度进行拼接,但是两者也有区别,torch.satck() 是增加新的维度进行堆叠,即其维度拼接后会增加一个维度:而torch. ...

  7. pytorch中tensor的属性 类型转换 形状变换 转置 最大值

    import torch import numpy as np a = torch.tensor([[[1]]]) #只有一个数据的时候,获取其数值 print(a.item()) #tensor转化 ...

  8. PyTorch 数据集类 和 数据加载类 的一些尝试

    最近在学习PyTorch,  但是对里面的数据类和数据加载类比较迷糊,可能是封装的太好大部分情况下是不需要有什么自己的操作的,不过偶然遇到一些自己导入的数据时就会遇到一些问题,因此自己对此做了一些小实 ...

  9. pytorch张量数据索引切片与维度变换操作大全(非常全)

    (1-1)pytorch张量数据的索引与切片操作1.对于张量数据的索引操作主要有以下几种方式:a=torch.rand(4,3,28,28):DIM=4的张量数据a(1)a[:2]:取第一个维度的前2 ...

随机推荐

  1. Python学习第二十八课——Django(templates)

    templates 讲后台得到的数据渲染到页面上:话不多说,先看具体代码. urls: from django.conf.urls import url from django.contrib imp ...

  2. Educational Codeforces Round 81 (Rated for Div. 2) - D. Same GCDs(数学)

    题目链接:Same GCDs 题意:给你两个数$a$,$m(1 \leq a < m \leq 10^{10})$,求有多少个$x$满足:$0 \leq x < m$且$gcd(a,m)= ...

  3. Git管理代码

    使用Git管理代码 1. 分支管理模式 首先,master分支应该是非常稳定的,开发都在dev分支上,每个人都有自己的分支,时不时地往dev分支上合并就可以了.完成测试后,再把dev分支合并到mast ...

  4. unittest如何制作测试套件Testsuite 按method,class ,module,按命令行执行unittest

    cmd 执行unittest case : python -m unitest test.py  test2.py python -m unittest  testfile.testclass.tes ...

  5. spring data flow

    spring data flow相当于一个快速发布应用的平台.并可以通过消息队列(kafa,rabbitMQ)把多个应用链接在一起进行链式处理数据.支持的平台是: Cloud Foundry Apac ...

  6. 解析-analysis

    解析-analysis 1.      解析-analysis 可以理解为分词. 解析由解析器——analyzer执行,解析器包括内置和用户自定义两种. 1.1.    解析器 1.1.1.   内置 ...

  7. uWSGI配置参数释义

    uWSGI配置参数释义 socket : 地址和端口号,例如:socket = 127.0.0.1:50000 processes : 开启的进程数量 workers : 开启的进程数量,等同于pro ...

  8. vs的一些操作技巧:在写代码时自动换行的设置

    有时在写代码的时候,一行代码太长了,想换行,直接按回车键的话又会报错,怎么办?其实可以这样设置vs,就可以达到自动换行的效果啦. ​

  9. Spring Boot RestApi 测试教程 Mock 的使用

    测试 Spring Boot Web 的时候,我们需要用到 MockMvc,即系统伪造一个 mvc 环境.本章主要编写一个基于 RESTful API 正删改查操作的测试用例.本章最终测试用例运行结果 ...

  10. Spring Boot 集成 Swagger2 教程

    上篇讲过 Spring Boot RESTful api ,这篇简单介绍下 SwaggerUI 在 Spring Boot 中的应用. Swagger 是一个规范和完整的框架,用于生成.描述.调用和可 ...