用模型预测值替换原始像素值:比较两个张量时返回True?

问题描述 投票:0回答:1

我的模型有一个原始输入值张量

patches

patches.shape
torch.Size([64, 1280, 10])  # batch: 64, number of patches: 1280, original pixel values of each patch: 10

我的模型预测被屏蔽的特定补丁的像素值,并且屏蔽补丁的索引保存在

masked_indices
中,形状为
torch.Size([64, 896])
意味着模型预测了 1280 个补丁中的 896 个补丁。

我想用模型的新预测值替换这 896 个补丁的原始像素值 (

pred_pixel_values, shape: torch.Size([64, 896, 10])
)。我做了以下事情

# for indexing purposes
batch_range = torch.arange(batch, device=device)[:, None]

pa = patches
pa[batch_range, masked_indices, :]= pred_pixel_values
pa.shape
torch.Size([64, 1280, 10])

我想比较一下值是否被替换:

torch.equal(pa,patches)

但它返回 True。我哪里做错了?

python python-3.x deep-learning pytorch pytorch-lightning
1个回答
0
投票

在这里使用

deepcopy

from copy import deepcopy
pa = deepcopy(patches)

正如 jasonharper 所提到的,当你执行

pa = patches
时,它们基本上指的是具有两个不同名称的相同张量。因此,无论您对其中一个进行任何更改,都会自动应用到另一个。

© www.soinside.com 2019 - 2024. All rights reserved.