栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pytorch之repeat尽可能全方位的理解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pytorch之repeat尽可能全方位的理解

1.不增加维度的情况
b=torch.arange(6).view(2,3)
tensor([[0, 1, 2],
        [3, 4, 5]])
b=b.repeat(2,3)
tensor([[0, 1, 2, 0, 1, 2, 0, 1, 2],
        [3, 4, 5, 3, 4, 5, 3, 4, 5],
        [0, 1, 2, 0, 1, 2, 0, 1, 2],
        [3, 4, 5, 3, 4, 5, 3, 4, 5]])
  • 分析:repeat的参数从右到左,tensor从里到外
    • 首先是最里层括号内的内容重复3遍,变成
      tensor([[0, 1, 2,0, 1, 2,0, 1, 2],
              [3, 4, 5,3, 4, 5,3, 4, 5]])
      
    • 然后第二里层括号内的内容重复2遍,变成
      tensor([[0, 1, 2,0, 1, 2,0, 1, 2],
              [3, 4, 5,3, 4, 5,3, 4, 5],
              [0, 1, 2,0, 1, 2,0, 1, 2],
              [3, 4, 5,3, 4, 5,3, 4, 5]])
      
2.增加维度的情况
a=torch.arange(3)
tensor([0, 1, 2])
a=a.repeat(2,1)
tensor([[0, 1, 2],
        [0, 1, 2]])
a=a.repeat(1,2)
tensor([[0, 1, 2, 0, 1, 2]])
  • 分析:repeat的参数从右到左,tensor从里到外
    • 首先是最里层括号内的内容重复1遍,也就是不变
    • 然后在最外面加一层括号,变成tensor([[0, 1, 2]])第二里层括号内的内容重复2遍,变成
      tensor([[0, 1, 2],
              [0, 1, 2]])
      
    • a.repeat(1,2)读者自己分析一下
3.如果2中的情况想要[0,0,0…1,1,1…2,2,2…]的结果呢
a=torch.arange(3)
tensor([0, 1, 2])
a=a.view(3,1)
tensor([[0],
        [1],
        [2]])
a=a.repeat(1,5)
tensor([[0, 0, 0, 0, 0],
        [1, 1, 1, 1, 1],
        [2, 2, 2, 2, 2]])
# 再repeat一下就是yolov3需要的方式了
a=a.repeat(3,1)
tensor([[0, 0, 0, 0, 0],
        [1, 1, 1, 1, 1],
        [2, 2, 2, 2, 2],
        [0, 0, 0, 0, 0],
        [1, 1, 1, 1, 1],
        [2, 2, 2, 2, 2],
        [0, 0, 0, 0, 0],
        [1, 1, 1, 1, 1],
        [2, 2, 2, 2, 2]])
4.留着补充新的情况
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021916.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号