Tensorflow算法的一般流程:
1.导入或生成样本数据集
2.转换和归一化数据:转换是因为首先一般来讲我们输入样本的数据集并不符合Tensorflow期望的数据形式,所以需要转换数据格式以满足Tensorflow。另外,针对所使用的机器学习算法,当数据集的维度或者类型不符合所用的机器学习算法要求时,需要在使用前进行数据转化。比如说在使用CNN或RNN时,要求输入样本的维度必须是4维的,所以需要将数据的维度进行转化,才能使用相应的算法。对于归一化来说,大部分机器学习算法期待的输入样本数据是归一化的数据。尤其是神经网络相关算法必须首先对输入数据进行归一化处理。在tensorflow中使用data=tf.nn.batch_norm_with_global_normalization()
3.当完成前两部,也即数据预处理完成后,需要对数据集进行划分,将数据集划分为训练样本、测试样本和验证样本:其中训练样本用来更新模型的参数,验证样本用来调参,测试集用来检测模型的泛化能力。由于神经网络只要隐藏层足够深就可以拟合任意复杂的函数,所以容易过拟合,这时候使用训练集更新参数,用验证集来调参,如果模型在训练集上的准确率在上升,而在验证集上的准确率下降,就停止训练并返回在验证集上的准确率最高的一组参数的模型作为最终的模型,这种方式就是“早停”。
4.设置机器学习算法的超参数:机器学习算法通常有很多超参数,如神经网络中经常用到的batch_size,learning_rate。通常在程序中在使用算法的开头就将所有的超参数一次性初始化:经常在程序中看到诸如:learning_rate=0.01, batch_size=100,iterations=1000。
5.初始化变量和占位符:当数据集划分完毕,算法的超参数也设置好了,这时候我们就需要将数据传入计算图中。Tensorflow通过占位符获取数据,tensorflow通过指定数据大小和数据类型初始化变量和占位符。tensorflow既支持float64也支持float32。但是使用的数据类型字节数越多结果越精确,同时运行速度也会越慢。
var=tf.constant(42)
input=tf.placeholder(tf.float32,[None,inputsize])
6.定义模型的结构
7.定义损失函数:用来评估输出结果如loss=tf.reduce_mean(tf.square(y-prediction))
8.初始化模型和训练模型:tensorflow通过占位符来赋值,维护变量的状态信息。
with tf.Session() as sess:
session.run()
9.评估机器学习模型:使用新样本来评估机器学习模型对新样本数据集的效果。通过对训练集和测试集样本精度的比较可以判断模型是否存在过拟合或欠拟合。
10.调优超参数:机器学习需要基于模型的效果来回调整一些超参数。通过使用不同的超参数来重复训练模型,并用验证样本来评估机器学习模型。
11.预测结果:机器学习的模型一旦训练好,就可以用来预测新的未知数据。