一、tf.keras高阶API概览
高阶API | 代码 | 实现 |
---|---|---|
activations | tf.keras.actibations | 包含了当前主流的激活函数,可以直接通过该API进行激活函数的调用。 |
applications | tf.keras.applications | 包含的是已经进行预训练的神经网络模型,可以直接进行预测或者迁移学习。目前该模块中包含了主流的神经网络结构。 |
backend | tf.keras.backend | 包含了Keras后台的一些基础API接口,用于实现高阶API或者自己构建神经网络。 |
datasets | tf.keras.datasets | 包含了常用的公开数据训练集,可以直接进行使用(需要翻墙),数据集有CIFAR-100、Boston Housing等。 |
layers | tf.keras.layers | 包含了已经定义好的常用的神经网络层。 |
losses | tf.keras.losses | 包含了常用的损失函数,可以根据实际需求直接进行调用。 |
optimizers | tf.keras.optimizers | 包含了主流的优化器,可以直接调用API使用。比如Adm等优化器可以直接调用,然后配置所需要的参数即可。 |
preprocessing | tf.keras.preprocessing | 包含了数据处理的一些方法,分为图片数据处理、语言序列处理、文本数据处理等,比如NLP常用的pad_sequences等,在神经网络模型训练前的数据处理上提供了非常强大的功能。 |
regularizers | tf.keras.regularizers | 提供了常用的正则化方法,包括L1、L2等正则化方法。 |
wrappers | tf.keras.wrappers | 是一个Keras模型的包装器,当需要进行跨框架迁移时,可以使用该API接口提供与其他框架的兼容性。 |
Sequential类 | tf.keras.Sequential | 可以让我们将神经网络层进行线性组合形成神经网络结构。 |
二、tf.keras高阶API编程
- 将以构建一个线性回归模型为例介绍TensorFlow 2.0高阶API的使用。
import tensorflow as tf
import numpy as np
# 使用tf.keras高阶API构建神经网络模型
# 实例化一个tf.keras.Sequential
model = tf.keras.Sequential()
# 使用Sequential的add方法添加一层全连接神经网络
model.add(tf.keras.layers.Dense(input_dim=1,units=1))
# 使用Sequential的compile方法对神经网络模型进行编译,loss函数使用MSE,optimizer使用SGD(随机梯度下降)
model.summary()
model.compile(loss='mse',optimizer='sgd')
# 使用tf.keras高阶API训练神经网络模型
# 随机生成一些训练数据,在-10到10的范围内生成700个等差数列作为训练输入
X = np.linspace(-10,10,700)
# 通过一个简单的算法,生成Y数据,模拟训练数据的标签,700, 为数组
Y=2*X+100+np.random.normal(0,0.1,(700,))
# 开始训练,“verbose=1”表示以进度条的形式显示训练信息,"epochs=200"表示训练的epochs为200,"validation_split=0.2"表示分离20%的数据作为验证数据
model.fit(X,Y,verbose=1,epochs=200,validation_split=0.2)
# 使用tf.keras高阶API保存神经网络模型
filename = 'line_model.h5'
model.save(filename)
print("保存模型为line_model.h5")
# 使用tf.keras高阶API加载模型进行预测
x = tf.constant([0.5])
model = tf.keras.models.load_model(filename)
y= model.predict(x)
print(y)
结果显示:
Epoch 1/200
18/18 [==============================] - 0s 15ms/step - loss: 6472.1372 - val_loss: 11034.5996
Epoch 2/200
18/18 [==============================] - 0s 1ms/step - loss: 3540.1726 - val_loss: 6997.1821
...
Epoch 198/200
18/18 [==============================] - 0s 1ms/step - loss: 0.0089 - val_loss: 0.0098
Epoch 199/200
18/18 [==============================] - 0s 1ms/step - loss: 0.0089 - val_loss: 0.0099
Epoch 200/200
18/18 [==============================] - 0s 1ms/step - loss: 0.0088 - val_loss: 0.0109
保存模型为line_model.h5
[[100.99787]]