首页 理论教育 使用 TensorFlow 实现机器学习模型训练

使用 TensorFlow 实现机器学习模型训练

时间:2023-07-02 理论教育 版权反馈
【摘要】:Tensor Flow是谷歌公司开发的机器学习核心算法开源库,官网本身也是一个端到端开源机器学习平台,能直接在浏览器上运行代码。在安装和运行Tensor Flow程序时,如果出错,注意查阅提示信息,有可能是需要其他库的支持,也有可能是缺少C++运行环境,逐一解决即可。Tensor Flow字面上的意思是张量的流动,反映出Tensor Flow编程框架的特点。使用Tensor Flow通常包括两个部分。计算图的建立主要使用tf.keras,它是Tensor Flow用来构建和训练模型的高级API。

使用 TensorFlow 实现机器学习模型训练

Tensor Flow是谷歌公司开发的机器学习核心算法开源库,官网本身也是一个端到端开源机器学习平台,能直接在浏览器上运行代码。在Python环境中安装了Tensor Flow库后,通过import tensorflow as tf引用Tensor Flow。在安装和运行Tensor Flow程序时,如果出错,注意查阅提示信息,有可能是需要其他库的支持,也有可能是缺少C++运行环境,逐一解决即可。

Tensor Flow字面上的意思是张量的流动,反映出Tensor Flow编程框架的特点。Tensor对象称为张量,可以看作是一个多维的矩阵,用来引用运算结果,通常以数组的形式存储。每个张量包含维度和数据类型两个属性,同NumPy中ndarray矩阵不同的是,张量可以被GPU之类的加速器内存备份,并且张量是不可变的。张量可以通过“.numpy()”方法转换为NumPy矩阵。

使用Tensor Flow通常包括两个部分。首先,建立一个计算图,通过张量来表示计算图中各节点计算结果的传递关系。计算图的建立主要使用tf.keras,它是Tensor Flow用来构建和训练模型的高级API。

对于4.3.3节介绍的全连接型前馈型人工神经网络的创建,使用tf.keras.Sequential模型,它将神经网络的各个层(layer)组织到一起,建立模型。全连接型前馈型人工神经网络层为tf.keras.layer.Dense(),第一层可以接受“input_shape”参数,具有“input_shape”参数的层相当于在当前层插入一个tf.keras.layer.Input()层,所以只对第一层设置“input_shape”参数,之后的dense层不再需要设置该参数,系统会自动推算输入的大小。

dense层的主要参数有:

units:神经元的个数,也相当于层的输出空间的大小。

activation:缺省时为“None”,即不加激活函数,也就是线性

use_bias:是否使用偏置,缺省时为“true”。

bias_initializer:偏置的初始值,缺省时为“‘zeros’”。

层的添加有两种方式,一种是使用model.add()方法,另一种是直接以层的列表形式作为Sequential的参数添加。对于图4.50所示的神经网络,可用以下代码实现:(www.xing528.com)

图4.50 简易神经网络示意图

计算图建立好以后,在训练之前还需要通过编译对模型设置优化器、损失函数、训练监控指标、输出显示的标签等参数,如下述语句所示:

其中:“optimizer”参数用于设置优化器,还可以设置为“‘sgd’”,表示使用具有动量参数的梯度下降法;“loss”参数用于设置损失函数,还可以设置为“‘mean_squared_error’”,表示用均方误差损失函数作为损失函数;“metrics”参数用于返回模型各种性能参数输出标签,比如可以设置为:

接下来就是训练模型,主要是将训练数据馈送给模型,对数据和标签建立关联。训练完成后,还需要对模型用测试数据进行预测,验证模型的性能。

训练使用model.fit()方法,通过“epochs”参数设置训练迭代次数。模型的评估使用evaluate()方法实现,对新数据进行预测使用predict()方法。

Tensor Flow 2.5版以后,对于1.x和2.x版采用了tf.compat.v1和tf.compat.v2的方式进行兼容,本书所使用的Tensor Flow是基于2.5.0-RC1的CPU版。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