tf.compat.v1.constant_initializer
Инициализатор, создающий тензоры с постоянными значениями.
tf.compat.v1.constant_initializer(
value=0,
dtype=tf.dtypes.float32,
verify_shape=False
)
Миграция на TF2
Несмотря на то, что это устаревшая конечная точка API, tf.compat.v1.constant_initializer совместима с eager execution и tf.function.
Чтобы перейти на актуальный API TF2, используйте tf.constant_initializer. Аргумент dtype в 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.
| Возвращает | |
|---|---|
| Словарь Python, сериализуемый в JSON. |
__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/api_docs/python/tf/compat/v1/constant_initializer