当前位置: 首页 > wzjs >正文

皮肤测试网站怎么做私域流量运营管理

皮肤测试网站怎么做,私域流量运营管理,中文个人网站模板下载,wordpress镜像存储插件1、数据区域和元数据 PyTorch 中的 tensor 内部结构通常包含了 数据区域(Storage) 和 元数据(Metadata) : 数据区域 : 存储了 tensor 的实际数据,且数据被保存为连续的数组。比如: a torch.tensor([[1, 2, 3], [4, 5, 6]])&…

1、数据区域和元数据

PyTorch 中的 tensor 内部结构通常包含了 数据区域(Storage) 和 元数据(Metadata) :

  • 数据区域 : 存储了 tensor 的实际数据,且数据被保存为连续的数组。比如: a = torch.tensor([[1, 2, 3], [4, 5, 6]]),它的数据在存储区的保存形式为 [1, 2, 3, 4, 5, 6]

  • 元数据 :包含了 tensor 的一些描述性信息,比如 : 尺寸(Size)、步长(Stride)、数据类型(Data Type) 等信息

占用内存的主要是 数据区域,且取决于 tensor 中元素的个数, 而元数据占用内存较少。

采用这种 【数据区域 + 元数据】 的数据存储方式,主要是因为深度学习的数据动辄成千上万,数据量巨大,所以采取这样的存储方式以节省内存


2、查看 tensor 的存储区数据: storage() 

a = torch.tensor([[1, 2, 3],[4, 5, 6]])print(a.storage())


3、查看 tensor 的步长: stride() 

stride() : 在指定维度 (dim) 上,存储区中的数据元素,从一个元素跳到下一个元素所必须的步长

a = torch.randn(3, 2)
print(a.stride())  # (2, 1)

解读:

在第 0 维,想要从一个元素跳到下一个元素,比如从 a[0][0] 到 a[1][0] ,需要经过 2个元素,步长是 2

在第 1 维,想要从一个元素跳到下一个元素,比如从 a[0][0] 到 a[0][1], 需要经过 1个元素,步长是 1


4、查看 tensor 的偏移量:storage_offset()

表示 tensor 的第 0 个元素与真实存储区的第 0 个元素的偏移量 

a = torch.tensor([1, 2, 3, 4, 5])
b = a[1:]   # tensor([2, 3, 4, 5])
c = a[3:]   # tensor([4, 5])
print(b.storage_offset())   # 1
print(c.storage_offset())   # 3
  • b 的第 0 个元素与 a 的第 0 个元素之间的偏移量是 1

  • c 的第 0 个元素与 a 的第 0 个元素之间的偏移量是 3


5、观察存储区

一般来说,一个 tensor 有着与之对应的 storage, storage 是在 data 之上封装的接口。

不同 tensor 的元数据一般不同,但却可能使用相同的 storage。

1)观察一

import torcha = torch.arange(0, 6)
print('a = {}\n'.format(a))
print('tensor a 存储区的数据内容 :{}\n'.format(a.storage()))
print('tensor a 相对于存储区数据的偏移量 :{}\n'.format(a.storage_offset()))print('*'*20, '\n')b = a.view(2,3)
print('b = {}\n'.format(b))
print('tensor b 存储区的数据内容 :{}\n'.format(b.storage()))
print('tensor b 相对于存储区数据的偏移量 :{}\n'.format(b.storage_offset()))

 

2)观察二

import torcha = torch.tensor([1, 2, 3, 4, 5, 6])
b = a.view(2, 3)print(a.data_ptr())   # 140623757700864
print(b.data_ptr())   # 140623757700864print(id(a))   # 4523755392
print(id(b))   # 4602540464

  • a.data_ptr()b.data_ptr() 一样,说明 tensor a 和 tensor b 共享相同的存储区,即,它们指向相同的底层数据存储对象。

  • id(a)id(b) 不一样,是因为虽然 a 和b 共享storage 数据,但是 它们 有不同的 size 或者 strides 、 storage_offset 等其他属性

 

  3)观察三

import torcha = torch.tensor([1, 2, 3, 4, 5, 6])
c = a[2:]print(c.storage())print('\n', '*'*20, '\n')print('tensor a 首元素的内存地址 : {}'.format(a.data_ptr()))
print('tensor c 首元素的内存地址 : {}'.format(c.data_ptr()))
print(c.data_ptr() - a.data_ptr())print('\n', '*'*20, '\n')c[0] = -100
print(a)

  • data_ptr() 返回 tensor 首元素的内存地址

  • c 和 a 的首元素内存地址相差 16,每个元素占用 8 个字节(LongStorage), 也就是首元素相差两个元素

  • 改变 c 的首元素, a 对应位置的元素值也被改变

 6、总结

  1. 由上可知,绝大多数操作并不修改 tensor 的数据,只是修改了 tensor 的元数据,比如修改 tensor 的 offset 、stride 和 size ,这种做法更节省内存,同时提升了处理速度。

  2. 有些操作会导致 tensor 不连续,这时需要调用 torch.contiguous 方法将其变成连续的数据,该方法会复制数据到新的内存,不再与原来的数据共享 storage。

http://www.dtcms.com/wzjs/126531.html

相关文章:

  • 南京微信网站建设他达拉非片多少钱一盒
  • 网站自己怎么做保健品的营销及推广方案
  • 网页设计实训报告技术难点海淀seo搜索优化多少钱
  • 做游戏网站思想步骤网站建设报价明细表
  • 在自己的网站里做讲课视频磁力多多
  • 口碑好的武进网站建设互联网销售
  • 有哪些做兼职的网站企业文化是什么
  • 我想建设一个网站百度推广基木鱼
  • 网站建设基础实验1国内搜索引擎有哪些
  • flash xml网站百度极速版下载
  • 量品定制合伙人网站seo排名优化工具
  • 在线网站建设课程网络推广吧
  • 都匀网站建设关键词优化是怎样收费的
  • 做软装素材从哪些网站找购买一个网站域名需要多少钱
  • 中国中标信息查询系统seo外包公司费用
  • 苏州教育学会网站建设能打开任何网站浏览器
  • 高级网站建设seo长尾快速排名
  • 免费发布信息网站平台2019年 2022疫情爆发
  • 网站的按钮怎么做网站一年了百度不收录
  • 济南建站价格线上广告推广平台
  • 做营销网站要多少钱线上推广网络公司
  • 展览制作设计公司新网站怎么做优化
  • 信息化工作总结 网站建设任务推广引流平台
  • 泸西县住房和城乡建设局网站杭州疫情最新情况
  • 广东省政府集约化网站建设线上推广怎么做
  • 网站做反向代理对百度收录有影响吗关键词搜索神器
  • 软件学校网站模板百度获客
  • 网站开发费用如何入帐seo排名啥意思
  • 用易语言可以做网站吗如何开通网站
  • 苏州教育网站建设河南网站seo推广