Pytorch数据类型及Tensor的相关操作

2023-05-16

目录

  • pytorch的数据类型
  • Tensor
    • 查看数据的类型
    • Tensor的类型
      • 0维标量
      • 一维向量
      • 二维Tensor
      • 三维tensor
      • 四维tensor
  • 创建Tensor
    • import from numpy
    • import from list
    • randint
    • rand/rand_like
    • randn
    • rand.normal
    • full/arrage
    • arange
    • ones/zeros/eye
    • randperm

pytorch的数据类型

pythonPyTorch
IntIntTensor of size()
floatFloatTensor of size()
Int arrayIntTensor of size [d1, d2 ,…]
Float arrayFloatTensor of size [d1, d2, …]
string

pytorch没有对应string的数据类型,所以在pytorch中一般有如下的方式来表示string:

  • One – hot
    通过[0 1 0 0]这样的矩阵形式来表示。
  • Embedding
    自带的API表示,如Word2vec、glove。

Tensor

查看数据的类型

[1] import torch
[2] a = torch.randn(2,3)
[3] a
[4] tensor([[-1.3980, -0.6004,  0.6113],
           [ 1.2985,  0.4644,  1.2936]])
[5] a.type
[6] <function Tensor.type>
[7] type(a)
[8] torch.Tensor
[9] isinstance(a,torch.FloatTensor)
[10] True
[11] a = a.cuda()  # 将数据传送到cuda上(GPU操作)
[12] isinstance(a,torch.FloatTensor)
[13] False.
[14] isinstance(a,torch.cuda.FloatTensor)
[15] True

Tensor的类型

0维标量

0维tensor一般用来表示损失函数的数值及Loss的数值。

[1] import torch
[2] torch.tensor(1.)
[3] tensor(1.)
[4] a = torch.tensor(1.3)
[5] a.shape
[6] torch.Size([])
[7] len(a.shape)
[8] 0
[9] a.size()
[10] torch.Size([])

一维向量

一维向量一般用来表示Bias或者是Linear input。

[1] torch.tensor([1.1])
[2] tensor([1.1000])

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

[5] torch.FloatTensor(1)  # 创建一维Float型tensor
[6] tensor([1.4013e-45])

[7] torch.FloatTensor(2)
[8] tensor([3.7140e+00, 4.5916e-41])

[9] data = np.ones(2)  # 通过np创建向量再转换成tensor
[10] array([1., 1.])
[11] data
[12] torch.from_numpy(data)
[13] tensor([1., 1.], dtype=torch.float64)

[14] a = torch.ones(2)
[15] a.shape
[16] torch.Size([2])

二维Tensor

一般用来表示 Linear input,但是是组成了batch的输入。

[1] a = torch.randn(2, 3)
[2] a
[3] tensor([[ 0.5858,  0.7921, -1.0959],
           [-0.9188, -1.0520,  0.3439]])
[4] a.shape
[5] torch.Size([2, 3])
[6] 0
[7] a.size(0)
[8] 2
[9] a.size(1)
[10] 3

三维tensor

一般用来表示RNN input batch。

[1] a = torch.rand(1,2,3)
[2] a
[3] tensor([[[0.3731, 0.6286, 0.4451],
           [0.3610, 0.3913, 0.3960]]])
[4] a.shape
[5] torch.Size([1, 2, 3])
[6] a[0]  # 第0维的所有数据
[7] tensor([[0.3731, 0.6286, 0.4451],
           [0.3610, 0.3913, 0.3960]])
[8] a[0,0]  
[9] tensor([0.3731, 0.6286, 0.4451])
[10] a[0,0,2]
[11] tensor(0.4451)

四维tensor

一般用来表示CNN的数据,表达形式为[b,c,w,h]
b: batch size
c: channel
w: width
h: hight

[1] a = torch.rand(2,3,28,28)
[2] a.shape
[3] torch.Size([2, 3, 28, 28])
[4] a.numel()
[5] 4704
[6] a.dim()
[7] 4

创建Tensor

import from numpy

[1] import torch
[2] import numpy as np

[1] a = np.array([2,3,3])
[4] torch.from_numpy(a)
[5] tensor([2, 3, 3], dtype=torch.int32)

[6] a = np.ones([2,3])  # 创建元素都为1的2行3列矩阵。
[7] torch.from_numpy(a)
[8] tensor([[1., 1., 1.],
           [1., 1., 1.]], dtype=torch.float64)

import from list

[1] torch.tensor([2.,3.2])
[2] tensor([2.0000, 3.2000])

[3] torch.FloatTensor([2.,3.2])
[4] tensor([2.0000, 3.2000])

