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

深度学习(14)--x.view()详解

在torch中,常用view()函数来改变tensor的形状

查询官方文档:

torch.Tensor.view — PyTorch 2.2 documentationicon-default.png?t=N7T8https://pytorch.org/docs/stable/generated/torch.Tensor.view.html#torch.Tensor.view示例

1.创建一个4x4的二维数组进行测试

x = torch.randn(4, 4)
print(x)
print(x.size())

(1).将二维数组变换为一维数组

y = x.view(16)
print(y)
print(y.size())

 (2).将二维数组变换为其他形式的二维数组

z = x.view(2, 8)
print(z)
print(z.size())

(3).可以将其中一个参数设置为-1,view()会根据已设置的维度自动推断出另外一个维度的大小 

# the size -1 is inferred from other dimensions
yy = x.view(-1, 8)
print(yy)
print(yy.size())

zz = x.view(8, -1)
print(zz)
print(zz.size())

可以看到分别得到了2x8的yy和8x2的zz,符合实际的情况。 

2.创建一个1x2x3x4的四维矩阵进行测试

x = torch.rand(1, 2, 3, 4)
print(x)
print(x.size())

(1).将四维数组变换为一维数组

y = x.view(-1)
print(y)
print(y.size())

(2).将四维数组变换为二维数组

z = x.view(2,-1)
print(z)
print(z.size())

(3).将四维数组变换为三维数组

a = x.view(2, -1, 4)
print(a)
print(a.size())

(4).将四维数组转换为其他形式的四维数组

b = x.view(1, 3, 2, 4)
print(b)
print(b.size())

值得注意的是view()函数并不改变tensor数据在内存中的层次 

利用tranpose函数进行验证,transpose函数可以交换数据指定的维度:

c = x.transpose(1, 2)
print(c)
print(c.size())

transpose(1,2)将第二个维度和第三个维度互换(四维对应的索引是0,1,2,3) 

 利用equal()函数判断b和c是否相同:

print("b和c是否相等:")
print(torch.equal(b, c))

由如上结果可知,view()函数并不改变数据在内存中的层次。 


http://www.kler.cn/a/231444.html

相关文章:

  • 【支持向量机(SVM)】:相关概念及API使用
  • 博客园-awescnb插件-geek皮肤优化-样式优化
  • ggplot2-scale_x_continuous()
  • 【MYSQL】锁详解(全局锁、表级锁、行级锁)【快速理解】
  • django——创建 Django 项目和 APP
  • 利用Python爬虫获取淘宝店铺详情
  • Kubernetes 是什么?
  • 【算法题】95. 不同的二叉搜索树 II
  • ChatPromptTemplate和AI Message的用法
  • C语言第二十弹---指针(四)
  • vue3-内置组件-KeepAlive
  • Android:IntentActivity,Service,BroadcastReceiver
  • FANUC机器人外部远程启动的相关参数设置示例
  • docker proxy 【docker 代理】
  • ChatGPT实战100例 - (14) 打造AI编程助手 Code Copilot
  • 相机图像质量研究(8)常见问题总结:光学结构对成像的影响--工厂调焦
  • BUGKU-WEB 留言板
  • 大数据环境搭建(一)-Hive
  • FFMPEG推流到B站直播
  • VRRP配置
  • 零基础学编程系列,从入门到精通,中文编程开发语言工具下载,编程构件容器件之控制面板构件用法
  • 多线程JUC:多线程的实现和常用成员方法(守护、礼让、插入线程)
  • 2024阿里云GPU服务器租用价格表(包月/按小时/学生价)
  • SpringBoot - 不加 @EnableCaching 标签也一样可以在 Redis 中存储缓存?
  • C++之std::tuple(一) : 使用精讲(全)
  • 【Qt】Android上运行keeps stopping, Desktop上正常