【问题标题】:How to choose between keras.backend and keras.layers?如何在 keras.backend 和 keras.layers 之间进行选择?
【发布时间】:2018-12-20 15:10:44
【问题描述】:

我发现keras.backendkeras.layers中有很多相同的名字,例如keras.backend.concatenatekeras.layers.Concatenate。我隐约知道一个用于张量,另一个用于层。但是当代码这么大的时候,这么多的函数让我搞不清哪个是张量,哪个是层。任何人有一个好主意来解决这个问题?

我发现的一种方法是首先在一个函数中定义所有占位符,但函数将其作为变量可能会在最后返回层,而另一个函数将此层作为变量可能会返回另一个变量。

【问题讨论】:

  • 如果keras.layers中的所有函数都是层,并且keras.backend中的所有函数都在符号张量上操作,你就不会混淆了。

标签: python tensorflow keras deep-learning keras-layer


【解决方案1】:

如果有一个层可以实现您想要做的事情,您绝对应该使用keras.layers。这是因为,在构建模型时,Keras 层只接受 Keras 张量(即层的输出)作为输入。但是,keras.backend.* 中方法的输出不是 Keras Tensor(它是后端 Tensor,例如 TensorFlow Tensor),因此您不能将它们直接传递给层。

虽然,如果有一个层无法完成的操作,那么您可以使用Lambda 层中的keras.backned.* 方法来执行该自定义操作/计算。

注意: Keras Tensor 实际上与后端 Tensor 是同一类型(例如tf.Tensor);但是,它增加了一些额外的 Keras 特定属性,这些属性是 Keras 在构建模型时需要的。

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 2012-11-27
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    相关资源
    最近更新 更多