tensorflow - 你可以用另一个层而不是张量来提供一个自定义的 Keras 层吗?
问题描述
假设我有一个自定义层Node
,它继承自keras.layers.Layer
并且应该代表神经网络中的单个节点。
据我所知,为了在 keras 中输入一个层,您需要将一个张量传递给它,但我想要的语法类似于:
n1 = Node()
n2 = Node()
n2(n1) # Instead of n2(n1.output) where n1.output is a Tensor
做这样的事情被认为是不好的做法吗?
解决方案
Keras功能 API是一种创建模型的方法,它比 tf.keras.Sequential API 更灵活。功能 API 可以处理具有非线性拓扑、共享层甚至多个输入或输出的模型。
功能 API 可用于创建复杂的图层图。
让我们看一个非常简单的例子:
x = layers.Dense(64)(inputs)
x = layers.Dense(64, activation="relu")(x)
outputs = layers.Dense(10)(x)
model = keras.Model(inputs=inputs, outputs=outputs)
这里有 3 层:Dense(64) -> Dense(64) -> Dense(10)
,代码首先创建了 3 层管道,然后通过链接输入和输出来构建模型。
这类似于您想要的语法