python - 重塑 Pytorch 张量
问题描述
我(24, 2, 224, 224)
在 Pytorch 中有一个大小的张量。
- 24 = 批量大小
- 2 = 代表前景和背景的矩阵
- 224 = 图像高度尺寸
- 224 = 图像宽度尺寸
这是执行二进制分割的 CNN 的输出。在 2 个矩阵的每个单元格中存储该像素为前景或背景的概率:[n][0][h][w] + [n][1][h][w] = 1
对于每个坐标
我想将它重塑为 size 的张量(24, 1, 224, 224)
。新层中的值应该是0
或1
根据概率较高的矩阵。
我怎样才能做到这一点?我应该使用哪个功能?
解决方案
使用torch.argmax()
(对于 PyTorch +0.4):
prediction = torch.argmax(tensor, dim=1) # with 'dim' the considered dimension
prediction = prediction.unsqueeze(1) # to reshape from (24, 224, 224) to (24, 1, 224, 224)
如果 PyTorch 版本低于 0.4.0,则可以使用tensor.max()
它返回最大值和它们的索引(但不能通过索引值区分):
_, prediction = tensor.max(dim=1)
prediction = prediction.unsqueeze(1) # to reshape from (24, 224, 224) to (24, 1, 224, 224)
推荐阅读
- python - 在 python 中的一张图表上绘制销售额和利润
- android - 如何在应用程序关闭时实时接收呼叫/消息
- google-slides - 如何在谷歌幻灯片中重置一次子弹行为
- javascript - 如何使用 React 在 5 秒后自动触发按钮单击?
- r - 如何研究 R 中这两个变量之间的关系?
- uwp - UWP 应用程序在启动时无法正确运行
- django - 当检查布尔字段修改数据库中的其他表时,django-django admin 中的 List_editable
- vue.js - How to add inline @change or @update function?
- api - Nexmo 自动重播收入短信
- flutter - Flutter Web - 在同一选项卡中打开外部网址