首页 > 解决方案 > 你可以用另一个层而不是张量来提供一个自定义的 Keras 层吗?

问题描述

假设我有一个自定义层Node,它继承自keras.layers.Layer并且应该代表神经网络中的单个节点。

据我所知,为了在 keras 中输入一个层,您需要将一个张量传递给它,但我想要的语法类似于:

n1 = Node()
n2 = Node()

n2(n1) # Instead of n2(n1.output) where n1.output is a Tensor

做这样的事情被认为是不好的做法吗?

标签: tensorflowkeras

解决方案


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 层管道,然后通过链接输入和输出来构建模型。

这类似于您想要的语法

请参阅Tensorflow Keras 功能 API 指南


推荐阅读