目录1storage(2stride )3 storage_offset ) )。
1存储() )
pytorch的一个tensor被分成头部信息区域(tensor )和存储区域(Storage )
信息区域主要保存着tensor的形状(size )、步长(stride )、数据类型(type )等信息。
真正的数据存储为连续数组,并存储在存储区域中。
通常,一个tensor有对应的存储,但在另一种情况下,多个tensor对应同一个存储。 这些tensor只是头部信息区域不同。
a=torch.arange(6) a tensor ([ 0,1,2,3,4,5 ] (a.storage ) ) 01234b=a.view ) ) 2,3 ) btensor ) 3 ) 5b 5) ) b.storage (012345 [ torch.longstorageofsize6] c=a [ 3: ] ctensor ([ 3,4,5 ] c.storage () 0123340 )
因为a [4]=9a tensor ([ 0,1,2,3,9,5 ] ) tensor ) [ 0,1,2 ],[ 3,9,5 ] ) [ 3,9,9,5 ] )
2 stride (在官方文档中,stride是从给定维dim中的一个元素跳到下一个元素的必要步骤。 如果未传递参数,则返回所有步骤的元组。 否则,整数值作为特定维dim的步骤返回。
b tensor ([ 0,1,2 ],[ 3,9,5 ] ) (b.stride ) ),1 ) b.stride(0) 3b.stride(1) 1上面的三个是第0维的一个元素) 0
3 storage_offset ) )返回tensor的第一个元素和storage的第一个元素的偏移。
b.storage(01239 )5[ torch.longstorageofsize6] b tensor ) [ 0,1,2 ],[ 3,9,5 ] (b.storage _ offset ) )。
c.storage (012395 [ torch.longstorageofsize6] ctensor ) [ 2,3,9,5 ] ) c.storage_offset ) 2 c的第一个元素是2,2是
参考博客: https://www.cn blogs.com/wanghui-Garcia/p/10623033.html