Tensorflow tf.layers.dense()和tf.contrib.layers.fully_connected()可以互换吗?

Tensorflow tf.layers.dense()和tf.contrib.layers.fully_connected()可以互换吗?,tensorflow,Tensorflow,我习惯于使用tf.contrib.layers.fully_connected来构建一个完全连接的层。最近我遇到了tf.layers.dense,它显然用于第一个函数可以使用的地方。是否可以互换,产生相同的输出?它们本质上是相同的 然而,tf.contrib.fully_connected在density的基础上增加了一些功能,特别是在参数中通过规范化和激活的可能性,如la Keras。正如@wordforthewise所指出的,请注意后者默认为tf.nn.relu 更一般地说,TFAPI提出(

我习惯于使用tf.contrib.layers.fully_connected来构建一个完全连接的层。最近我遇到了tf.layers.dense,它显然用于第一个函数可以使用的地方。是否可以互换,产生相同的输出?

它们本质上是相同的

然而,
tf.contrib.fully_connected
density
的基础上增加了一些功能,特别是在参数中通过规范化和激活的可能性,如la Keras。正如@wordforthewise所指出的,请注意后者默认为
tf.nn.relu


更一般地说,TFAPI提出(并混合了一些令人困惑的)低级别和高级别API;更多信息。

您知道它们中的任何一个是否需要初始化权重并传递给它们吗?不知道。
tf.Layers
(和
tf.contrib.Layers
)中的层是tensorflow的“高级”API的一部分,该API负责处理权重和偏差等变量。但是,它们确实需要您为它们选择一个初始值设定项。与较低级别的详细说明的实现(如
tf.add(tf.matmul(数组、权重)、bias)
)相反,可以,也可以选择
tf.nn
中的其他低级别层,如
conv2d
。一个主要区别是tf.contrib.fully\u connected将relu作为默认激活,而tf.layers.dense默认为线性激活。