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

相关文章

(超详细)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 赋值

git reset --hard,--soft,--mix 如果代码不见了,应该怎么操作

git reset 首先需要知道工作区(working diretory)和暂存区(Stage)这两个概念。工作区的概念不仅包含你实际更改的文件还应当包括当前修改但未add存入暂存区的文件变化信息,暂存区的作用则是临时存储文件的变化信息,在git add file操作之后,暂存区中将记录file文件上的修改信息。暂存区的存在更细化了时间节点,要知道commit的往往是有重大改变的版本或者是在一次

CODEFORCES --- 151A. Soft Drinking

151A. Soft Drinking 今年冬天的恩沃茨克非常寒冷!一群 n 朋友决定买 k 瓶名为 "Take-It-Light "的软饮料来取暖。每瓶饮料有 l 毫升。他们还买了 c 个酸橙,并把每个酸橙切成 d 片。之后,他们又找到了 p 克盐。 为了祝酒,每个朋友需要 nl 毫升饮料、一片青柠和 np 克盐。朋友们想尽可能多地干杯,前提是他们喝的量相同。每个朋友可以干多少杯? 输入

目标检测之Soft-NMS

一、目标检测之Soft-NMS Improving Object DetectionWith One Line of Code 论文链接:https://arxiv.org/abs/1704.04503论文代码:https://github.com/bharatsingh430/soft-nms 二、Soft-NMS 算法 原来的NMS可以描述如下:将IOU大于阈值的窗口的得分全部置为0

numpy.argmin()||argmax()结构及用法||详解axis

numpy.argmin(a, axis=None, out=None)官方文档 参数详解 a : array_like 输入数组 axis : int, optional 默认输入数组展平,否则,按照指定的axis方向 按照指定轴,可以理解为将数据投影到这个轴上。 out : array, optional如果设置了某个数组b,则结果会输出到b中 返回:index_array

Soft Robotics:两栖环境下螃蟹仿生机器人的行走控制

传统水陆两栖机器人依靠轮胎或履带与表面的接触及摩擦产生推进力,这种对于表面接触的依赖性限制了现有水陆两栖机器人在低重力环境下(如水中)的机动性。利用生物自身的推进机制,人为激发生物运动行为,由活体生物与微机电系统组成的生物-机械混合系统为构建微小型水陆两栖机器人提供新思路。在广泛的生物载体中,螃蟹由于具有独特的步态,除此以外,螃蟹在水中使用鳃进行气体交换,使其可以在水下长期停留而不需浮到水面上,这