List 如何随机混合两个PyTorch张量

List 如何随机混合两个PyTorch张量,list,pytorch,tensor,List,Pytorch,Tensor,我有两个形状相同的PyTorch张量A和B,我想创建一个形状相同的随机混合张量C,其中C[I,…]=A[I,…]的概率为α,或者B[I,…]的概率为1-α。有什么类似于蟒蛇的方法可以紧凑地实现这一点吗?考虑使用torch.bernoulli创建掩码张量: 进口火炬 概率=0.8 x=torch.full2,6,3,10.2,dtype=torch.float y=torch.full2,6,3,-1.6,dtype=torch.float 掩码=torch.bernoullitorch.full

我有两个形状相同的PyTorch张量A和B,我想创建一个形状相同的随机混合张量C,其中C[I,…]=A[I,…]的概率为α,或者B[I,…]的概率为1-α。有什么类似于蟒蛇的方法可以紧凑地实现这一点吗?

考虑使用torch.bernoulli创建掩码张量:

进口火炬 概率=0.8 x=torch.full2,6,3,10.2,dtype=torch.float y=torch.full2,6,3,-1.6,dtype=torch.float 掩码=torch.bernoullitorch.fullx.shape,prob.int 反向遮罩=torch.onesx.shape.int-遮罩 结果=x*遮罩+y*反向遮罩 结果是:

[[[10.2000, 10.2000, 10.2000], [10.2000, -1.6000, 10.2000], [10.2000, 10.2000, -1.6000], [-1.6000, 10.2000, -1.6000], [10.2000, 10.2000, 10.2000], [10.2000, 10.2000, 10.2000]], [[10.2000, 10.2000, -1.6000], [10.2000, 10.2000, 10.2000], [10.2000, 10.2000, -1.6000], [10.2000, -1.6000, 10.2000], [-1.6000, 10.2000, 10.2000], [10.2000, 10.2000, 10.2000]]] 祝你好运

考虑使用torch.bernoulli创建遮罩张量:

进口火炬 概率=0.8 x=torch.full2,6,3,10.2,dtype=torch.float y=torch.full2,6,3,-1.6,dtype=torch.float 掩码=torch.bernoullitorch.fullx.shape,prob.int 反向遮罩=torch.onesx.shape.int-遮罩 结果=x*遮罩+y*反向遮罩 结果是:

[[[10.2000, 10.2000, 10.2000], [10.2000, -1.6000, 10.2000], [10.2000, 10.2000, -1.6000], [-1.6000, 10.2000, -1.6000], [10.2000, 10.2000, 10.2000], [10.2000, 10.2000, 10.2000]], [[10.2000, 10.2000, -1.6000], [10.2000, 10.2000, 10.2000], [10.2000, 10.2000, -1.6000], [10.2000, -1.6000, 10.2000], [-1.6000, 10.2000, 10.2000], [10.2000, 10.2000, 10.2000]]]
祝你好运

我认为OP只想从第一维度进行选择。但想法基本相同。同样,反向屏蔽=1-屏蔽也应该工作。嗯。。。尝试一下这个建议,似乎有比我想要的更多的混合,也许是按照@Quang Hoang所指出的路线。但是,我并没有遵循大致相同的部分。@MarkLavin使用mask=torch.bernoullitorch.fullx.shape[:1],0.8[:,None,None]。我想OP只想从第一个维度进行选择。但想法基本相同。同样,反向屏蔽=1-屏蔽也应该工作。嗯。。。尝试一下这个建议,似乎有比我想要的更多的混合,也许是按照@Quang Hoang所指出的路线。但是,我并没有遵循大致相同的部分。@MarkLavin use mask=torch.bernoullitorch.fullx.shape[:1],0.8[:,None,None]。