pytroch中数据维度扩张

背景

最近做学习训练时,需要加入时间维度。
将原本是[B,C,H,W]格式的输入变成[B,T,C,H,W]的输入,方便使用Timedistribute封装层或者ConvLSTM。

方法

其实并不复杂,利用滑动窗口来对原本batch size进行分割,直接看代码吧

class dimsexpand(nn.Module):
    def __init__(self,slide_num=1,timesteps=3):
        super(dimsexpand,self).__init__()
        self.slide_num = slide_num
        self.timesteps = timesteps

    def forward(self,x):
        window_num = int((x.shape[0] - self.timesteps)/self.slide_num)
        x = list(x[i * self.slide_num:i * self.slide_num+self.timesteps] for i in range(window_num))
        x = torch.stack(x,0)
        return x

处理后数据:
[B1,C,H,W] → [B2,T,C,H,W]
其中:
B1 = B2 + T
做一个简单的测试

if __name__ == '__main__':
    net = dimsexpand()
    input = torch.rand((5, 3, 512, 512))
    output = net(input)
    print('result:',output.size())

输出:result: torch.Size([2, 3, 3, 512, 512])

做个记录,以免遗忘

以上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值