PyTorch中view的用法
理解
我的理解就是将原来的tensor在进行维度的更改(根据参数的输入进行更改)后再进行输出,其实就是更换了tensor的一种查看方式
例子
a=torch.Tensor([[[1,2,3],[4,5,6]]]) b=torch.Tensor([1,2,3,4,5,6]) print(a.view(1,6)) print(b.view(1,6))
输出结果为
tensor([[1., 2., 3., 4., 5., 6.]])
同样的:
a=torch.Tensor([[[1,2,3],[4,5,6]]]) print(a.view(3,2))
输出结果为:
tensor([[1., 2.], [3., 4.], [5., 6.]])
注意
但是要注意原来的tensor与新的tensor是共享内存的,也就是说对其中的一个tensor进行更改的话,另外一个tensor也会自动进行相应的修改。
那么如果想生成不共享内存的tensor要怎么做呢?
应该使用clone()函数克隆和再进行view(),而且使⽤ clone 还有⼀个好处是会被记录在计算图中,即梯度回传到副本时也会传到源 Tensor 。
x_cp = x.clone().view(15) x -= 1 print(x) print(x_cp)
输出的结果:
tensor([[ 0.6035, 0.8110, -0.0451], [ 0.8797, 1.0482, -0.0445], [-0.7229, 2.8663, -0.5655], [ 0.1604, -0.0254, 1.0739], [ 2.2628, -0.9175, -0.2251]]) tensor([1.6035, 1.8110, 0.9549, 1.8797, 2.0482, 0.9555, 0.2771, 3.8663, 0.4345, 1.1604, 0.9746, 2.0739, 3.2628, 0.0825, 0.7749])
注意:有的是这样使用的
x.view(4, -1)
其中的-1是表示你不确定这里的维数是多少,但是你确定前面的行数是3,让系统自动调整
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 用 C# 插值字符串处理器写一个 sscanf
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!