[Pytorch]寻求矢量化实现

时间:2018-09-09 08:26:06

标签: python deep-learning conv-neural-network pytorch

这是我的代码,“ x”是大小为(out_c,in_c,k_h,k_w)的常规CNN权重,其中 out_c 也是CNN内核的数量。 lb (下界)和 ub (上键)是两个预定义的一维numpy数组,长度为 out_c

任务是确保所有CNN内核权重的值在 lb ub (即 lb [i] < / strong> < x [i,:,:,:] < ub [i] ,0 <= i < out_c ),剪裁所有异常值。 此外,我需要保留离群值遮罩以用于其他用途。

但是,我找不到一个完全向量化的解决方案,因此不涉及for循环。我正在使用Pytorch 0.3.1,有什么方法可以使此代码段完全矢量化(摆脱for循环)?谢谢。

N = x.size(0) # number of cnn kernel
lower_mask = []
upper_mask = []
for i in range(N):
    lower_mask.append(x[i] < lb.tolist()[i])
    upper_mask.append(ub.tolist()[i] < x[i])
    x[i].clamp_(lb.tolist()[i], ub.tolist()[i])
lower_mask = torch.stack(lower_mask).cuda()
upper_mask = torch.stack(upper_mask).cuda()

0 个答案:

没有答案