Я создал полностью подключенную сеть в Pytorch с входным слоем формы (1,784)
и первым скрытым слоем формы (1,256)
. Быть коротким: nn.Linear(in_features=784, out_features=256, bias=True)
Метод 1: model.fc1.weight.data.shape
дает мне torch.Size([128, 256])
, а
Метод 2: list(model.parameters())[0].shape
дает мне torch.Size([256, 784])
В На самом деле, между входным слоем размером 784 и скрытым слоем размером 256 я ожидал матрицу формы (784,256)
. Итак, в первом случае я вижу форму следующего скрытого слоя (128), который не имеет смысла для весов между входным и первым скрытым слоем, и, во втором случае, похоже, что Pytorch принял преобразование весовой матрицы.
Я не совсем понимаю, как Pytorch формирует различные весовые матрицы и как я могу получить доступ к индивидуальным весам после тренировки. Должен ли я использовать метод 1 или 2? Когда я отображаю соответствующие тензоры, дисплеи выглядят совершенно одинаково, а формы разные.