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.Model 和 tf.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 构建整个模型。

相关推荐
云和数据.ChenGuang6 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
川石课堂软件测试7 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
美狐美颜SDK开放平台7 小时前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
万化冥合8 小时前
PyBox屏幕键盘如何辅助演示键盘操作?
python·计算机外设
车软学堂8 小时前
从测试转开发,到底要补什么
网络·人工智能·python·功能测试·单片机·车载系统·自动化
天空依然蔚蓝8 小时前
分享一个自动检测网站在线状态的python程序
python·运维开发·1024程序员节
岁月宁静8 小时前
一个 AI 项目从本地到上线,要经过哪些步骤?全流程讲清楚
python·docker·agent
codists9 小时前
《crafting interpreters》阅读笔记:p45-p45
python
hgy896910 小时前
深度学习(小白笔记)——迁徙
人工智能·笔记·深度学习
曲径海盗10 小时前
【Python 学习第 41 天】for 循环
python·学习笔记·编程入门