tf.keras.layers和tf.layers的区别是什么?
它们都有Conv2d,它们提供不同的输出吗?
如果将它们混合(类似于一个隐藏层中的tf.keras.layers.Conv2d,在下一个隐藏层中使用tf.layers.max_pooling2d),会有什么好处吗?
发布于 2019-02-16 00:46:22
自从TensorFlow 1.12以来,tf.layers仅仅是tf.keras.layers的包装器。
有几个例子:
卷积tf.layers只是继承了卷积tf.keras.layers,请参阅源代码这里。
@tf_export('layers.Conv2D')
class Conv2D(keras_layers.Conv2D, base.Layer):所有tf.layers也是如此,例如:
@tf_export('layers.Dense')
class Dense(keras_layers.Dense, base.Layer):通过将Keras集成到TensorFlow中,维护几个不同的层实现是没有意义的。tf.keras正在成为TensorFlow事实上的高级API,因此tf.layers现在只是tf.keras.layers的包装器。
发布于 2018-06-28 18:43:10
tf.keras.layers.Conv2d是tensorflow-keras层,而tf.layers.max_pooling2d是tensorflow‘本地层’。
您不能在Keras模型中直接使用本机层,因为它将丢失Keras所需的某些属性。
但是,如果将本机层封装在tensorflow-keras Lambda层中,则可以使用本机层。下面链接到这方面的文档。
发布于 2018-06-28 19:23:05
tf.layers模块是Tensorflow尝试创建类似API的Keras,而tf.keras.layers是一个兼容性包装器。实际上,大多数实现都引用tf.layers,例如,tf.keras.layers.Dense继承了核心实施
@tf_export('keras.layers.Dense')
class Dense(tf_core_layers.Dense, Layer):
# ...因为tf.keras兼容性模块是单独签入Tensorflow回购的,所以它可能缺少Keras实际提供的内容。我会直接使用Keras或tf.layers,但不一定要混合它们。
https://stackoverflow.com/questions/51089334
复制相似问题