案例:TensorFlow实现线性回归


1、线性回归原理复习


     1)构建模型
            y = w1x1+w2x2 + ..... wnxn+ b
      2)构造损失函数
            均方误差
      3)优化损失
             梯度下降


2、案例:实现线性回归的训练


     准备真实数据    100样本
     x特征值形状(100,1)
     y_ _true 目标值(100, 1)
     y_ _true = 0.8x + 0.7
    假定x和y之间的关系满足
           y=kx+b
           k≈0.8    b≈0.7
          流程分析:
        (100,1) * (1, 1) = (100, 1)
         y_ predict = X * weights(1, 1) + bias(1, 2)
1)构建模型
y_ predict = tf.matmul(x, weights) + bias
2)构造损失函数
error = tf. reduce_ mean(tf. square(y. _predict - y_ .true))
3)优化损失
optimizer = tf.train. GradientDescentOpt imizer(learning_ rate=0. 01) . minimize(error)

代码示例:

import tensorflow as tf
tf.compat.v1.disable_eager_execution()
def linear_regression():
    """
    自实现一个线性回归
    1)准备数据
    2)模型构造
    3)构造损失函数
    4)优化损失
    :return:
    """
    # 准备数据
    X = tf.compat.v1.random_normal(shape=[100,1])
    y_true = tf.matmul(X,[[0.8]])+0.7
    # 构造模型 定义模型参数用 变量
    weights = tf.Variable(initial_value=tf.compat.v1.random_normal(shape=[1,1]))
    bias = tf.Variable(initial_value=tf.compat.v1.random_normal(shape=[1,1]))
    y_predict = tf.matmul(X,weights)+bias
    # 构造损失函数
    error = tf.reduce_mean(tf.square(y_predict-y_true))
    #优化损失
    optimizer = tf.compat.v1.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error)
    # 显示初始化变量
    init = tf.compat.v1.global_variables_initializer()
    # 开启会话
    with tf.compat.v1.Session() as sess:
        # 初始化变量
        sess.run(init)
        # 查看初始化模型参数之后的值
        print("训练前模型参数:权重%f ,偏置%f,损失为%f" % (weights.eval(),bias.eval(), error.eval()))
        # 开始训练
        for i in range(1000):
            sess.run(optimizer)
            print("第%d次训练后模型参数:权重%f ,偏置%f,损失为%f" % (i+1,weights.eval(), bias.eval(), error.eval()))

    return None

linear_regression()

学习率越高,训练到较好结果步数越小,但是过大会出现梯度爆炸现象

3、优化

1、增加变量显示

1)创建事件文件

2)收集变量

3)合并变量

4)每次迭代运行一次合并变量

5)将summary对象写入事件文件

调用tensorboard显示

2、添加命名空间

更直观的看到变量的变化

3、模型保存与加载

1)保存:saver.save(sess,path)

2)加载:saver.restore(sess,path)

  • 29
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值