TensorFlow笔记:算法的一般流程

总结一下TensorFlow算法一般流程:

1.导入/生成样本数据集:

所有的机器学习算法都依赖样本数据集,数据集既有生成的样本数据集,也有外部公开的样本数据集。有时,生成的数据集会更容易符合预期结果。

2.转换和归一化数据:

一般来讲,输入样本数据集并不符合TensorFlow期望的形状,所以需要转换数据格式以满足TensorFlow。当数据集的维度或者类型不符合所用机器学习算法的要求时,需要在使用前进行数据转换。大部分机器学习算法期待的输入样本数据是归一化的数据。TensorFlow具有内建函数来归一化数据,如下:

data = tf.nn.batch_norm_with_global_normalization(...)

3.划分样本数据集为训练样本集、测试样本集和验证样本集:

一般要求机器学习算法的训练样本集和测试样本集是不同的数据集。另外,许多机器学习算法要求超参数调优,所以需要验证样本集来决定最优的超参数。

4.设置机器学习参数(超参数):

机器学习经常要有一系列的常量参数。例如,迭代次数、学习率,或者其他固定参数。约定俗成的习惯是一次性初始化所有的机器学习参数,读者经常看到的形式如下:

learn_rate = 0.01
batch_size = 100
iterations = 1000

5.初始化变量和占位符:

在求解最优化过程中(最小化损失函数),TensorFlow通过占位符获取数据,并调整变量和权重/偏差。TensorFlow指定数据大小和数据类型初始化变量和占位符。常用float32,TensorFlow支持float64和float16。注意,使用的数据类型字节数越多结果越精确,同时运行速度越慢。使用方式如下:

a_var = tf.constant(42)
x_input = tf.placeholder(tf.float32, [None, input_size])
y_input = tf.placeholder(tf.float32, [None, num_classes])

6.定义模型结构:

在获取样本数据集、初始化变量和占位符后,开始定义机器学习模型。TensorFlow通过选择操作、变量和占位符的值来构建计算图。这里给出简单的线性模型:

y_pred = tf.add(tf.mul(x_input, weight_matrix) , b_matrix)

7.声明损失函数:

定义完模型后,需要声明损失函数来评估输出结果。损失函数能说明预测值与实际值的差距。

loss = tf.reduce_mean(tf.square(y_actual - y_pred))

8.初始化模型和训练模型:

TensorFlow创建计算图实例,通过占位符赋值,维护变量的状态信息。下面是初始化计算图的一种方式:

with tf.Session(grapy=graph) as session:
    ...
    session.run(...)
    ...

也可以用如下的方式初始化计算图:

session = tf.Session(grapy=graph) 
session.run(...)

9.评估机器学习模型:

一旦构建计算图,并训练机器学习模型后,需要寻找某种标准来评估机器学习模型对新样本数据集的效果。通过对训练样本集和测试样本集的评估,可以确定机器学习模型是过拟合还是欠拟合。

10.调优超参数:

大部分情况下,机器学习者需要基于模型效果来回调整一些超参数。通过调整不同的超参数来重复训练模型,并用验证样本集来评估机器学习模型。

11.发布/预测结果:

所有机器学习模型一旦训练好,最后都用来预测新的、未知的数据。

整理来源:《TensorFlow机器学习实战指南》 — 〔美〕尼克·麦克卢尔(Nick McClure)

更多内容,关注个人公众号:DataCode

    原文作者:Zmax
    原文地址: https://zhuanlan.zhihu.com/p/34972219
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