Тип float16
Тип float16 в TensorFlow представляет собой
16-битное число с плавающей точкой половинной
точности. Он занимает в два раза меньше памяти,
чем float32, что делает его полезным для
обучения и вывода нейронных сетей на устройствах
с ограниченными ресурсами. Тип передается в
параметр dtype функций создания тензоров,
например constant, zeros или
ones, а также указывается в слоях Keras.
Синтаксис
tf.float16
Пример
Давайте создадим тензор с типом float16:
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5], dtype=tf.float16)
print(t)
Результат выполнения кода:
tf.Tensor([1. 2. 3. 4. 5.], shape=(5,), dtype=float16)
Пример
Давайте преобразуем существующий тензор
типа float32 в тип float16
с помощью метода cast:
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5], dtype=tf.float32)
t16 = tf.cast(t, dtype=tf.float16)
print(t16)
Результат выполнения кода:
tf.Tensor([1. 2. 3. 4. 5.], shape=(5,), dtype=float16)
Пример
Давайте проверим размер типа float16
в байтах и сравним его с float32:
import tensorflow as tf
t16 = tf.constant([1, 2, 3, 4, 5], dtype=tf.float16)
t32 = tf.constant([1, 2, 3, 4, 5], dtype=tf.float32)
print(t16.dtype.size)
print(t32.dtype.size)
Результат выполнения кода:
2
4
Пример
Давайте создадим слой Dense с типом
float16 и выполним прямой проход:
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.Dense(2, dtype=tf.float16)
t = tf.constant([[1, 2, 3], [4, 5, 6]], dtype=tf.float16)
res = layer(t)
print(res.dtype)
Результат выполнения кода:
<dtype: 'float16'>