如何在FloatTensor、Pytorch中更改(分配)新值?

如何在FloatTensor、Pytorch中更改(分配)新值?,pytorch,assign,Pytorch,Assign,我正在更改/分配数组上的值(torch.cuda.floatTensor)。我试过一些方法,但不起作用。请帮帮我 #一, #三, #dis是[torch.cuda.FloatTensor,大小为3185x1(GPU 0)] s=尺寸(0) a=火炬.0(s,1).cuda() 对于范围(0,s,1)内的i: 如果(dis[i,0]

我正在更改/分配数组上的值(torch.cuda.floatTensor)。我试过一些方法,但不起作用。请帮帮我

#一,

#三,

#dis是[torch.cuda.FloatTensor,大小为3185x1(GPU 0)]
s=尺寸(0)
a=火炬.0(s,1).cuda()
对于范围(0,s,1)内的i:
如果(dis[i,0]
IIUC,您需要将小于0的值替换为0,只需使用,这适用于此类用例:

dis = dis.clamp(min=0)
例如:

导入火炬
dis=火炬张量([[1]、-3]、[0]])
#张量([[1],
#        [-3],
#        [ 0]])
dis.夹具(最小值=0)
#张量([[1],
#        [0],
#        [0]])

IIUC,您需要将小于0的值替换为0,只需使用,这适用于此类用例:

dis = dis.clamp(min=0)
例如:

导入火炬
dis=火炬张量([[1]、-3]、[0]])
#张量([[1],
#        [-3],
#        [ 0]])
dis.夹具(最小值=0)
#张量([[1],
#        [0],
#        [0]])

谢谢你的帮助!在我的情况下效果很好。但在某些情况下,如将特定值替换为特定位置。你能告诉我怎么做吗?非常感谢。例如:like#3 s=dis.size(0)a=torch.random(s,1).cuda()代表范围(0,s,1)中的i:if(dis[i,0]#dis is [torch.cuda.FloatTensor of size 3185x1 (GPU 0)] s = dis.size(0) a = torch.zeros(s, 1).cuda() for i in range (0,s,1): if (dis[i,0] < a[i, 0]): dis[i,0]==a[i, 0] #RuntimeError: bool value of Variable objects containing non-empty torch.cuda.ByteTensor is ambiguous
dis = dis.clamp(min=0)