Когда я прочитал некоторый исходный код 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. Кто-нибудь может объяснить это? Спасибо.