Половинная точность в TensorFlow
Половинная точность хранит
числа в формате с меньшим числом
бит, чем обычный float32.
Глобальную политику типов задаёт
функция set_global_policy
из модуля mixed_precision:
import tensorflow as tf
from tensorflow.keras import mixed_precision
mixed_precision.set_global_policy('mixed_float16')
policy = mixed_precision.global_policy()
print(policy.name)
print(policy.compute_dtype)
print(policy.variable_dtype)
# выведет mixed_float16
# выведет float16
# выведет float32
На процессоре политика может быть включена, но отдельные операции всё равно считают в полной точности. Проверим тип результата простого сложения:
import tensorflow as tf
from tensorflow.keras import mixed_precision
mixed_precision.set_global_policy('mixed_float16')
a = tf.constant([1.0, 2.0])
b = a + a
print(b.dtype)
# выведет <dtype: 'float32'>
Включите смешанную политику половинной точности и выведите имя активной политики.
После включения смешанной политики выведите тип, в котором хранятся переменные модели по этой политике.
Сложите два вектора из
0.5 и 1.5 при
включённой смешанной политике
и выведите тип результата.