Вопрос
float16 можно использовать в numpy, но не в Tensorflow 2.4.1, вызывая ошибку.
Доступен ли float16 только при работе на экземпляре с графическим процессором с поддержкой 16 бит?
Смешанная точность
Сегодня большинство моделей используют тип float32, который занимает 32 бита
памяти. Однако существуют два типа данных с более низкой точностью, float16 и
bfloat16, каждый из которых вместо этого занимает 16 бит памяти. Современные
ускорители могут выполнять операции быстрее в 16-битных типах данных, поскольку они
имеют специализированное оборудование для выполнения 16-битных вычислений, а 16-битные типы данных
могут быстрее считываться из памяти.
Графические процессоры NVIDIA могут выполнять операции в float16 быстрее, чем в float32, а
TPU могут выполнять операции в bfloat16 быстрее, чем в float32. Поэтому
эти dtypes с более низкой точностью следует использовать, когда это возможно, на этих
устройствах. Однако переменные и несколько вычислений все равно должны находиться в
float32 по числовым причинам, чтобы модель обучалась с тем же
качеством. API смешанной точности Keras позволяет использовать сочетание
float16 или bfloat16 с float32, чтобы получить преимущества
производительности от float16/bfloat16 и преимущества числовой стабильности от
float32.
Тогда при тестировании на ЦП мне нужно вручную изменить тип на float32, чтобы он запустился? Согласно [TF2.0] Изменение типов по умолчанию глобально, в настоящее время нет возможности изменить точность плавающей точки по умолчанию.
numpy
import numpy as np
np.arange(12, dtype=np.float16).reshape(3,4)
---
array([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.]], dtype=float16)
Тензорный поток
import tensorflow as tf
tf.reshape(tf.range(12, dtype=tf.float16), (3,4))
---
NotFoundError Traceback (most recent call last)
in
1 import tensorflow as tf
----> 2 tf.reshape(tf.range(12, dtype=tf.float16), (3,4))
~/conda/envs/tensorflow/lib/python3.8/site-packages/tensorflow/python/util/dispatch.py in wrapper(*args, **kwargs)
199 """Call target, and fall back on dispatchers if there is a TypeError."""
200 try:
--> 201 return target(*args, **kwargs)
202 except (TypeError, ValueError):
203 # Note: convert_to_eager_tensor currently raises a ValueError, not a
~/conda/envs/tensorflow/lib/python3.8/site-packages/tensorflow/python/ops/math_ops.py in range(start, limit, delta, dtype, name)
1875 delta = cast(delta, inferred_dtype)
1876
-> 1877 return gen_math_ops._range(start, limit, delta, name=name)
1878
1879
~/conda/envs/tensorflow/lib/python3.8/site-packages/tensorflow/python/ops/gen_math_ops.py in _range(start, limit, delta, name)
7190 return _result
7191 except _core._NotOkStatusException as e:
-> 7192 _ops.raise_from_not_ok_status(e, name)
7193 except _core._FallbackException:
7194 pass
~/conda/envs/tensorflow/lib/python3.8/site-packages/tensorflow/python/framework/ops.py in raise_from_not_ok_status(e, name)
6860 message = e.message + (" name: " + name if name is not None else "")
6861 # pylint: disable=protected-access
-> 6862 six.raise_from(core._status_to_exception(e.code, message), None)
6863 # pylint: enable=protected-access
6864
~/.local/lib/python3.8/site-packages/six.py in raise_from(value, from_value)
NotFoundError: Could not find device for node: {{node Range}} = Range[Tidx=DT_HALF]
All kernels registered for op Range:
device='CPU'; Tidx in [DT_INT64]
device='CPU'; Tidx in [DT_INT32]
device='CPU'; Tidx in [DT_DOUBLE]
device='CPU'; Tidx in [DT_FLOAT]
[Op:Range]
Обновление
При первом создании с помощью float32, а затем приведении к float16 работает. Пожалуйста, сообщите, почему возникла ошибка.
import tensorflow as tf
a = tf.reshape(tf.range(12, dtype=tf.float32), (3,4))
print(f"a.dtype is {a.dtype}")
tf.cast(a, tf.float16)
---
a.dtype is
Подробнее здесь: https://stackoverflow.com/questions/669 ... sion-float
Tensorflow – как использовать 16-битную точность с плавающей запятой ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Рассчитайте точность, полноту, точность и сбалансированную точность из матрицы путаницы.
Anonymous » » в форуме Python - 0 Ответы
- 38 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Форматирование wx.TextCtrl только с числовыми значениями – точность с плавающей запятой
Anonymous » » в форуме C++ - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-