[5] torch.tensor([[2.,3.2],[2.,2.3]])
[6] tensor([[2.0000, 3.2000],
           [2.0000, 2.3000]])

# 创建两行三列的tensor。
[7] torch.FloatTensor(2,3)
[8] tensor([[0., 0., 0.],
           [0., 0., 0.]])

注意区分:torch.tensor([num1,num2]),这种形式是直接定义指定类型的tensor。tensor.torch.Tensor(2,3)这是定义指定大小的无定义的tensor,使用大写的T,也可以定义指定类型和数据的tensor,torch.Tensor([num1,num2])

randint

torch.randint(min,max,[d1,d2,...]),创建数据范围为[min,max),维度为[d1,d2,…]的tensor。

[1] torch.randint(1,10,[3,3])
[2] tensor([[2, 6, 4],
           [3, 2, 1],
           [2, 8, 7]])

rand/rand_like

torch.rand(d1,d2,...): 返回一个张量,包含了从区间[0, 1)的均匀分布中抽取的一组随机数。

[1] torch.rand(3,3)
[2] tensor([[0.5878, 0.9668, 0.3650],
           [0.1557, 0.3499, 0.9330],
           [0.7722, 0.9499, 0.3523]])
[1] a = torch.rand(3,3)
[2] b = torch.rand_like(a)
[3] tensor([[0.2042, 0.0564, 0.9969],
           [0.2000, 0.4774, 0.5674],
           [0.8551, 0.9213, 0.1106]])

torch.rand_like(a): 创建维度和a一样的tensor。

randn

[1] torch.randn(3,3)
[2] tensor([[-0.7544, -0.5258, -0.4428],
           [-0.1384, -1.2117, -0.2828],
           [-1.0915, -0.5079, -0.3922]])

torch.randn(d1,d2,...): 返回一个张量,包含了从标准正态分布(均值为0,方差为1,即高斯白噪声)中抽取的一组随机数。

rand.normal

torch.normal(means, std, out=None)

返回一个张量,包含了从指定均值means和标准差std的离散正态分布中抽取的一组随机数。
标准差std是一个张量,包含每个输出元素相关的正态分布标准差。
参数:
means (float, optional) - 均值
std (Tensor) - 标准差
out (Tensor) - 输出张量

[1] torch.normal(mean=torch.full([10],0,dtype=torch.float),std=torch.arange(1,0,-0.1))
[2] tensor([-1.6619, -1.0360,  1.2595,  0.4415,  0.9030, -0.3031,  0.1125, -0.2781,
         0.0257,  0.1411])

注意:如果报错"normal_kernel_cpu" not implemented for 'Long',则要改变数据类型dtype=torch.float

full/arrage

torch.full([d1,d2,...], 7),生成全部一样的tensor.

arange

torch.arange(start, end):生成[start, end)的tensor。

ones/zeros/eye

torch.ones(d1, d2, ...):生成全1;
torch.zeros(d1, d2, ...):生成全0;
torch.eye(d1, d2, ...):生成单位矩阵。

randperm

