如何将torch.return_types.max转换为Tensor传入torch.tile?
问题原因
不带dim参数调用torch.max()时,返回的是torch.return_types.max类型的命名元组,包含两个字段:
- 第一个字段
values:全局最大值张量 - 第二个字段
indices:全局最大值对应的坐标索引张量
直接将整个元组传入torch.tile会触发类型不匹配报错。
解决方案
方法1:提取torch.max()返回的最大值张量
两种等价写法任选即可:
- 按下标取第一个元素
torch.tile(torch.max(x)[0], (1, 1, 1, 5)) - 按属性名取
values字段,可读性更高torch.tile(torch.max(x).values, (1, 1, 1, 5))
方法2:直接使用仅返回最大值的torch.amax()函数
如果不需要最大值对应的索引,可以直接用torch.amax(),该函数直接返回张量类型的最大值,不需要额外提取字段:torch.tile(torch.amax(x), (1, 1, 1, 5))
如果需要在指定维度上求最大值,上述方案同样适用:给torch.max()传入dim参数后依然取values字段,或者给torch.amax()传入对应的dim参数即可。
内容的提问来源于stack exchange,提问作者evaleria
相关产品推荐
相关产品推荐

