tf.compat.v1.keras.initializers.Constant
Инициализатор, генерирующий тензоры с постоянными значениями.
tf.compat.v1.keras.initializers.Constant(
value=0,
dtype=tf.dtypes.float32,
verify_shape=False
)
Миграция на TF2
Несмотря на то, что это устаревший API-пункт, tf.compat.v1.constant_initializer совместим с выполнением в режиме eager и tf.function.
Для миграции на API TF2 без устаревшего кода, пожалуйста, используйте tf.constantinitializer вместо этого. Аргумент dtype в <a href="../../../../../tf/compat/v1/keras/initializers/Constant#init_">tf.compat.v1.constantinitializer.init_() не существует в tf.constantinitializer.init_(). Однако вы можете указать dtype в __call__() в обоих случаях.
В символе compat.v1, если verify_shape установлено на True, при инициализации переменной с формой, отличной от value, возникает исключение. Если установлено на False, value переформатируется для инициализации переменной при необходимости. Исключение будет возникать только тогда, когда количество элементов отличается.
Аргумент verify_shape не поддерживается в TF2. Использование tf.constant_initializer эквивалентно установке verify_shape на False.
Структурное соответствие TF2
До:
value = [0, 1, 2, 3, 4, 5, 6, 7]
initializer = tf.compat.v1.constant_initializer(
value=value,
dtype=tf.float32,
verify_shape=False)
variable = tf.Variable(initializer(shape=[2, 4]))
После:
value = [0, 1, 2, 3, 4, 5, 6, 7] initializer = tf.constant_initializer(value=value) tf.Variable(initializer(shape=[2, 4], dtype=tf.float32))
Как сопоставить аргументы
| Имя аргумента TF1 | Имя аргумента TF2 | Примечание |
|---|---|---|
value | value | В конструкторе |
dtype | dtype | В методе __call__() |
verify_shape | Не поддерживается | Эквивалентно установке на False
|
partition_info | - | (аргумент __call__ в TF1) Не поддерживается |
Пример использования до и после
До:
value = [1., 2., 3., 4.]
initializer = tf.compat.v1.constant_initializer(
value=value, dtype=tf.float32, verify_shape=True)
tf.Variable(initializer(shape=[2, 2])).numpy()
Traceback (most recent call last):
TypeError: Expected Tensor's shape: (2, 2), got (4,).
initializer = tf.compat.v1.constant_initializer(
value=value, dtype=tf.float32, verify_shape=False)
tf.Variable(initializer(shape=[2, 2])).numpy()
array([[1., 2.],
[3., 4.]], dtype=float32)
После:
value = [1., 2., 3., 4.]
initializer = tf.constant_initializer(value=value)
tf.Variable(initializer(shape=[2, 2], dtype=tf.float32)).numpy()
array([[1., 2.],
[3., 4.]], dtype=float32)
Описание
Результирующий тензор заполняется значениями типа dtype, как указано в аргументах value в соответствии с желаемой shape нового тензора (см. примеры ниже).
Аргумент value может быть константой или списком значений типа dtype. Если value является списком, то длина списка должна быть меньше или равна количеству элементов, подразумеваемым желаемой формой тензора. В случае, когда общее количество элементов в value меньше, чем количество элементов, необходимых для формы тензора, последний элемент в value будет использоваться для заполнения оставшихся записей. Если общее количество элементов в value больше, чем количество элементов, необходимых для формы тензора, инициализатор выведет ValueError.
| Аргументы | |
|---|---|
value | Скаляр, список или кортеж Python-значений, или N-мерный массив numpy. Все элементы инициализированной переменной будут установлены в соответствующее значение в аргументе value. |
dtype | Тип данных по умолчанию, используемый, если аргумент dtype не задан при вызове инициализатора. |
verify_shape | Логическое значение, которое включает проверку формы value. Если True, инициализатор выбросит ошибку, если форма value не совместима с формой инициализируемого тензора. |
| Исключения | |
|---|---|
TypeError | Если входной value не является одним из ожидаемых типов. |
Примеры:
В следующем примере можно использовать numpy.ndarray вместо value списка, даже преобразованного, как показано в двух комментариях ниже инициализации списка value.
value = [0, 1, 2, 3, 4, 5, 6, 7]
init = tf.compat.v1.constant_initializer(value)
# fitting shape
with tf.compat.v1.Session():
x = tf.compat.v1.get_variable('x', shape=[2, 4], initializer=init)
x.initializer.run()
print(x.eval())
[[0. 1. 2. 3.]
[4. 5. 6. 7.]]
# Larger shape
with tf.compat.v1.Session():
y = tf.compat.v1.get_variable('y', shape=[3, 4], initializer=init)
y.initializer.run()
print(y.eval())
[[0. 1. 2. 3.]
[4. 5. 6. 7.]
[7. 7. 7. 7.]]
# Smaller shape
with tf.compat.v1.Session():
z = tf.compat.v1.get_variable('z', shape=[2, 3], initializer=init)
Traceback (most recent call last):
ValueError: Too many elements provided. Needed at most 6, but received 8
# Shape verification
init_verify = tf.compat.v1.constant_initializer(value, verify_shape=True)
with tf.compat.v1.Session():
u = tf.compat.v1.get_variable('u', shape=[3, 4],
initializer=init_verify)
Traceback (most recent call last):
TypeError: Expected Tensor's shape: (3, 4), got (8,).
Методы
from_config
@classmethod
from_config(
config
)
Инициализирует инициализатор из словаря конфигурации.
Пример:
initializer = RandomUniform(-1, 1) config = initializer.get_config() initializer = RandomUniform.from_config(config)
| Аргументы | |
|---|---|
config | Словарь Python. Обычно он является результатом get_config. |
| Возвращает | |
|---|---|
| Экземпляр Initializer. |
get_config
get_config()
Возвращает конфигурацию инициализатора в виде сериализуемого в JSON словаря.
| Возвращает | |
|---|---|
| Сериализуемый в JSON словарь Python. |
__call__
__call__(
shape, dtype=None, partition_info=None, verify_shape=None
)
Возвращает объект тензора, инициализированный как указано инициализатором.
| Аргументы | |
|---|---|
shape | Форма тензора. |
dtype | Необязательный тип данных тензора. Если не указано, используется тип данных инициализатора. |
partition_info | Необязательная информация о возможном разбиении тензора. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/compat/v1/keras/initializers/Constant