Я пытаюсь придерживаться концепции Torch, чтобы гарантировать, что если структуры данных, с которыми я работаю, находятся в графическом процессоре, то все они находятся в графическом процессоре, и наоборот, чтобы Я не смешиваю переменные уровня хоста и устройства.
Проблема
Поэтому я хочу определить переменную или небольшой вектор, содержащий размерные значения. . Итак, у меня есть torch.Tensor, содержащий данные, давайте все эти данные. Итак, если я напишу data.shape, он вернет
Код: Выделить всё
torch.Size([1, 2000, 3000])
Код: Выделить всё
dimensional_tensor = torch.Tensor(data.shape)
Код: Выделить всё
tensor([[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
...,
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]])
Код: Выделить всё
dimensional_tensor = torch.Tensor(list(data.shape))
Код: Выделить всё
dimensional_tensor = torch.tensor(data.shape)
Я использую pytorch 2.1.0. Я не знаю, как просмотреть исходный код Python и понять, почему это происходит. Я подозреваю, что это может быть связано с тем, что torch представляет собой код двоичного уровня.
Как я уже упоминал выше, я ожидаю, что вызов torch.Tensor(data.shape) вернет torch.Tensor< /code>, содержащий числовые значения вызова data.shape.
Результат:
Объект torch.Tensor с размером data.shape< /code>, похоже, заполнен псевдослучайными числами.
У меня нет проблем с этим, если так должно быть. Я просто хочу понять причину такого поведения и не могу найти никакой документации, которая бы поддерживала/объясняла такое поведение. Возможно, это ошибка?
Подробнее здесь: https://stackoverflow.com/questions/783 ... ize-object