我的模型有一个原始输入值张量
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。我哪里做错了?
在这里使用
deepcopy
:
from copy import deepcopy
pa = deepcopy(patches)
正如 jasonharper 所提到的,当你执行
pa = patches
时,它们基本上指的是具有两个不同名称的相同张量。因此,无论您对其中一个进行任何更改,都会自动应用到另一个。