Документация для PyTorch .to ('cpu') или .to ('cuda') - PullRequest
0 голосов
/ 01 декабря 2018

Я искал документацию PyTorch , но не могу найти ничего для .to(), которое перемещает тензор в память CPU или CUDA.

Я помню, как где-то видел этот вызовto() для nn.Module - операция на месте, но не для тензора.

Есть ли версия на месте для Tensor s?

Где я могунайти документ для to() для nn.Module и Tensor (и, возможно, в другом месте)?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Вы уже нашли документацию!отлично.

.to не является операцией на месте для тензоров.Однако, если никакого перемещения не требуется, он возвращает тот же тензор.

In [10]: a = torch.rand(10)

In [11]: b = a.to(torch.device("cuda"))

In [12]: b is a
Out[12]: False

In [18]: c = b.to(torch.device("cuda"))

In [19]: c is b
Out[19]: True

Так как b уже на gpu и, следовательно, никаких изменений не производится, и c is b приводит к True.

Однако для моделей это операция на месте, которая также возвращает модель.

In [8]: import torch
In [9]: model = torch.nn.Sequential (torch.nn.Linear(10,10))

In [10]: model_new = model.to(torch.device("cuda"))
In [11]: model_new is model
Out[11]: True

Имеет смысл сохранять ее на месте для моделей, так как параметры модели необходимыбыть перемещенным на другое устройство, а не model объект.Тензор, кажется, новый объект создан.

0 голосов
/ 01 декабря 2018

Я все еще учусь ориентироваться на сайте документации (поиск не велик).

Вот что я нашел:

torch.Tensor.to()

Версия с тензорным кодом либо возвращает:

  • selfесли тензор уже находится в целевом формате, или,
  • копия тензора в целевом формате

В списке нет версии на месте.


torch.nn.Module.to()

Документация подразумевает, что это операция на месте:

Перемещает и / или преобразует параметры и буферы.

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