代码速度优化

记录一段相同功能,速度差异天壤之别的小段代码:

我写的,运行速度:乌龟界的扛把子!!!

zero = torch.zeros_like (d)
d_nonoise = torch.zeros_like (d)
for i in range (zero.shape[0]):
    for j in range (zero.shape[1]):
        d_nonoise[i][j] = torch.where (d[i][j] < (d[i][j].mean () + 3 * d[i][j].std ()), d[i][j], zero[i][j])
        d_nonoise[i][j] = torch.where (d[i][j] > (d[i][j].mean () - 3 * d[i][j].std ()), d[i][j], zero[i][j])

return d

请教后的代码:兔子中的扛把子!

d_mean = d.view (d.shape[0], d.shape[1], -1).mean (dim=-1, keepdim=True).unsqueeze (dim=-1).repeat (1, 1,d.shape[2],d.shape[3])
d_std = d.view (d.shape[0], d.shape[1], -1).std (dim=-1, keepdim=True).unsqueeze (dim=-1).repeat (1, 1,d.shape[2],d.shape[3])
zero = torch.zeros (size=(1,), device=d.device, dtype=d.dtype)
d_nonoise = torch.where ((d < (d_mean + 3 * d_std)) & (d > (d_mean - 3 * d_std)), d, zero)
d = d_nonoise
return d

仅以此警戒一下自己:好好写代码,写好代码!别再制造垃圾!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值