TensorFlow2 Python深度学习 - 函数式API(Functional API)

锋哥原创的TensorFlow2 Python深度学习视频教程:

https://www.bilibili.com/video/BV1X5xVz6E4w/

课程介绍

本课程主要讲解基于TensorFlow2的Python深度学习知识,包括深度学习概述,TensorFlow2框架入门知识,以及卷积神经网络(CNN),循环神经网络(RNN),生成对抗网络(GAN),模型保存与加载等。

TensorFlow2 Python深度学习 - 函数式API(Functional API)

TensorFlow 2.x 的函数式 API 允许用户以更灵活和可扩展的方式构建模型,相比于顺序模型,它能处理更复杂的结构,尤其是当你需要多个输入或输出,或者需要共享层时。

1. 函数式 API 简介

在 TensorFlow 2.x 中,函数式 API 是通过 tf.keras.Modeltf.keras.layers.Layer 类来实现的。它允许你定义非线性模型的多个输入和输出,不同于 Sequential API,它是层的线性堆叠。

2. 主要特点:

  • 多个输入输出:适用于多个输入、多个输出的模型。

  • 共享层:不同的模型部分可以共享相同的层。

  • 动态结构:能够创建复杂的模型结构,如跳跃连接、残差网络(ResNet)等。

3. 函数式 API 基本用法

3.1 示例代码:单一输入单一输出
复制代码
import tensorflow as tf
from keras import Input, layers, models
​
# 输入层
inputs = Input(shape=(32,))
​
# 一个全连接层
x = layers.Dense(64, activation='relu')(inputs)
​
# 输出层
outputs = layers.Dense(10, activation='softmax')(x)
​
# 创建模型
model = models.Model(inputs=inputs, outputs=outputs)
​
# 查看模型结构
model.summary()
3.2 示例代码:多个输入输出

假设你有一个模型,它接收两个输入,并输出两个结果。

复制代码
import tensorflow as tf
from keras import Input, layers, models
​
# 输入层1
input1 = tf.keras.Input(shape=(32,))
# 输入层2
input2 = tf.keras.Input(shape=(64,))
​
# 分别通过不同的全连接层
x1 = layers.Dense(64, activation='relu')(input1)
x2 = layers.Dense(64, activation='relu')(input2)
​
# 将两个中间层拼接
x = layers.concatenate([x1, x2])
​
# 输出层1
output1 = layers.Dense(10, activation='softmax')(x)
# 输出层2
output2 = layers.Dense(1, activation='sigmoid')(x)
​
# 创建模型
model = models.Model(inputs=[input1, input2], outputs=[output1, output2])
​
# 查看模型结构
model.summary()

4. 总结

  • TensorFlow 2.x 的函数式 API 提供了灵活的模型定义方式,可以处理更复杂的网络结构。

  • Sequential API 相比,函数式 API 允许处理多个输入和输出,适用于更加复杂的应用场景(如共享层、跳跃连接等)。

  • 通过 tf.keras.Input 定义输入,通过层的函数调用将数据传递给后续层,最后通过 models.Model 构建整个模型。

相关推荐
疯狂成瘾者1 小时前
语义分块提升RAG检索精度
python
小陈工3 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
A__tao7 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
研究点啥好呢7 小时前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
迷藏4947 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
明日清晨8 小时前
python扫码登录dy
开发语言·python
bazhange8 小时前
python如何像matlab一样使用向量化替代for循环
开发语言·python·matlab
jinanwuhuaguo8 小时前
截止到4月8日,OpenClaw 2026年4月更新深度解读剖析:从“能力回归”到“信任内建”的范式跃迁
android·开发语言·人工智能·深度学习·kotlin
人工干智能8 小时前
科普:python中你写的模块找不到了——`ModuleNotFoundError`
服务器·python
AI人工智能+8 小时前
一种以深度学习与计算机视觉技术为核心的表格识别系统,实现了结构化、半结构化表格的精准文字提取、布局解析与版面完整还原
深度学习·计算机视觉·ocr·表格识别