版权声明:本文为博主的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
tf.keras训练模型例子:实现单变量线性回归
单变量线性回归算法(如,x代表学历,f(x)代表收入):f(x)=ax+b
该例子选用Sequential序贯模型
- 序贯模型是函数式模型的简略版,为最简单的线性、从头到尾的结构顺序,不分叉,是多个网络层的线性堆叠。
- Keras实现了很多层,包括core核心层,Convolution卷积层、Pooling池化层等非常丰富有趣的网络结构。
- 在 Keras 中,我们可以通过组合层来构建模型,直接堆叠各个层。
个人总结:
整个过程可分为五步:
1、创建Sequential模型
2、添加所需要的神经层
3、使用.compile方法确定模型训练结构
4、使用.fit方法使模型与训练数据“拟合”
5、predict方法进行预测。
首先创建一个模型结构:
import tensorflow as tf
model = tf.keras.Sequential() # 顺序模型,一个输入一个输出
使用.add()函数可以添加层Dense:建立f(x)=ax+b这个模型
# Dense的第一个参数是输出数据的维度,input_shape是输入数据的维度,在该例子中只需要输入x,所以维度为1,且要用元组的形式表示,需要加个逗号
model.add(tf.keras.layers.Dense(1, input_shape=(1,))) # Dense层生成了两个参数,即a和b
# 可以通过model.summary()来得知模型的形状
我们可以使用很多 tf.keras.layers,详见:https://tensorflow.google.cn/api_docs/python/tf/keras/layers
这些layers有相同的构造函数参数:
构建好模型后,通过调用 compile 方法配置该模型的学习流程:
model.compile(optimizer='adam', loss='mse')
tf.keras.Model.compile 采用三个重要参数:
- optimizer:此对象会指定训练过程。从 tf.train 模块向其传递优化器实例,例如 AdamOptimizer、RMSPropOptimizer 或 GradientDescentOptimizer。
- loss:要在优化期间最小化的函数。常见选择包括均方误差 (mse)、categorical_crossentropy 和binary_crossentropy。损失函数由名称或通过tf.keras.losses 模块传递可调用对象来指定。
- metrics:用于监控训练。它们是 tf.keras.metrics 模块中的字符串名称或可调用对象。
然后使用.fit方法进行测试数据与模型的拟合:
实例:
import pandas as pd
data = pd.read_csv('./dataset/Income1.csv') # 读取Income1数据集
x = data.Education # 变量
y = data.Income # 因变量
history = model.fit(x, y, epochs=5000)
keras.models.Model.fit()函数各个参数的详解:https://tensorflow.google.cn/api_docs/python/tf/keras/models/Model#fit
预测 tf.keras.Model.predict 方法
model.predict(x) # x是前面的data.Education
# or
model.predict(pd.Series([20])) # 或者准确指定一个受教育年限