Разница в параметрах 1.1.0 и 1.3.0 в параметре - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь изучить PyTorch и пытался запустить какой-то код, полученный с сайта Kaggle.

# Get all hidden layers' weights
for i in range(len(hidden_units)):
  fc_layers.extend([
    TrainNet.model.hidden_layers[i].weight.T.tolist(), # weights
    TrainNet.model.hidden_layers[i].bias.tolist() # bias
  ])

Это выдает следующую ошибку:


AttributeError                            Traceback (most recent call last)
<ipython-input-12-65f871b6f0b7> in <module>
  4 for i in range(len(hidden_units)):
  5     fc_layers.extend([
----> 6         TrainNet.model.hidden_layers[i].weight.T.tolist(), # weights
  7         TrainNet.model.hidden_layers[i].bias.tolist() # bias
  8     ])

AttributeError: 'Parameter' object has no attribute 'T'

Если я распечатываю тип 'Trai nNet .model.hidden_layers [i] .weight', это действительно тип Parameter. Этот блок кода работает без ошибок на веб-сайте Kaggle, который запускается в этой записной книжке (я думаю, Google Colab), где версия Torch - 1.3.0.

На моей домашней машине, где возникает ошибка, мой дистрибутив Anaconda, который я только что обновлено работает Torch 1.1.0.

Является ли это источником ошибки и как мне ее отсортировать?

Спасибо

1 Ответ

2 голосов
/ 21 февраля 2020

класс Parameter является подклассом Тензор , следовательно, имеет все атрибуты torch.Tensor класса

Tensor.T, введенного в 1.2.0 и, следовательно, недоступно в вашем 1.1.0

Вы можете либо обновить версию pytorch, либо использовать метод permute вместо нее, как показано в примере ниже

>>> t = torch.Tensor(np.random.randint(0,100,size=(2,3,4))) # -> random Tensor with t.shape = (2,3,4)
>>> t.shape
torch.Size([2, 3, 4])
>>> list(range(len(t.shape)))[::-1]
[2,1,0] # This is the sequence of dimensions t.T will return in 1.2.0 onwards
>>> t = t.permute(list(range(len(t.shape)))[::-1])
>>> t.shape
torch.Size([4, 3, 2])

It эквивалентно выполнению транспонирования матрицы, т. е. обращению последовательности измерений, но в N мерных тензорах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...