Spec-Zone.ru › TensorFlow 2.3

tf.compat.v1.layers.experimental.keras_style_scope

Использовать управление переменными в стиле Keras.

@tf_contextlib.contextmanager
tf.compat.v1.layers.experimental.keras_style_scope()

Все слои tf.layers и tf RNN-ячейки, созданные в этом области видимости, используют управление переменными в стиле Keras. Создание таких слоев с аргументом scope= запрещено, а также запрещено reuse=True.

Цель этой области видимости — позволить пользователям существующих слоёв постепенно переходить к API слоёв Keras, не нарушая существующую функциональность.

Один из примеров — использование классов RNN TensorFlow с Keras-моделями или сетями. Поскольку Keras-модели не правильно устанавливают области видимости переменных, пользователи RNN могут случайно разделять области видимости между двумя разными моделями или получать ошибки о переменных, которые уже существуют.

Пример:

class RNNModel(tf.keras.Model):

  def __init__(self, name):
    super(RNNModel, self).__init__(name=name)
    self.rnn = tf.compat.v1.nn.rnn_cell.MultiRNNCell(
      [tf.compat.v1.nn.rnn_cell.LSTMCell(64) for _ in range(2)])

  def call(self, input, state):
    return self.rnn(input, state)

model_1 = RNNModel("model_1")
model_2 = RNNModel("model_2")

# OK
output_1, next_state_1 = model_1(input, state)
# Raises an error about trying to create an already existing variable.
output_2, next_state_2 = model_2(input, state)

Решение заключается в обертывании построения и выполнения модели в области видимости в стиле Keras:

with keras_style_scope():
  model_1 = RNNModel("model_1")
  model_2 = RNNModel("model_2")

  # model_1 and model_2 are guaranteed to create their own variables.
  output_1, next_state_1 = model_1(input, state)
  output_2, next_state_2 = model_2(input, state)

  assert len(model_1.weights) > 0
  assert len(model_2.weights) > 0
  assert(model_1.weights != model_2.weights)

Возвращает:

Область видимости в стиле keras layer.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/compat/v1/layers/experimental/keras_style_scope

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API