torch.randperm(num):生成随机打散的tensor。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pytorch数据类型及Tensor的相关操作 的相关文章

  • 利用策略模式优化if-else

    一 定义 策略模式 Strategy Pattern 策略模式属于对象的行为模式 其用意是针对一组算法 xff0c 将每一个算法封装到具有共同接口的独立的类中 xff0c 从而使得它们可以相互替换 策略模式使得算法可以在不影响到客户端的情况
  • web技术分享| 【高德地图】实现自定义的轨迹回放

    实现 轨迹回放 方式有两种 xff1a 第一种是使用 JS API 和 AMap PolyLine xff08 折线 xff09 等图形配合实现 第二种是使用 JS API 和 AMapUI 组件库 配合使用 xff0c 利用 PathSi
  • ubuntu14.04 忘记了普通用户密码和root密码

    步骤一 xff1a 必须先找回ROOT xff0c 才可以往下做 本文使用的Ubuntu版本为14 04 4 xff0c 具体过程如下为 xff1a 1 重启电脑长按shift键直到进入下图进入GRUB引导模式 xff0c 选择第二行Ubu
  • 乐优商城介绍

    1 乐优商城介绍 1 1 项目介绍 乐优商城是一个全品类的电商购物网站 xff08 B2C xff09 用户可以在线购买商品 加入购物车 下单 秒杀商品可以品论已购买商品管理员可以在后台管理商品的上下架 促销活动管理员可以监控商品销售状况客
  • 使用java中replaceAll方法替换字符串中的反斜杠

    今天在项目中使用java中replaceAll方法将字符串中的反斜杠 34 34 替换成空字符串 34 34 xff0c 结果出现如下的异常 xff1a 1 java util regex PatternSyntaxException Un
  • 正则表达式匹配引号中间的内容怎么写?

    字符串 123 abc 456 匹配结果 abc Answer1 利用先行和后发断言规则 xff1a lt 61 34 61 34 最近总结了一篇关于正则表达式的博文 xff0c 题主不妨一读 xff1a 正则表达式基础 测试代码如下 xf
  • excel将一个工作表根据条件拆分成多个工作表图文教程

    本例介绍在excel中如何将一个工作表根据条件拆分成多个工作表 注意 xff1a 很多朋友反映sheets i delete这句代码出错 xff0c 要注意下面第一个步骤 xff0c 要拆分的数据工作表名称为 数据源 xff0c 而不是你新
  • python3下cv2.imwrite存储带有中文路径

    由于imwrite前使用编码在python3中已经不适用 xff0c 可用imencode代替 xff0c 以下代码是从视频中获取第2帧保存在中文文件夹下的实例 xff1a cap 61 cv2 VideoCapture 34 mp4 34
  • tf.placeholder、feed_dict用法说明

    函数形式 xff1a tf placeholder dtype shape 61 None name 61 None 参数 xff1a dtype xff1a 数据类型 常用的是tf float32 tf float64等数值类型 shap
  • sess.run()

    函数 xff1a run fetches feed dict 61 None options 61 None run metadata 61 None 当构建完图后 xff0c 需要在一个session会话中启动图 xff0c 第一步是创建
  • 卷积神经网络之AlexNet网络详解

    一 介绍 Alex Krizhevsky等人训练了一个大型的卷积神经网络用来把ImageNet LSVRC 2010比赛中120万张高分辨率的图像分为1000个不同的类别 在测试卷上 xff0c 获得很高准确率 top 1 and top
  • 如何分清分布式、高并发与多线程

    当提起这三个词的时候 xff0c 是不是很多人都认为分布式 61 高并发 61 多线程 xff1f 当面试官问到高并发系统可以采用哪些手段来解决 xff0c 或者被问到分布式系统如何解决一致性的问题 xff0c 是不是一脸懵逼 xff1f
  • 利用正则表达式排除特定字符串

    查找不以baidu开头的字符串 baidu com sina com cn 正则 xff1a baidu 匹配结果就是第2行 xff0c 也就是第1行被排除了 这里使用了零宽度断言 exp 注意 xff0c 我们有一个向前查找的语法 也叫顺
  • 自学记录--python小知识

    os path 的一些功能 根据实际项目中的例子来理解一下大体的用法 xff0c 目前只接触了几个方法 例1 xff1a 我是在c python django ttsx2 ttsx goods views py工作 xff0c 运行环境是在
  • django配置连接多个数据库,和把应用名字在admin后台显示为中文

    django配置连接多个数据库 xff0c 自定义表名称 在项目tt下新建两个app xff0c 分别为app01 app02 配置app01使用default节点数据库 xff1b app02使用hvdb节点数据库 xff08 也可以配置
  • 自学记录--字符串,列表,字典的常用方法

    字符串常见操作 如有字符串mystr 61 39 hello world itcast and itcastcpp 39 xff0c 以下是常见的操作 lt 1 gt find 检测 str 是否包含在 mystr中 xff0c 如果是返回
  • 自学记录--django模型使用记录

    对于重要数据都做逻辑删除 xff0c 不做物理删除 xff0c 实现方法是定义isDelete字段 xff0c 类型为BooleanField 默认值为False 字段类型概括 AutoField xff1a 一个根据实际ID自动增长的In
  • 自学记录--django模板使用记录

    模板template相关知识及问题 xff1a 过滤器 xff1a value floatformat gt 不给参数的话会将浮点数的小数位舍入到一个小数位 例 xff1a value 61 34 256 gt 结果为34 3 value
  • 自学记录--django+uwsgi+nginx部署

    一 xff1a 服务器环境配置 在本地的虚拟环境中 xff0c 项目根目录下 xff0c 执行命令收集所有包 pip freeze gt plist txt 通过xftp软件将开发好的项目和收集的包上传到服务器某个目录在服务器上面安装并创建
  • 赛码-三分线-java

    题目描述 小赛很喜欢看A队和B队的篮球比赛 众所周知 xff0c 篮球每回合根据投篮远近可以得2分或3分 如果投篮距离小于d那么得2分 xff0c 大于等于d得3分 我们将d记为三分线 每次小赛都喜欢通过改变三分线的大小来让自己支持的A队获

随机推荐