soft-argmax踩坑

2023-12-11 02:59
文章标签 soft argmax

本文主要是介绍soft-argmax踩坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在2D human pose estimation时需要用到soft-argmax,找了几个版本的函数,都有一个问题

RuntimeError: "softmax_lastdim_kernel_impl" not implemented for 'Long'

一、代码如下

def softargmax2d(input, beta=100):*_, h, w = input.shapeinput = beta*input.reshape(*_, h * w)input = F.softmax( input, dim=-1)indices_c, indices_r = np.meshgrid(np.linspace(0, 1, w),np.linspace(0, 1, h),indexing='xy')indices_r = torch.tensor(np.reshape(indices_r, (-1, h * w)))indices_c = torch.tensor(np.reshape(indices_c, (-1, h * w)))result_r = torch.sum((h - 1) * input * indices_r, dim=-1)result_c = torch.sum((w - 1) * input * indices_c, dim=-1)result = torch.stack([result_r, result_c], dim=-1)return result

二、测试如下

c=[[[[1,2,3],[4,5,16],[7,8,9]],[[1,2,3],[4,5,6],[7,8,9]]]]
c=torch.tensor(c)
print(c.size())
b=softargmax2d(c)
print(b)

三、结果如下

Traceback (most recent call last):
torch.Size([1, 2, 3, 3])
  File "F:/pythonprogram/mon_repnet/wrm_model.py", line 202, in <module>
    b=softargmax2d(c)
  File "F:/pythonprogram/mon_repnet/wrm_model.py", line 172, in softargmax2d
    input = F.softmax( input, dim=-1)
  File "E:\software\python36\lib\site-packages\torch\nn\functional.py", line 1231, in softmax
    ret = input.softmax(dim)
RuntimeError: "softmax_lastdim_kernel_impl" not implemented for 'Long'

找了很久你会发现很难搜到解决办法,其实……只要

四、修正如下

c=[[[[1,2,3],[4,5,16],[7,8,9]],[[1,2,3],[4,5,6],[7,8,9]]]]
c=torch.tensor(c).float()
print(c.size())
b=softargmax2d(c)
print(b)

转换输入的类型为float即可,额~~~~~~~

五、最终结果如下

torch.Size([1, 2, 3, 3])
tensor([[[1., 2.],
         [2., 2.]]], dtype=torch.float64)

答案正确,最大值坐标分别为(1,2),(2,2)

这篇关于soft-argmax踩坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/479224

相关文章

【xilinx】Versal Soft DDR4 内存控制器 - XCVP1902-2M 速度等级设备上某些存储体的时序收敛问题

描述 当在 XCVP1902 设备上使用软核内存控制器时,如果速度等级为 -2M,目标 Fmax 为 2933 Mbps,某些设计可能无法满足某些存储体的时序要求。 解决方案 如果软核存储控制器使用 SLR0 中的存储体 704/707、SLR3 中的存储体 714/719、SLR1 中的存储体 804/807 或 SLR2 中的存储体 814/819,那么时序收敛可能会很困难。

watchdog: BUG: soft lockup

故障现象: 故障原因: 不知道。 解决办法: 由12个改成2个;然后重新开机虚拟机, 临时解决了。

【银河麒麟高级服务器操作系统】soft lockup软锁实例详细记录分析及处理建议

了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://documentkylinos.cn 现象描述 启nginx服务,但是报了softlock的错误,而且当时负载比较高,资源占用 现象分析 message日志分析

理解torch.argmax() ,我是错误的

torch.max() import torch# 定义张量 bb = torch.tensor([[1, 3, 5, 7],[2, 4, 6, 8],[11, 12, 13, 17]])# 使用 torch.max() 找到最大值max_indices = torch.max(b, dim=0)print(max_indices) 输出:>>> print(max_indices) to

Openstack -- Soft/Hard Reboot

1、nova 命令 #软重启nova reboot SERVER#硬重启nova reboot --hard SERVER 2、软硬重启区别 1) 软重启只是重启操作系统 ,整个过程中,虚拟机还处于运行状态,相当于在linux中执行reboot命令; 2)硬重启是重启虚拟机,相当于关机之后再开机。 3、代码分析 #nova.nova.api.openstack.compute.se

(超详细)YOLOV7改进-Soft-NMS(支持多种IoU变种选择)

1.在until/general.py文件最后加上下面代码 2.在general.py里面找到这代码,修改这两个地方 3.之后直接运行即可

东芝-Soft Limit 报警及其解决办法

灵感来源与生活,在生活中总能有意想不到的惊喜,下面来看看小编今天的惊喜!!! 今天不知道怎么了,有人来找就说是机器人坏了,一直报警,重启关机回原点也没有用。 意外到来,只能使用手柄将控制器打手动,来看看报警显示什么。 下面就看到了这,我靠第一次看见,只能看看手册(看手册非常重要),看看报警篇怎么解决了  手册内容如下 简单来说好解决 解决办法:

UltraScale Soft Error Mitigation

https://forums.xilinx.com/t5/%E5%85%B6%E4%BB%96FPGA%E5%99%A8%E4%BB%B6%E6%9E%B6%E6%9E%84/Xilinx-%E8%BD%AF%E9%94%99%E8%AF%AF%E7%BC%93%E8%A7%A3-SEM-IP%E5%86%85%E9%83%A8%E5%B7%A5%E4%BD%9C%E6%9C%BA%E7

Pytorch实用教程:pytorch中 argmax(dim)用法详解

argmax(dim) 是 PyTorch 中的一个函数,用于找出指定维度上最大值的索引。argmax 函数是在多维张量上进行操作的,通过 dim 参数可以指定在哪一个维度上查找最大值。 参数解释 dim: 指定要在哪个维度上执行寻找最大值的操作。维度的索引从 0 开始,对应于张量的各个轴。 返回值 返回一个新的张量,包含了指定维度 dim 上每个位置最大值的索引。 使用场景 在深

tf.nn.conv2,cross_entropy,loss,sklearn.preprocessing,next_batch,truncated_normal,seed,shuffle,argmax

tf.truncated_normal https://www.tensorflow.org/api_docs/python/tf/random/truncated_normal truncated_normal( shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None ) seed: 随机种子,若 seed 赋值