Почему tf.constant дает ошибку dtype, если мы передаем тензор? - PullRequest
0 голосов
/ 06 апреля 2020

Следующий код

a = tf.range(10)
b = tf.constant(a, dtype=tf.float32)

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

TypeError: Expected tensor with type tf.float32 not tf.int32

Хотя из документации установка dtype означает, что tf.constant предполагается привести a к указанному типу данных. Поэтому я не понимаю, почему это должно приводить к ошибке типа.

Я также знаю, что:

a = np.arange(10)
b = tf.constant(a, dtype=tf.float32)

не выдает ошибку.

Так что на самом деле, я В основном меня интересует, что здесь происходит под капотом.

1 Ответ

1 голос
/ 07 апреля 2020

Если вы посмотрите на источник здесь , вы увидите, что EagerTensor получает специальную обработку. В основном, если dtype из EagerTensor не соответствует новому dtype, возникает ошибка.

Здесь tf.range() создает EagerTensor. Я не уверен, почему специальное лечение для EagerTensors все же. Может быть ограничение, связанное с производительностью.

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