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()相关推荐

  1. pytorch笔记(一)——tensor的storage()、stride()、storage_offset()

    目录 1 storage() 2 stride() 3 storage_offset() 1 storage()   pytorch中的一个tensor分为头信息区(Tensor)和存储区(Stora ...

  2. 深度学习框架PyTorch一书的学习-第三章-Tensor和autograd-1-Tensor

    参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 Tensor Tensor可以是一个数 ...

  3. Tensor看这一篇就够了!

    文章目录 Tensor 1. 基础操作 1.1 创建Tensor 1.2 常用Tensor操作 1.3 索引操作 1.4 高级索引 1.5 Tensor类型 1.6 逐元素操作 1.7 归并操作 1. ...

  4. pytorch 定义torch类型数据_PyTorch官方中文文档:torch.Tensor

    torch.Tensor torch.Tensor是一种包含单一数据类型元素的多维矩阵. Torch定义了七种CPU tensor类型和八种GPU tensor类型: Data tyoe CPU te ...

  5. pytorch torch.Storage学习

    tensor分为头信息区(Tensor)和存储区(Storage) 信息区主要保存着tensor的形状(size).步长(stride).数据类型(type)等信息,而真正的数据则保存成连续数组,存储 ...

  6. Pytorch:内部结构

    3.1.3 内部结构 tensor的数据结构如图3-1所示.tensor分为头信息区(Tensor)和存储区(Storage),信息区主要保存着tensor的形状(size).步长(stride).数 ...

  7. pytorch PythonAPI torch.....................

    import torch Tensors torch.is_tensor( obj ) 返回obj是否是一个pytorch张量 x = torch.tensor([1,2,3]) torch.is_t ...

  8. 深度学习框架之PyTorch

    文章目录 1 PyTorch简介 2 PyTorch入门 2.1 Tensor 2.2 自动微分Autograd 2.3 神经网络 2.4 损失函数 2.5 优化器 2.6 数据加载与预处理 2.7 ...

  9. PyTorch与向量化计算

    还是先认错啊  只为自己好加标签 自己看方便~~ 向量化计算是一种特殊的并行计算方式.程序在同一时间内只执行一个操作,而并行计算可以在同一时间内执行多个操作.向量化计算是指对不同的数据执行同样的一个或 ...

最新文章

  1. 你的心思,我如何懂得?
  2. Impress.js教程
  3. JavaWeb项目中如何扩展一个Request对象——包装器HttpServletRequestWrapper
  4. JBoss5.x6.x 反序列化漏洞
  5. 酸了!第一名+第三名的学霸情侣,分别直博清华、人大…
  6. docker 搭建 ftp服务器
  7. 安全员b本计算机考试,2019年安全员B证考试题库试题资料一.doc
  8. php类型cms,自定义存储类型
  9. 管家婆服装.NET II TOP V6.5-VIP卡使用注意事项(一)
  10. mysql libaio_手动编译安装mysql,报错没有libaio模块,
  11. android开发环境搭建——android studio
  12. 桌面Linux绝地反击
  13. 附加SQL Server MDF文件的不同方法
  14. Elasticsearch7.x搜索实战
  15. 我的2020java社招岗面经,阿里巴巴社招面试经历(Java工程师方向)
  16. inno setup 卸载注册表_inno setup 修改卸载文件名称
  17. 基于SSM的医院挂号就诊系统
  18. C++-STL-组件(一)-容器05:stack(栈)
  19. 三角形主机linux,受热捧的三角形主机是什么?我来为你解析
  20. linux 查询挂载信息,linux 查询挂载信息

热门文章

  1. pr学习心得(入门篇)
  2. 什么是java变量,java变量的定义
  3. ffmpeg压缩命令
  4. 82-FastDFS详解
  5. 【NILM】非入侵式负荷分解模块nilmtk安装教程
  6. 微信摇一摇插件ios_iOS-仿微信摇一摇
  7. select_option设置默认值
  8. 设置Pycharm的背景颜色(样式)、图片
  9. Golang 在linux中新建用户
  10. 小船过河问题解析(过度解析)