gpt4 book ai didi

PyTorch - 改变 Conv2d 的权重

转载 作者:行者123 更新时间:2023-12-04 03:35:19 26 4
gpt4 key购买 nike

出于某种原因,我似乎无法在 PyTorch 中分配 Conv2d 层的所有权重 - 我必须分两步完成。任何人都可以帮助我解决我做错的事情吗?

layer = torch.nn.Conv2d(in_channels=1, out_channels=2, kernel_size=(2,2), stride=(2,2))
layer.state_dict()['weight']

给我一​​个大小为 (2,1,2,2) 的张量

tensor([[[[ 0.4738, -0.2197],
[-0.3436, -0.0754]]],

[[[ 0.1662, 0.4098],
[-0.4306, -0.4828]]]])

当我尝试像这样分配权重时

layer.state_dict()['weight'] = torch.tensor([
[[[ 1, 2],
[3, 4]]],

[[[-1, -2],
[-3, -4]]]
])

权重不变。但是,如果我这样做

layer.state_dict()['weight'][0] = torch.tensor([
[[[1, 2],
[3, 4]]],
])
layer.state_dict()['weight'][1] = torch.tensor([
[[[-1, -2],
[-3, -4]]],
])

权重发生变化。为什么会这样?

最佳答案

我不确定为什么你不能直接分配它们,但实现你想要做的事情的更合适的方法是

layer.load_state_dict({'weight': torch.tensor([[[[0.4738, -0.2197],
[-0.3436, -0.0754]]],
[[[0.1662, 0.4098],
[-0.4306, -0.4828]]]])}, strict=False)

关于PyTorch - 改变 Conv2d 的权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67014613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com