Объект odict_items не подлежит подписке, как с этим бороться?

Я попытался запустить этот код на Python 3 для ноутбука Jupyter:

class CSRNet(nn.Module): def __init__(self, load_weights=False): super(CSRNet, self).__init__() self.frontend_feat = [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 'M', 512, 512, 512] self.backend_feat = [512, 512, 512,256,128,64] self.frontend = make_layers(self.frontend_feat) self.backend = make_layers(self.backend_feat,in_channels = 512,dilation = True) self.output_layer = nn.Conv2d(64, 1, kernel_size=1) if not load_weights: mod = models.vgg16(pretrained = True) self._initialize_weights() for i in range(len(self.frontend.state_dict().items())): self.frontend.state_dict().items()[i][1].data[:] = mod.state_dict().items()[i][1].data[:]

он отображает объект 'odict_items' не может быть указан как ошибка в последней строке кода!! как с этим бороться?

1 ответ

В python3 items () возвращает объект dict_keys, вы должны попытаться преобразовать его в список: list (self.frontend.state_dict (). Items ()) [i] [1] .data [:] = list(mod.state_dict (). items ()) [i] [1] .data [:]

Другие вопросы по тегам