码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • pytorch中gather函数详解【包你看懂,我敢说在CSDN上没人解释的比我清楚】


    在看centernet中遇到gather函数,看了好几个博客也都没咋看懂,直到看了这个视频链接,在此感谢这位哔站up主。

    直接先看代码:

    import torch
    a = torch.arange(15).view(3, 5)
    b = torch.zeros_like(a)
    b[1][2] = 1
    b[0][0] = 1
    print(a)
    print(b)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    输出:

    tensor([[ 0,  1,  2,  3,  4],
            [ 5,  6,  7,  8,  9],
            [10, 11, 12, 13, 14]])
    tensor([[1, 0, 0, 0, 0],
            [0, 0, 1, 0, 0],
            [0, 0, 0, 0, 0]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    代码:

    c = a.gather(0, b) # dim=0
    d = a.gather(1, b) # dim=1
    print(c)
    print(d)
    
    • 1
    • 2
    • 3
    • 4

    输出:

    tensor([[5, 1, 2, 3, 4],
            [0, 1, 7, 3, 4],
            [0, 1, 2, 3, 4]])
    tensor([[ 1,  0,  0,  0,  0],
            [ 5,  5,  6,  5,  5],
            [10, 10, 10, 10, 10]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    首先解释一下什么是dim=0和dim=1,其实0和1是索引矩阵b在被索引矩阵a索引的位置,例如dim=0,以3维为例,
    output [ i ] [ j ] [ k ] [i][j][k] [i][j][k]=input [ i n d e x [ i ] [ j ] [ k ] ]    [ j ] [ k ] [index[i][j][k]]\ \ [j][k] [index[i][j][k]]  [j][k]
    dim=1,
    output [ i ] [ j ] [ k ] [i][j][k] [i][j][k]=input [ i ]   [ i n d e x [ i ] [ j ] [ k ] ]   [ k ] [i]\ [index[i][j][k]]\ [k] [i] [index[i][j][k]] [k]

    上面的代码中,c、d为output,a为input,b为index,
    所以c = a.gather(0, b) # dim=0,
    c[0][0]=a[b[0][0]] [0]=a[1][0]=5
    c[0][1]=a[b[0][1]] [1]=a[0][1]=1
    c[0][2]=a[b[0][2]] [2]=a[0][2]=2
    。。。依此类推
    c = a.gather(0, b) # dim=1,
    c[0][0]=a[0][b[0][0]]=a[0][1]=1
    c[0][1]=a[0][b[0][1]]=a[0][0]=0
    c[0][2]=a[0][b[0][2]]=a[0][0]=0

    c[1][0]=a[1][b[1][0]]=a[1][0]=5
    c[1][1]=a[1][b[1][1]]=a[1][0]=5
    c[1][2]=a[1][b[1][2]]=a[1][1]=6
    。。。依此类推

  • 相关阅读:
    【lwip】09-IPv4协议&超全源码实现分析
    服务器日志出现大量NTLM(NT LAN Manager)攻击
    基于stm32单片机的超声波测距显示倒车雷达提醒报警系统Proteus仿真
    计算机网络 网络原理之Http
    文件上传漏洞案例
    基于回溯搜索优化的BP神经网络(分类应用) - 附代码
    损失函数总结(三):BCELoss、CrossEntropyLoss
    Mysql 索引
    酷雷曼多种AI数字人形象,打造科技感VR虚拟展厅
    ansible及其模块
  • 原文地址:https://blog.csdn.net/qq_23022733/article/details/126072740
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号