分享一下自己目前在维护的Github项目,由于本人博士阶段接触了一个全新的研究方向-----使用机器学习、强化学习、深度学习等方法解决组合优化问题,维护这个项目的目的:
(1)记录自己阅读过的paper,同时分享一下对某些paper的见解;
(2)方便其他的初学者或研究生查阅最新的paper;
⭐️ 项目链接:Welcom to COPZoo
一、前言
嗯……,又是奇奇怪怪的方法,果然,你能想到的功能,大佬们已经实现了。今天要分享的内容是torch.repeat_interleave() 方法。话不多说,Let’s go!
二、方法解析
官方对repeat_interleave方法的介绍及其简单,介绍的越简单,对于使用者来说越难以理解。官方解释:重复一个tensor中元素。嗯……确实简单!
参数
- input:白话就是你要操作的tensor
- repeat:每个元素要重复的次数,可以是int型;也可以是一个Tensor,但要注意的是,这个Tensor进行广播后,要符合给定维度的shape。
- dim:可选参数,你想要沿着哪个维度进行重复。值得注意的是:如果不设置,默认首先将input展开为1维tensor,然后再进行重复。
output_size:可选参数,一般用不到。这里没研究。
三、案例分析
import numpy as np
import torch
3.1 案例1 - repeats为default
t = torch.tensor([[1,2,3],[4,5,6]])
t
t1 = torch.repeat_interleave(input=t, repeats=2)
t1
3.2 案例2 - repeats为int型
repeats=0
t2 = torch.repeat_interleave(input=t, repeats=2, dim=0)
t2
repeats=1
t3 = torch.repeat_interleave(input=t, repeats=2, dim=1)
t3
3.3 案例3 - repeats为tensor型
t4 = torch.repeat_interleave(input=t, repeats=torch.tensor([2,3]), dim=0)
t4
t5 = torch.repeat_interleave(input=t, repeats=torch.tensor([2,3,1]), dim=1)
t5