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