tensor的storage(),stride(),storage_offset()
1. storage()
pytorch中的一个tensor分为头信息区(Tensor)和存储区(Storage)
信息区主要保存着tensor的形状(size)、步长(stride)、数据类型(type)等信息。
而真正的数据则保存成连续数组,存储在存储区。
一般一个tensor都会有相对应的Storage,但也有另一种情况时多个tensor都对应着相同的一个Storage,这几个tensor只是头信息区不同。
>>> a = torch.arange(6)
>>> a
tensor([0, 1, 2, 3, 4, 5])
>>> a.storage()012345
>>> b = a.view(2,3)
>>> b
tensor([[0, 1, 2],[3, 4, 5]])
>>> b.storage()
0
1
2
3
4
5
[torch.LongStorage of size 6]
>>> c = a[3:]
>>> c
tensor([3, 4, 5])
>>> c.storage()012345
>>> id(a.storage()) == id(b.storage()) == id(c.storage())
True
可以发现a、b、c这三个tensor的Storage都是一样的,而a、b、c这三个tensor只是因为它们的头信息区不同。
>>> a[4]=9
>>> a
tensor([0, 1, 2, 3, 9, 5])
>>> b
tensor([[0, 1, 2],[3, 9, 5]])
>>> c
tensor([3, 9, 5])
所以一旦修改其中一个tensor的值。其它tensor也会跟着改变。
2. stride()
官方文档是这样描述的:stride是在指定维度dim中从一个元素跳到下一个元素所必需的步长。当没有参数传入时,返回所有步长的元组。否则,将返回一个整数值作为特定维度dim中的步长。
>>> b
tensor([[0, 1, 2],[3, 9, 5]])
>>> b.stride()
(3, 1)
>>> b.stride(0)
3
>>> b.stride(1)
1
上面的3指的是第0个维度中的一个元素[0, 1, 2]到下一个元素[3, 9, 5]所需要的步长为3,也可以理解从第一个的第一个索引到下一个元素第一个索引跨度是3。而1指的是第1个维度[0, 1, 2]中的一个元素0到下一个元素1所需要的步长为1。
3. storage_offset()
返回tensor的第一个元素与storage的第一个元素的偏移量。
>>> b.storage()012395
[torch.LongStorage of size 6]
>>> b
tensor([[0, 1, 2],[3, 9, 5]])
>>> b.storage_offset()
0
b的的第一个元素为0,而0是b的storage的第0位,所以偏移量为0。
>>> c.storage()012395
[torch.LongStorage of size 6]
>>> c
tensor([2, 3, 9, 5])
>>> c.storage_offset()
2
c的的第一个元素为2,而2是c的storage的第2位,所以偏移量为2。
tensor的storage(),stride(),storage_offset()相关推荐
- pytorch笔记(一)——tensor的storage()、stride()、storage_offset()
目录 1 storage() 2 stride() 3 storage_offset() 1 storage() pytorch中的一个tensor分为头信息区(Tensor)和存储区(Stora ...
- 深度学习框架PyTorch一书的学习-第三章-Tensor和autograd-1-Tensor
参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 Tensor Tensor可以是一个数 ...
- Tensor看这一篇就够了!
文章目录 Tensor 1. 基础操作 1.1 创建Tensor 1.2 常用Tensor操作 1.3 索引操作 1.4 高级索引 1.5 Tensor类型 1.6 逐元素操作 1.7 归并操作 1. ...
- pytorch 定义torch类型数据_PyTorch官方中文文档:torch.Tensor
torch.Tensor torch.Tensor是一种包含单一数据类型元素的多维矩阵. Torch定义了七种CPU tensor类型和八种GPU tensor类型: Data tyoe CPU te ...
- pytorch torch.Storage学习
tensor分为头信息区(Tensor)和存储区(Storage) 信息区主要保存着tensor的形状(size).步长(stride).数据类型(type)等信息,而真正的数据则保存成连续数组,存储 ...
- Pytorch:内部结构
3.1.3 内部结构 tensor的数据结构如图3-1所示.tensor分为头信息区(Tensor)和存储区(Storage),信息区主要保存着tensor的形状(size).步长(stride).数 ...
- pytorch PythonAPI torch.....................
import torch Tensors torch.is_tensor( obj ) 返回obj是否是一个pytorch张量 x = torch.tensor([1,2,3]) torch.is_t ...
- 深度学习框架之PyTorch
文章目录 1 PyTorch简介 2 PyTorch入门 2.1 Tensor 2.2 自动微分Autograd 2.3 神经网络 2.4 损失函数 2.5 优化器 2.6 数据加载与预处理 2.7 ...
- PyTorch与向量化计算
还是先认错啊 只为自己好加标签 自己看方便~~ 向量化计算是一种特殊的并行计算方式.程序在同一时间内只执行一个操作,而并行计算可以在同一时间内执行多个操作.向量化计算是指对不同的数据执行同样的一个或 ...
最新文章
- 你的心思,我如何懂得?
- Impress.js教程
- JavaWeb项目中如何扩展一个Request对象——包装器HttpServletRequestWrapper
- JBoss5.x6.x 反序列化漏洞
- 酸了!第一名+第三名的学霸情侣,分别直博清华、人大…
- docker 搭建 ftp服务器
- 安全员b本计算机考试,2019年安全员B证考试题库试题资料一.doc
- php类型cms,自定义存储类型
- 管家婆服装.NET II TOP V6.5-VIP卡使用注意事项(一)
- mysql libaio_手动编译安装mysql,报错没有libaio模块,
- android开发环境搭建——android studio
- 桌面Linux绝地反击
- 附加SQL Server MDF文件的不同方法
- Elasticsearch7.x搜索实战
- 我的2020java社招岗面经,阿里巴巴社招面试经历(Java工程师方向)
- inno setup 卸载注册表_inno setup 修改卸载文件名称
- 基于SSM的医院挂号就诊系统
- C++-STL-组件(一)-容器05:stack(栈)
- 三角形主机linux,受热捧的三角形主机是什么?我来为你解析
- linux 查询挂载信息,linux 查询挂载信息