[tensorflow]tensorflow 2.1 函数API(The Functional API)

 

目录

1、函数API介绍

2、创建模型

3、训练和评估模型

4、保存模型

5、模型的嵌套


1、函数API介绍

Keras的函数API是一种创建模型的方法,该模型比tf.keras.Sequential API更灵活。可以处理具有非线性拓扑的模型,具有共享层的模型以及具有多个输入或输出的模型。

2、创建模型

说明:

  1. 本文用tensorflow 2.1.1,python3.7进行实验
  2. 如无说明,所有的代码都默认引入以下包
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

实际上深度学习模型的每个图层通常都是有向无环图(DAG),考虑下面的模型:

  1. shape=(784,)的输入
  2. 三个隐藏图层
  3. 输出超过10个分类的概率
(input: 784-dimensional vectors)

       ↧

[Dense (64 units, relu activation)]

       ↧

[Dense (64 units, relu activation)]

       ↧

[Dense (10 units, softmax activation)]

       ↧

(output: logits of a probability distribution over 10 classes)

使用keras函数API创建模型的顺序如下:

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
#创建shape(784,)的输入
inputs = keras.Input(shape=(784,))

#打印形状信息和数据类型信息
print(inputs.shape)
print(inputs.dtype)
#创建第一个图层
dense = layers.Dense(64, activation="relu")
#把输入形状传递个第一个图层
x = dense(inputs)

#创建第二个图层

x = layers.Dense(64, activation="relu")(x)
#创建第三个图
outputs = layers.Dense(10)(x)
#创建模型
model = keras.Model(inputs=inputs, outputs=outputs, name="mymodel")
#查看模型概要
model.summary()
#把模型绘图输出
keras.utils.plot_model(model, "mymodel.png")
#把模型的每个图层细节绘图输出
keras.utils.plot_model(model, "mymodel_with_shape_info.png", show_shapes=True)

输出的模型概要:

 

输出的模型图形化流程:

输出的图层细节图:

 

3、训练和评估模型

使用函数API构建的模型,和用序列创建的模型,训练,评估和推断的工作方式完全相同。本节采用MNIST图像数据,将其整形为矢量,将模型拟合到数据上(同时在验证拆分上监视性能),然后在测试数据上评估模型。

(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
#对训练数据和测试数据进行重新向量化
x_train = x_train.reshape(60000, 784).astype("float32") / 255
x_test = x_test.reshape(10000, 784).astype("float32") / 255
#编译模型
model.compile(
    loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    optimizer=keras.optimizers.RMSprop(),
    metrics=["accuracy"],
)
#训练模型
history = model.fit(x_train, y_train, batch_size=64, epochs=2, validation_split=0.2)
#评估模型
test_scores = model.evaluate(x_test, y_test, verbose=2)
print("Test loss:", test_scores[0])
print("Test accuracy:", test_scores[1])

 

4、保存模型

训练完成模型后,可以保存模型为文件;方面模型复用。可以调用model.save()方法保存模型。保存后的模型文件由以下组成:

  1. 模型架构
  2. 模型权重值(在训练过程中获悉)
  3. 模型训练配置
  4. 优化程序及其状态(如果有的话)(从上次中断的地方重新开始训练)
#保存模型
model.save(r"D:\02_application\pycharmworkspace\models\my_model")
#删除模型
#del model
#加载模型
#model = keras.models.load_model(r"D:\02_application\pycharmworkspace\models\my_model")

保存的模型文件:

5、模型的嵌套

 模型训练完成后,可以作为另一个模型的一个图层,实现创建更复杂的模型,被嵌套的模型,可以像图层一样使用。

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值