tensorflow-综合学习系列实例之线性回归
tf是现在比较流行的深度学习框架之一,从今天开始我会把tf由简入深到进行讲解,不对的地方还请大家谅解,因为tf的版本现在更新的速度很快,不同的版本对应的api也是有所区别的,所以需要找到对应的版本,后面我所讲解的实例都是基于1.2版本
在使用tf的一般正常几个核心步骤如下:
1 首先定义参数,一般使用tf.flags这种格式
2 定义变量
3 创建graph
4 创建session,实际使用中可以增加sessionconfig
5 训练
6 计算损失函数
7 计算损失函数梯度更新
8 运行
9 预测
接下来,就先用tf实现一个最简单的线性回归预测,我们预测一个形如y=kx+b这种形式,例子虽然简单的,但是核心步骤是必不可少的,学习任何东西一定是从简单到复杂的,OK 废话不多说,我们看代码
# author jiahp # 通过tf实现简单的线性关系预测 import tensorflow as tf import numpy as np #创建一个形如y = 0.3x+0.1 # 定义参数 epoch batch_size # 定义参数 epoch batch_size tf.flags.DEFINE_integer('epoch',2000,'训练多少轮') tf.flags.DEFINE_integer('batch_size',20,'满足该条件就打印相关信息') tf.flags.DEFINE_float('learning_rate',0.01,'学习速率') # **参数 param = tf.flags.FLAGS #梯度下降指定的学习率 一般在0到1之间 learning_rate = param.learning_rate #创建一个输入 x_input = np.random.rand(100).astype(np.float32) #创建一个输出 y_input = x_input*0.5 + 0.1 #创建图的上下文管理器 with tf.Graph().as_default(): #session会话的配置 config=tf.ConfigProto(log_device_placement=True) sess = tf.Session(config=config) with sess.as_default(): #指定权重 weight = tf.Variable(tf.random_uniform([1],-1,1)) #指定biases baies = tf.Variable(tf.zeros([1])) #创建期望输出 yy_input = x_input*weight + baies #获取期望输出值和实际输入值之间的差 yy_data = yy_input-y_input #获取期望和实际之间的损失 通过计算差的平方和 loss = tf.reduce_mean(tf.square(yy_data)) print('loss',loss) optimizer = tf.train.GradientDescentOptimizer(learning_rate) train = optimizer.minimize(loss) #创建初始化变量 init = tf.global_variables_initializer() #创建一个session sess = tf.Session() #运行 sess.run(init) #开始训练 for step in range(param.epoch): #训练模型 sess.run(train) if (step %param.batch_size==0): print(step,sess.run(weight),sess.run(baies))
最终结果: