Атрибут mixed_precision.global_policy
Атрибут mixed_precision.global_policy возвращает
текущую глобальную политику смешанной точности.
Политика определяет, какой тип данных используется
по умолчанию для переменных слоев и вычислений.
По умолчанию возвращается политика float32.
Атрибут не принимает параметров и доступен только
для чтения. Для изменения политики используется
функция mixed_precision.set_global_policy.
Синтаксис
tf.keras.mixed_precision.global_policy()
Пример
Давайте получим текущую глобальную политику смешанной точности:
import tensorflow as tf
res = tf.keras.mixed_precision.global_policy()
print(res)
Результат выполнения кода:
<Policy "float32">
Пример
Давайте изменим политику на mixed_float16
и проверим результат:
import tensorflow as tf
tf.keras.mixed_precision.set_global_policy('mixed_float16')
res = tf.keras.mixed_precision.global_policy()
print(res)
Результат выполнения кода:
<Policy "mixed_float16">
Пример
Давайте посмотрим, как глобальная политика влияет на тип данных слоя:
import tensorflow as tf
tf.keras.mixed_precision.set_global_policy('mixed_float16')
layer = tf.keras.layers.Dense(5)
t = tf.constant([[1, 2, 3], [4, 5, 6]])
res = layer(t)
print(res.dtype)
Результат выполнения кода:
<dtype: 'float16'>
Пример
Давайте проверим тип данных переменных слоя
при политике mixed_float16:
import tensorflow as tf
tf.keras.mixed_precision.set_global_policy('mixed_float16')
layer = tf.keras.layers.Dense(5)
t = tf.constant([[1, 2, 3], [4, 5, 6]])
layer(t)
print(layer.kernel.dtype)
Результат выполнения кода:
<dtype: 'float32'>
Как видно из примера, при политике
mixed_float16 переменные слоя
хранятся в float32, а вычисления
выполняются в float16.
Смотрите также
-
функцию
mixed_precision.set_global_policy,
которая устанавливает глобальную политику смешанной точности -
класс
mixed_precision.Policy,
который описывает политику смешанной точности -
класс
LossScaleOptimizer,
который применяет масштабирование потерь при смешанной точности -
функцию
device,
которая задает устройство для выполнения операций