首页 > 其他分享 >PyTorch的数据类型

PyTorch的数据类型

时间:2023-07-29 22:56:52浏览次数:56  
标签:Dim randn tensor 28 torch 数据类型 PyTorch shape

python和pytorch中的类型对比:
我们可以发现pytorch中每中类型后面都有一个Tensor。
image
但是很遗憾PyTorch没有String类型。
我们在做NLP的时候会遇到String类型处理的问题,我们会将string转化问数值:

  • one-hot

[0,1,0,0,....]

  • Embedding

word2vec
glove

1 Data type

我们需要注意的是CPU版和GPU版的不一样
image

2 Type check

这里我们使用randn生成一个符合正态分布的tensor

a=torch.randn(2,3)
a
tensor([[ 0.9793,  1.1300, -0.6563],
        [-0.8705, -0.9400,  1.3000]])

使用a.type,type(a),isinstance(a,torch.FloatTensor)来检验一下他的类型

a.type

#<function Tensor.type>
type(a)

#torch.Tensor
isinstance(a,torch.FloatTensor)

# True

image
这里我们需要注意一下CUP中的tensor和GPU中的不一样。

isinstance(a,torch.cuda.FloatTensor)
# 这里返回 False

a=a.cuda()
#转化成GPU中的tensor

isinstance(a,torch.cuda.FloatTensor)
# 返回True

image

3 Dim

3.1 Dim 0

Dim为0的tensor是一个标量,也就是一个具体的数值

torch.tensor(1.)
# tensor(1.)

torch.tensor(1.3)
# tensor(1.3000)

a=torch.tensor(2.2)
a.shape
# torch.Size([])

len(a.shape)
# 0

a.size()
# torch.Size([])

image

3.2 Dim 1

Dim 1的时候相对于一个列表
可以使用列表的形式定义

torch.tensor([1.1])
# tensor([1.1000])

torch.tensor([1.1,2.2])
# tensor([1.1000, 2.2000])

image

也可以使用torch.Tensor(1)或者torch.FloatTensor(2)定义

torch.Tensor(1)
# tensor([3.5873e-43])

torch.FloatTensor(1)
# tensor([6.0757e+19])

torch.FloatTensor(2)
# tensor([6.0757e+19, 4.5916e-41])

image

也可以通过numpy类型变成tensor

torch.from_numpy(data)
data是np列表

data=np.ones(2)
data
# array([1., 1.])

torch.from_numpy(data)
# tensor([1., 1.], dtype=torch.float64)

image

或者我们也可以使用

torch.ones([2])
torch.zeros([2,2])

来生成一个全0或者全1的tensor

a=torch.ones([2])
a
#tensor([1., 1.])

a.shape
# torch.Size([2])

b=torch.zeros([2,2])
b
#tensor([[0., 0.],
#        [0., 0.]])

b.shape
#torch.Size([2, 2])

这里我们要区分一下dim和size/shape,比如一个[2,2]的一个二维矩阵,2是它的dim,[2,2]是它的size/shape。
image

3.3 Dim 2

可以通过

torch.randn(2,3)

随机生成一个二维的2行,3列的符合正太分布的数组

a=torch.randn(2,3)
a
# tensor([[ 1.0871,  0.6401,  1.1010],
#        [ 0.1840,  1.6281, -0.3268]])

a.shape
#torch.Size([2, 3])

a.size(0),a.size(1),a.shape[0],a.shape[1]
#(2, 3, 2, 3)

image
也可以通过

torch.ones(2,3)
torch.zeros(2,3)

生成全0或者全1的数组
image

这里2维的dim重要用在Linear Input batch。例如一个[batch,784]

3.4 Dim 3

例如torch.randn(2,2,3),是一个三维的tensor,这个代表的是有2个(2,3)的二维矩阵

b=torch.randn(2,2,3)
b
#tensor([[[ 0.6101,  0.7085, -0.5774],
#         [-0.1907,  1.3382,  0.0592]],
#
#        [[-0.4956,  0.7636,  0.1150],
#         [-0.0104,  0.3667, -1.4105]]])

b[0]
#tensor([[ 0.6101,  0.7085, -0.5774],
#        [-0.1907,  1.3382,  0.0592]])

b.shape
# torch.Size([2, 2, 3])

image
然后我们查看第一个(2,3)的二维矩阵b[0]
image
这个三维的数组主要用于RNN Input Batch,例如[10,20,100],这里代表的数10个句子,每个句子中都有20个单词,每个单词都用一个100维的列表表示

