Python 如何根据另一个张量的值更改PyTorch张量的一部分?

Python 如何根据另一个张量的值更改PyTorch张量的一部分?,python,pytorch,Python,Pytorch,这个问题可能不清楚,因此请在评论中要求澄清,我将进一步说明 我有以下形状的张量: mask.size() == torch.Size([1, 400]) clean_input_spectrogram.size() == torch.Size([1, 400, 161]) output.size() == torch.Size([1, 400, 161]) mask仅由0和1组成。由于它是一个掩码,我想将output的元素设置为clean\u input\u spectrogram,其中相关的

这个问题可能不清楚,因此请在评论中要求澄清,我将进一步说明

我有以下形状的张量:

mask.size() == torch.Size([1, 400])
clean_input_spectrogram.size() == torch.Size([1, 400, 161])
output.size() == torch.Size([1, 400, 161])
mask
仅由
0
1
组成。由于它是一个掩码,我想将
output
的元素设置为
clean\u input\u spectrogram
,其中相关的
mask
值为
1


我该怎么做?

您可以这样做,其中:

  • m
    是你的面具
  • x
    是您的spect图
  • o
    是您的输出
导入火炬
火炬.人工种子(2020年)
m=火炬张量([[0,1,0]])到(火炬int32)
x=火炬的兰特((1,3,2))
o=火炬的兰特((1,3,2))
打印(o)
#张量([[0.5899,0.8105],
#          [0.2512, 0.6307],
#          [0.5403, 0.8033]]])
打印(x)
#张量([[0.4869,0.1052],
#          [0.5883, 0.1161],
#          [0.4949, 0.2824]]])
o[:,m[0]。到(torch.bool),:]=x[:,m[0]。到(torch.bool),:]
#或
#o[:,m[0]==1,:]=x[:,m[0]==1,:]
打印(o)
#张量([[0.5899,0.8105],
#          [0.5883, 0.1161],
#          [0.5403, 0.8033]]])

你能解释一下
.to(torch.bool)
的功能吗?@Shamoon它会转换成布尔值我的掩码与我的输入/输出的维度不同我能做什么:
输出[mask==0.0]=input\u光谱图[mask==0.0]
如果掩码为0,我该怎么做?