本文档介绍了在 Keras 3 中创建和构建模型的主要方法。Keras 提供了两种主要的模型构建 API:Sequential API,用于简单、线性的层堆栈,以及 Functional API,用于创建具有多个输入、输出和分支路径的更复杂的模型架构。
有关模型构建后的训练和评估信息,请参阅训练和评估。
Keras 3 提供了两种主要的模型构建方法
Sequential API: 用于将模型创建为简单的层堆栈,其中每个层都只有一个输入张量和一个输出张量。
Functional API: 用于构建复杂的模型架构,其中层可以以非顺序方式相互连接,包括多个输入、多个输出、共享层和分支路径。
这两种方法都会生成Model类的实例,它提供了训练、评估和推理的通用功能。
来源
Sequential API 是在 Keras 中构建模型最简单的方法。它非常适合堆叠层,其中每个层都只有一个输入和一个输出。
创建 Sequential 模型主要有两种方法
Sequential 模型需要知道输入形状才能正确构建。您可以通过以下几种方式指定它
Input层作为第一层添加input_shape参数build(input_shape)来源
当 Sequential 模型被构建时,它会在内部创建一个 Functional 模型。这发生于
input_shape时build()时模型也可以不创建 Functional 模型而直接构建,在这种情况下,它将按顺序直接将每个层应用于输入。
来源
Functional API 提供了一种更灵活的模型构建方式,它通过基于输入和输出张量而不是线性层序列来定义模型。
创建 Functional 模型的典型工作流程包括
Input()定义输入张量来源
Functional API 支持多种方式指定输入和输出
model = Model(inputs=input_tensor, outputs=output_tensor)model = Model(inputs=[input_a, input_b], outputs=output_tensor)model = Model(inputs={"name1": input_a, "name2": input_b}, outputs=output_tensor)model = Model(inputs=input_tensor, outputs=output_tensor)model = Model(inputs=input_tensor, outputs=[output_a, output_b])model = Model(inputs=input_tensor, outputs={"name1": output_a, "name2": output_b})来源
当 Functional 模型被调用时,它会
来源
Functional API 的主要优点之一是它能够处理具有多个输入和输出的模型。
来源
当使用字典作为输入或输出时,您可以在调用时通过键访问输入,并以字典形式接收输出
这种方法在处理结构化数据或需要按名称标识输入和输出时特别有用。
来源
Functional API 允许您从现有模型的中间层创建新模型
这对于以下情况很有用
来源
Keras 支持深度嵌套的输入和输出结构,允许复杂的模型架构
您还可以将一个模型作为子模型包含在另一个模型中
来源
Sequential 模型和 Functional 模型都可以通过Input层或input_shape参数来指定其输入要求。Input层有几个重要的参数
shape:输入数据的形状(不含批次维度)batch_size:可选的固定批次大小dtype:输入的数据类型name:输入层的名称sparse:输入是否稀疏optional:输入是否可选(可以为 None)来源
当模型被调用时,其输入会以多种方式进行验证和预处理
来源
每个已构建的 Sequential 模型都会在内部创建一个 Functional 模型表示,可以通过model._functional访问。
来源
您可以通过线性链式连接层来创建一个行为类似于 Sequential 模型的 Functional 模型
优点是,如果需要,您以后可以为该模型扩展额外的输入或输出。
来源
在以下情况下使用 Sequential API::
在以下情况下使用 Functional API::
来源
构建模型时,层名称应是唯一的,以避免冲突,尤其是在使用 Sequential API 时
在 Functional API 中,唯一的层名称有助于调试和检查模型。
来源
Keras 在 Functional API 中支持可选输入
这对于可以有或没有特定输入而运行的模型很有用。
来源
Keras 3 提供了两种强大且互补的模型构建方法
两种 API 生成的模型实例在训练、评估和推理方面具有相同的功能,但在模型的构建和结构方式上有所不同。
正确的选择取决于您的模型架构需求
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(50dae3)