Я изменяю ожидаемый объект с плавающей точкой скалярного типа, но все еще получил Long в Pytorch

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

0
задан Ray Chiu 13 April 2019 в 19:30
поделиться

1 ответ

Похоже, что тип корректно изменяется, поскольку вы заявляете, что наблюдаете изменение при печати типов и из Pytorch:

Возвращает Tensor с указанным устройством и (необязательно) ) dtype. Если dtype равен None, то это подразумевается self.dtype. Когда non_blocking, пытается преобразовать асинхронно по отношению к хосту, если это возможно, например, преобразование Тензор ЦП с закрепленной памятью в Тензор CUDA. Когда копирование установлено, новый Тензор создается даже тогда, когда Тензор уже соответствует желаемому преобразованию.

и другие методы, такие как

b_y = b_y.to(device).float()

, не должны измеримо отличаться, так как, опять же, .float() эквивалентны .to(..., torch.float32). и .float эквивалентно .float32. Можете ли вы проверить тип b_y непосредственно перед выдачей ошибки и отредактировать вопрос? (Я бы сделал это комментарий - но я хотел бы добавить больше деталей. Я постараюсь помочь, когда это будет предоставлено)

0
ответ дан modesitt 13 April 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: