Как исправить ошибку RuntimeError: ожидался объект скалярного типа Double, но получен скалярный тип Float

Ошибка RuntimeError: ожидаемый объект скалярного типа Double, но получил скалярный тип. Ошибка с плавающей запятой в Pytorch возникает, когда функция или операция ожидала скалярное значение типа double(64-битное число с плавающей запятой) для тензора. Но на вход он получил скалярное значение типа float(32-битное число с плавающей запятой).

Чтобы исправить ошибку, входное значение должно быть преобразовано в double или функция должна быть изменена для поддержки входных данных с плавающей запятой.

  • Чтобы преобразовать тензор в float64, вы можете использовать метод torch.double().
  • Чтобы преобразовать тензор в float32, вы можете использовать метод torch.float().

Вы также можете использовать метод .to() для преобразования тензора в нужный тип данных.

Выход

Из вывода видно, что мы преобразовали обычный тензор в тензоры типов float32 и float64.

При работе с типом данных float32 или float64 убедитесь, что вы не используете оба типа одновременно.

Для большей точности всегда лучше использовать тип данных float64, и если входные данные относятся к типу данных float32, вы можете преобразовать их в тип данных float64.

PyTorch имеет три основных типа данных, которые могут представлять числа с плавающей запятой.

  1. torch.float32 или torch.float
  2. torch.float64 или torch.double
  3. факел.bfloat16

Что такое torch.float32?

torch.float32 — это 32-битное число с плавающей запятой, также известное как число с плавающей запятой «одинарной точности». Он занимает меньше памяти и быстрее выполняет вычисления, но может быть не таким точным, как torch.float64.

Выход

Что такое torch.float64?

torch.float64 — это 64-битное число с плавающей запятой, также известное как число с плавающей запятой «двойной точности». Он занимает больше памяти и медленнее выполняет вычисления, но более точен, чем torch.float32.

Выход

Тип данных double имеет 64-битное число с плавающей запятой.

Тип данных float имеет 32-битное число с плавающей запятой.

Если вы передадите 32-битное число с плавающей запятой вместо 64-битного числа с плавающей запятой, будет выдано RuntimeError.

Оцените статью

Автор статей и разработчик, делюсь знаниями.

Программирование на Python
Добавить комментарии