我发现keras.backend
或keras.layers
中有很多相同的名称,例如keras.backend.concatenate
和keras.layers.Concatenate
。我隐约知道一个是张量,另一个是层。但是,当代码太大时,那么多函数使我感到困惑,即张量或层。有人有解决这个问题的好主意吗?
我发现的一种方法是首先在一个函数中定义所有占位符,但是将该函数作为变量的函数可能最后返回层,而另一个函数将此层作为变量的函数可能返回另一个变量。
答案 0 :(得分:1)
如果有一层可以实现您想要的功能,则绝对应该使用keras.layers
。这是因为在构建模型时,Keras图层仅接受Keras张量(即图层的输出)作为输入。但是,keras.backend.*
中方法的输出不是Keras Tensor(它是后端Tensor,例如TensorFlow Tensor
),因此您不能将它们直接传递到图层。
尽管,如果某层无法完成某项操作,则可以在keras.backned.*
层中使用Lambda
方法来执行该自定义操作/计算。
注意:Keras Tensor实际上与后端Tensor具有相同的类型(例如tf.Tensor
);但是,它增加了Keras在构建模型时需要的一些其他特定于Keras的属性。