博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tensor内部结构
阅读量:5147 次
发布时间:2019-06-13

本文共 1192 字,大约阅读时间需要 3 分钟。

内部结构

1.tensor分为头信息区(Tensor)和存储区(Storage);    信息区:tensor的形状(size)、步长(stride)、数据类型(type),信息区占用内存较少    存储区:数据保存为连续数组,主要内存占用在存储区2.每一个tensor有着一个对应的storage,storage是在data之上封装的接口;

具体操作

 
  1. a = t.arange(0,6)  
  2. a.storage()  
  3. b = a.view(2,3)  
  4. b.storage()  
  5. #a和b的storage的内存地址一样,即他们是用同一个storage  
  6. print( id(b.storage) == id(a.storage) )  
  7.   
  8. #a改变,b也随之改变,因为他们共享storage  
  9. a[1] = 100  
  10. print(b)  
  11.   
  12. c = a[2:]  
  13. c.storage()  
  14. print(c)  
  15.   
  16. #3198436924144    3198436924128,首地址差16,因为两个元素2*8,每个元素占8个字节  
  17. print(c.data_ptr())  
  18. print(a.data_ptr())  
  19.   
  20. c[0] = -100  
  21. print(a)  
  22.   
  23. #3个tensor共享storage  
  24. print(id( a.storage() ) == id( b.storage() ) == id( c.storage()) )  
  25.   
  26.   
  27. #以储存元素的个数的形式返回tensor在地城内存中的偏移量  
  28. print( a.storage_offset() )  
  29. print( b.storage_offset() )  
  30. print( c.storage_offset() )  
  31. '''''0  0  2'''  
  32.   
  33.   
  34. print('b',b)  
  35. e = b[::1,::2]  
  36. print('e',e)  
  37. '''''b tensor([[   0,  100, -100], 
  38.         [   3,    4,    5]]) 
  39. e tensor([[   0, -100], 
  40.         [   3,    5]])'''  
  41.   
  42. #tensor步长  
  43. print(b.stride(),e.stride())  
  44. '''''(3, 1) (3, 2)'''  
  45.   
  46. #判断tensor是否连续  
  47. print(e.is_contiguous())  
  48. '''''False'''  
  49. f = e.contiguous()  
  50. print(f.is_contiguous())  
  51. '''''True'''  

总结

大部分操作并不修改tensor的数据,只修改了tensor的头信息,这种做法更节省内存,提升了处理速度。注意:有些操作会导致tensor不连续,可以用tensor.contiguous方法将它们变成连续的数据。

2018-11-22 20:36:00

转载于:https://www.cnblogs.com/monkeyT/p/10003747.html

你可能感兴趣的文章
一个关于vue+mysql+express的全栈项目(五)------ 实时聊天部分socket.io
查看>>
jQgrid合并行
查看>>
TopK
查看>>
网络协议分析工具wireshark
查看>>
FlowPortal-BPM——功能:判断数据库表中字段是否重复并阻止提交或保存
查看>>
打开终端,提示 “无法加载文件C:\XXX\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本” 的错误...
查看>>
【Web技术学习】JS学习笔记
查看>>
React Native的缓存和下载
查看>>
Python 正则表达式入门(初级篇)
查看>>
python学习之三 scrapy框架
查看>>
[转帖]Docker常用命令总结
查看>>
多线程GCD-牛逼中央调度器
查看>>
找水王
查看>>
牛客练习赛33 E tokitsukaze and Similar String (字符串哈希hash)
查看>>
专为多设备、多分辨率应用而设计
查看>>
51nod 1298 圆与三角形
查看>>
day 7-7 线程池与进程池
查看>>
VALSE2019总结(6)-年度总结-Re-ID
查看>>
luogu_1414 又是毕业季II
查看>>
List
查看>>