tf.nn.relu против tf.contrib.layers.relu?
Я вижу это "tf.nn.relu", задокументированное здесь: https://www.tensorflow.org/api_docs/python/tf/nn/relu
Но тогда я также вижу использование tf.contrib.layers.relu на этой странице в "model_fn": https://www.tensorflow.org/extend/estimators
Похоже, что последний не описан как первый в стиле API, а только представлен в использовании.
Почему это? Документы устарели? Почему два - один старый и больше не поддерживается / будет удален?
2 ответа
Они не одно и то же.
Последнее является не функцией активации, а fully_connected
слой, для которого задана функция активации nn.relu
:
relu = functools.partial(fully_connected, activation_fn=nn.relu)
# ^ |< >|
# |_ tf.contrib.layers.relu tf.nn.relu_|
Если вы читаете документы для contrib.layers
, ты найдешь:
Псевдонимы для
fully_connected
которые устанавливают функцию активации по умолчанию, доступны:relu
,relu6
а такжеlinear
,
Суммарно, tf.contrib.layers.relu
это псевдоним для fully_connected
слой с активацией Relu в то время как tf.nn.relu
сама функция активации REctified Linear Unit.
Во время саммита TensorFlow Dev 2017tf.contrib
Раздел проекта TensorFlow был описан как полигон для тестирования функций более высокого уровня. Эти функции предназначены для использования и тестирования сообществом. Тем не менее, нет гарантии, что при переносе функций в tf.core интерфейс не будет изменен. Между версиями Tensorflow r0.12 и r1.0 многие из tf.contrib.layer
функции были перенесены в tf.layers
(который не существовал до r1.0). Короче говоря, документация по tf.contrib никогда не будет так хороша, как tf.core.