为什么要用Keras的函数式API创建模型?
- 支持创建多输入多输出模型
- 支持创建非线性模型,eg: 残差模块
- 支持图层共享
如何创建?使用keras.Model()类
- 第一种,使用“函数式API”,您从输入开始,您可以链接层调用以指定模型的前向传递,最后您从输入和输出创建模型
- 第二种,通过继承 Model 类:在这种情况下,您应该在 init 中定义您的层,并且您应该在call()中实现模型的前向传递
用Keras的函数式API创建模型范例

用函数式API创建模型的代码:
import tensorflow as tf
from tensorflow.keras import layers
from tensorflow import keras
# 创建层,将上一层传递进当前层
input = keras.Input(shape=(784,))
dense = layers.Dense(64,activation='relu')
x1 = dense(input)
x2 = layers.Dense(32, activation='relu')(x1)
output = layers.Dense(10)(x2)
# 通过输入,输出创建模型
model = keras.Model(inputs=input, outputs=output, name="Alex_Model")
# 查看模型摘要
model.summary()
# 将模型绘制为计算图
keras.utils.plot_model(model,'alex_model.png',show_shapes=True, show_dtype=True)
从示意图和范例代码可以看出:图和代码几乎完全相同;在代码版本中,连接箭头由调用操作代替。
总结:“层计算图”是深度学习模型的直观心理图像,而函数式 API 是创建密切反映此图像的模型的方法。Layer 类是一个种抽象,封装了状态(layer的“权重”)和从输入到输出的转换(“call”,即层的前向传递)
网友评论