tf.contrib.layers.rev_block
Блок обратимых рекурсивных слоёв.
tf.contrib.layers.rev_block(
x1, x2, f, g, num_layers=1, f_side_input=None, g_side_input=None,
is_training=True
)
Обратимый рекурсивный слой определяется как:
y1 = x1 + f(x2, f_side_input) y2 = x2 + g(y1, g_side_input)
Обратимый рекурсивный блок, определённый здесь, представляет собой серию обратимых рекурсивных слоёв.
Ограничения:
- f и g не должны использовать Tensors; все дополнительные входные данные для f и g должны передаваться с помощью f_side_input и g_side_input, которые будут переданы f и g.
- f и g не должны изменять размерность своих входных данных, чтобы сложение в приведенных выше уравнениях работало.
| Аргументы | |
|---|---|
x1 | float Tensor. |
x2 | float Tensor. |
f | функция, (Tensor) -> (Tensor) (или список такой длины num_layers). Не должна изменять форму Tensor. Может делать вызовы get_variable. См. f_side_input, если есть дополнительные входные данные. |
g | функция, (Tensor) -> (Tensor) (или список такой длины num_layers). Не должна изменять форму Tensor. Может делать вызовы get_variable. См. g_side_input, если есть дополнительные входные данные. |
num_layers | int, количество обратимых рекурсивных слоёв. Каждый слой применит f и g в соответствии с приведенными выше уравнениями, с новыми переменными в каждом слое. |
f_side_input | список Tensors, дополнительные входные данные для f. Если не None, сигнатура f должна быть (Tensor, список |
g_side_input | список Tensors, дополнительные входные данные для g. Если не None, сигнатура g должна быть (Tensor, список |
is_training | bool, использовать ли на самом деле эффективный код обратного распространения. |
| Возвращаемые значения | |
|---|---|
| y1, y2: кортеж float Tensors. |
© 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/contrib/layers/rev_block