Будет ли деление объекта np.float64 на 2 сделать dtype возвращаемого значения np.float32? - PullRequest
0 голосов
/ 21 ноября 2019

Когда я прочитал некоторый исходный код Tensorflow, я нашел это:

  if tf_dtype.is_floating:
    if spec.dtype == np.float64 and np.any(np.isinf(high - low)):
      # The min-max interval cannot be represented by the np.float64. This is a
      # problem only for np.float64, np.float32 works as expected.
      # Spec bounds are set to read only so we can't use argumented assignment.
      low = low / 2  # pylint: disable=g-no-augmented-assignment
      high = high / 2  # pylint: disable=g-no-augmented-assignment
    return rng.uniform(
        low,
        high,
        size=spec.shape,
    ).astype(spec.dtype)

Я не очень знаком с Python. Приведенные выше коды кажутся очень интересными, это означает, что когда операция

 low = low / 2  
 high = high / 2  

создаст новый тип low и high типа dat float32. Но когда я пытаюсь это сделать в терминале Python

>>> a = np.array([2.0], dtype=np.float64)
>>> a.dtype
dtype('float64')
>>> b = a/2
>>> b.dtype
dtype('float64')

Все выглядит не так. Код источника здесь , в строке 42. Кто-нибудь может объяснить это? Спасибо.

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