Python 如何在keras.backend和keras.layers之间进行选择?
我发现在Python 如何在keras.backend和keras.layers之间进行选择?,python,tensorflow,keras,deep-learning,keras-layer,Python,Tensorflow,Keras,Deep Learning,Keras Layer,我发现在keras.backend或keras.layers中有很多相同的名称,例如keras.backend.concatenate和keras.layers.concatenate。我隐约知道一个是张量,另一个是层。但是当代码这么大的时候,这么多的函数让我搞不清哪个是张量,哪个是层。有人有解决这个问题的好办法吗 我发现的一种方法是,首先在一个函数中定义所有占位符,但将其作为变量的函数可能会在最后返回层,而将此层作为变量的另一个函数可能会返回另一个变量。如果有一个层实现了您想要做的事情,您肯定
keras.backend
或keras.layers
中有很多相同的名称,例如keras.backend.concatenate
和keras.layers.concatenate
。我隐约知道一个是张量,另一个是层。但是当代码这么大的时候,这么多的函数让我搞不清哪个是张量,哪个是层。有人有解决这个问题的好办法吗
我发现的一种方法是,首先在一个函数中定义所有占位符,但将其作为变量的函数可能会在最后返回层,而将此层作为变量的另一个函数可能会返回另一个变量。如果有一个层实现了您想要做的事情,您肯定应该使用
keras.layers
。这是因为,在构建模型时,Keras层只接受Keras张量(即层的输出)作为输入。但是,keras.backend.
中方法的输出不是keras张量(它是后端张量,例如TensorFlowTensor
),因此不能将它们直接传递到层
尽管如此,如果存在无法使用层完成的操作,则可以在Lambda
层中使用keras.backned.*
方法来执行该自定义操作/计算
注意:Keras张量实际上与后端张量的类型相同(例如
tf.Tensor
);但是,它还增加了一些附加的Keras特定属性,Keras在构建模型时需要这些属性。如果有一个层实现了您想要做的事情,您肯定应该使用Keras.layers
。这是因为,在构建模型时,Keras层只接受Keras张量(即层的输出)作为输入。但是,keras.backend.
中方法的输出不是keras张量(它是后端张量,例如TensorFlowTensor
),因此不能将它们直接传递到层
尽管如此,如果存在无法使用层完成的操作,则可以在Lambda
层中使用keras.backned.*
方法来执行该自定义操作/计算
注意:Keras张量实际上与后端张量的类型相同(例如
tf.Tensor
);但是,它增加了Keras在构建模型时所需的一些附加Keras特定属性。如果Keras.layers中的所有函数都是层,并且Keras.backend中的所有函数都是符号张量,则不会混淆。如果Keras.layers中的所有函数都是层,则不会混淆,keras.backend中的所有函数都在符号张量上运行。