3.5 Dim 4

a=torch.randn(2,3,28,28)
a

a.shape
#torch.Size([2, 3, 28, 28])

这里主要用于CNN的输入
[b,c,h,w],c是RGB,h是图片的高,w图片的宽

a.numel()
指的是a里面的元素的个数
对于一个shape=[2,3,28,28]的tensor,他的a.numel()=2328*28=4704

标签:Dim,randn,tensor,28,torch,数据类型,PyTorch,shape
From: https://www.cnblogs.com/lipu123/p/17590566.html

相关文章

  • 基于wsl2在container中利用conda安装pytorch环境
    ###一、利用conda创建一个新的环境参考命令condacreate-nENV_NAMEpython=X.X•-nENV_NAME指定环境名称•python=X.X指定要创建的Python版本,比如python=3.6使用命令:condacreate-npytorch1.13python=3.8参考资料-Anacondaconda常用命令:从入门到精通:https://......
  • PyTorch基础知识-新手笔记
    NumPy与TensorTensor为神经网络界的NumPy,与NumPy相似。相同之处:二者均可共享内存,它们之间的转换非常方便和高效。不同之处:NumPy会把ndarray放在CPU中加速。  Tensor会把ndarray放在GPU中加速。PyTorch中的Tensor可以是零维(又称为标量或一个数)、一维、二维及多维的数组。标量(s......
  • Java学习-2.简介、关键字、标识符、变量、数据类型、运算符
    一、Java简介Java最早是由SUN公司(已被Oracle收购)的詹姆斯·高斯林(高司令,人称Java之父)在上个世纪90年代初开发的一种编程语言,最初被命名为Oak,目标是针对小型家电设备的嵌入式应用,结果市场没啥反响。谁料到互联网的崛起,让Oak重新焕发了生机,于是SUN公司改造了Oak,在1995年以Java的名......
  • Redis从入门到放弃(4):3种新数据类型
    1、介绍前面的文章已经介绍了redis的5种基本数据类型,redis6中另外还有3种特殊的数据类型,分别是Bitmaps(位图)、HyperLogLogs(基数统计)和geospatial(地理位置)。本文将继续探讨它们的特性、原理以及应用场景。2、Bitmaps(位图)Bitmaps是一种位图数据结构,用于存储位的集合。在Red......
  • javascript数据类型详解
    文章和代码已经归档至【Github仓库:https://github.com/timerring/front-end-tutorial】或者公众号【AIShareLab】回复javascript也可获取。数据类型JavaScript是一种弱类型或者说动态语言。不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。varage=10;//数字型v......
  • 多层感知机——pytorch版
    importtorchfromtorchimportnnfromd2limporttorchasd2lbatch_size=256train_iter,test_iter=d2l.load_data_fashion_mnist(batch_size)num_inputs,num_outputs,num_hiddens=784,10,256w1=nn.Parameter(torch.randn(num_inputs,num_hiddens,re......
  • 线性回归模型实现——pytorch版
    importrandomimporttorchfromd2limporttorchasd2ldefsynthetic_data(w,b,num_examples):"""生成y=Xw+b+噪声"""x=torch.normal(0,1,(num_examples,len(w)))#01正态分布,num_examples个样本,len(w)列print('len是:'......
  • 苹果mac m1,m2芯片安装 pytorch和tensorflow的GPU版本
    一、下载M芯片的anaconda,并安装 二、安装GPU版本的pytorch1.安装Xcodexcode-select--install2.创建环境condacreate-ntorch-gpupython=3.11condaactivatetorch-gpu 3.打开pytorch官网复制命令,注意:在macm上,device是’mps’而不是’cuda’,mac的MPS......
  • Python-2-Python数据类型
    第二章:Python数据类型2-1字符串简单介绍'A'+'B'字符串连接输出'AB';'Hello'*3多次连接3次。'Hello'[0]取第一个字符;'Hello'[1]取第二个字符;'Hello'[-1]取最后一个字符;'Hello'[1:3]从e开始取取2个字符el,1+2=3所以是[1:3];'H......
  • PyTorch 1.4 中文文档校对活动正式启动 | ApacheCN
    一如既往,PyTorch1.4中文文档校对活动启动了!认领须知请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错——在大部分情况下,我们的服务器已经记录所有的翻译,因此您不必担心会因为您的失误遭到无法挽回的破坏。(改编自维基百......