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))

最终结果:


猜你喜欢

转载自blog.csdn.net/qq_18603599/article/details/80549197
今日推荐