tf.layers.experimental.keras_style_scope
Использование управления переменными в стиле Keras.
@tf_contextlib.contextmanager tf.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.
© 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/r1.15/api_docs/python/tf/layers/experimental/keras_style_scope