张量不能通过unsqueeze2

问题描述

rho = base[0][:,1:,:]
mu = base[1][:,:]
diff_time = (time[:,1:] - time[:,:-1]) * non_pad_mask[:,1:]
temp_time = diff_time.unsqueeze(2) * \
           torch.rand([*diff_time.size(),num_samples],device=data.device) 
temp_time /= (time[:,:-1] +1).unsqueeze(2) 
all_base = torch.zeros(rho.size())
for i in range(rho.size()[2]):
    slice_of_mu = mu.clone()[:,:,i]
    slice_of_mu = slice_of_mu.unsqueeze(2)
    slice_of_rho = rho.clone()[:,i]
    slice_of_rho = slice_of_rho.unsqueeze(2)
    all_base[:,i] = all_base[:,i] + ( slice_of_mu * slice_of_rho * temp_time ^ ( slice_of_rho - 1 ) )

rho和mu的大小为[16,99,5],而temp_time的大小为[16,100],我想按for循环中所示计算all_base的值,我对它们进行切片,不挤压和变形张量以确保其尺寸一致,但在最后一行出现错误

bitwise_xor():带有out = ...参数的函数不支持自动微分,但是其中一个参数需要grad。

compute_integral_unbiased中的文件“ .......”,第47行 all_base [:,:,i] = all_base [:,:,i] +(slice_of_mu * slice_of_rho * temp_time ^(slice_of_rho-1))

我不知道如何解决这个问题。你能给我些帮助吗?非常感谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)