tf.nn.relu与tf.contrib.layers.relu?

时间:2017-03-13 21:03:43

标签: python tensorflow

我看到了这个" 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 个答案:

答案 0 :(得分:5)

他们不是一回事。

后者不是激活功能,而是fully_connected 图层,其激活功能预设为nn.relu

relu = functools.partial(fully_connected, activation_fn=nn.relu)
# ^                                                     |<   >|
# |_ tf.contrib.layers.relu                     tf.nn.relu_|

如果你阅读contrib.layers的文档,你会发现:

  

设置默认激活功能的fully_connected的别名   可用:relurelu6linear

总之,tf.contrib.layers.relufully_connected图层的别名,其中{em> relu 激活,而tf.nn.relu是重新线性单位激活函数本身。

答案 1 :(得分:2)

2017 TensorFlow Dev Summit期间,TensorFlow项目的tf.contrib部分被描述为更高级别功能的测试基地。这些功能供社区使用和测试。但是,当函数移动到tf.core时,无法保证不会对接口进行更改。在Tensorflow版本r0.12之间的r1.0,许多tf.contrib.layer函数被移动到tf.layers(在r1.0之前不存在)。简而言之,tf.contrib的文档永远不会像tf.core那样好。