如何在keras.backend和keras.layers之间选择?

时间:2018-12-20 15:10:45

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

我发现keras.backendkeras.layers中有很多相同的名称,例如keras.backend.concatenatekeras.layers.Concatenate。我隐约知道一个是张量,另一个是层。但是,当代码太大时,那么多函数使我感到困惑,即张量或层。有人有解决这个问题的好主意吗?

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

1 个答案:

答案 0 :(得分:1)

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

尽管,如果某层无法完成某项操作,则可以在keras.backned.*层中使用Lambda方法来执行该自定义操作/计算。

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