人工智能pytorch中常用的张量tensor操作的总结

专栏限时推广

人工智能pytorch中常用的张量tensor操作的总结

专栏

每天五分钟玩转深度学习PyTorch

作者:幻风的AI之路

42币

68人已购

查看

人工智能pytorch中常用的张量tensor操作的总结

专栏

每天五分钟快速玩转深度学习算法

作者:幻风的AI之路

39.9币

553人已购

查看

正文(本内容来源于部分pytorch专栏)

view和shape,这两个方法可以完成维度的变换操作,而且使用方法是一样的

人工智能pytorch中常用的张量tensor操作的总结

squeeze和unsqueeze

人工智能pytorch中常用的张量tensor操作的总结

人工智能pytorch中常用的张量tensor操作的总结

单纯的torch.tensor([1]),此时它的维度是torch.size([1]),也就是一维的,然后给他添加上一个维度,那么此时它是二维的

人工智能pytorch中常用的张量tensor操作的总结

Squeeze()如果不指定参数,则表明删除所有维度中为1的,如果指定参数,则删除指定索引中维度为1的

维度扩展expand(只扩展但是没有增加数据,常用) repeat(有扩展而且有增加数据,会将数据进行复制)

人工智能pytorch中常用的张量tensor操作的总结

只能对维度中为1的进行扩展操作,然后-1就表明不扩展,保持原样

人工智能pytorch中常用的张量tensor操作的总结

repeat中的不是表明扩展成什么,而是表明扩展多少倍

其中1,1,28,28表明第一维度扩展1倍,第二维度扩展1倍,第三位度扩展28倍,第四维度扩展28倍

其中1,3,14,14表明第一维度扩展1倍,第二维度扩展3倍,第三位度扩展14倍,第四维度扩展14倍

人工智能pytorch中常用的张量tensor操作的总结

print(a.transpose(0,1).shape)表明交换0和1维度

print(a.transpose(0,3).shape)表明交换0和3维度

人工智能pytorch中常用的张量tensor操作的总结

这样不可以数据是有错误的,并没有回复到原来的维度

人工智能pytorch中常用的张量tensor操作的总结

错误提示使用contiguous方法

人工智能pytorch中常用的张量tensor操作的总结

Permute可以同时让多个维度交换

人工智能pytorch中常用的张量tensor操作的总结

增加维度或者减少维度

#unsqueeze表明增加维度
#squeeze表明减少维度
#unsqueeze(0)表明增加一维到第一维
#unsqueeze(1)表明增加一维到第二维
#x.shape[4,3,1]
x=x.unsqueeze(0)#torch.Size([1,4, 3, 1])
x=x.unsqueeze(0)#torch.Size([1,1,4, 3, 1])
x=x.squeeze(0)#减少第一维torch.Size([1, 4, 3, 1])
x=x.squeeze()#去掉所有的一维的torch.Size([4, 3])
print(x.shape)
###############维度交换和重新排列维度#############
#使用permute完成重拍维度
#使用transpose进行维度交换
#创建一个tensor矩阵,其中有三个维度,第一个维度大小为7,第二个维度大小为8,第三个维度大小为9
x=torch.randn(7,8,9)#torch.Size([7, 8, 9])
x=x.permute(2,0,1)#将x的1,2,3维度变为3,1,2维度torch.Size([9, 7, 8])
x=x.transpose(0,1)#将x的第一维度和第二维度调换torch.Size([7, 9, 8])
###################维度变换#########################
x=torch.randn(3,4,5)
x.view(3,-1)#torch.Size([3, 20])
print(x.shape)
© 版权声明

相关文章

暂无评论

none
暂无评论...