tesorflow007-线性回归

一,线性回归的模型:

y = w*x +b

二,训练原理

训练其实就是传入x 的值 和 对应的y值,通过训练w和b的值,使通过线性函数计算的y_值趋近y

三,训练步骤

1,定义参数
定义x特征值 占位符类型 x的值在运行的过程中进行动态传入

x = tf.placeholder(tf.float32)

#定义w 变量类型 一维

W = tf.Variable(tf.zeros([1]))

#定义b

b = tf.Variable(tf.zeros([1]))

#定义每次训练传入的目标值

y_ = tf.placeholder(tf.float32)

2.定义线性模型:
#线性模型 这里的y是每次训练得到的目标值

y = W * x +b

3.计算每次训练的损失值:
#计算每次训练的丢失值 使用均方误差进行定损 使用(目标值-训练目标值)求方差的平均值

lost = tf.reduce_mean(tf.square(y_ - y))

各种算法定损的方法:

算法定损方法优化
线性回归均方误差梯度下降
逻辑回归对数似然损失梯度下降 二分类
神经网络交叉熵损失反向传播算法(梯度下降)

4.优化函数
#优化函数 优化函数代表我们要通过什么方式去优化我们需要学习的值,即优化更改我们要学习的w和b让学习结果和线性结果趋于相同 这里我们采用梯度下降的函数
#后面传入的值是学习效率。一般是一个小于1的数。越小收敛越慢,但并不是越大收敛越快,取值太大甚至可能不收敛了。

optimizer = tf.train.GradientDescentOptimizer(0.0000001)

#这里填写我们每次训练的目的 即我们是通过优化函数的对象optimizer进行减小lost的值

train_step = optimizer.minimize(lost)

四,打开session开始训练

#打开一个session

with tf.Session() as sess:
    #在session下初始化 所有的变量
    init = tf.global_variables_initializer()
    sess.run(init)
    #训练的次数
    steps = 1000
    for i in range(steps):
        #模拟传入训练数据
        #每次训练传入的数据x的列表
        xs = [i]
        #y的列表
        ys = [3 * i]
        #构造传参列表
        feed = {x: xs, y_: ys}
        #运行 传入训练目的 和变量列表
        sess.run(train_step, feed_dict=feed)
        if i % 100 == 0:
            print("经过 %d 训练:" % i)
            print("W: %f" % sess.run(W))
            print("b: %f" % sess.run(b))
            print("lost: %f" % sess.run(lost, feed_dict=feed))

五,案例演示:

#coding:utf-8
##线性回归
#各种算法定损的方法
#算法     定损方法      优化
#线性回归   均方误差     梯度下降
#逻辑回归   对数似然损失  梯度下降 二分类
#神经网络   交叉熵损失    反向传播算法(梯度下降)
import tensorflow as tf

#线性回归的模型:
#y = w*x + b
#训练其实就是传入x 的值 和 y对应的值,通过训练w和b的值,使通过线性函数计算的y_值趋近y
#定义x特征值  占位符类型 x的值在运行的过程中进行动态传入
x = tf.placeholder(tf.float32)
#定义w 变量类型 一维
W = tf.Variable(tf.zeros([1]))
#定义b
b = tf.Variable(tf.zeros([1]))
#定义每次训练传入的目标值
y_ = tf.placeholder(tf.float32)

#线性模型
y = W * x +b

#计算每次训练的丢失值 使用均方误差进行定损
lost = tf.reduce_mean(tf.square(y_ - y))

#优化函数 优化函数代表我们要通过什么方式去优化我们需要学习的值,即优化更改我们要学习的w和b让学习结果和线性结果趋于相同 这里我们采用梯度下降的函数
#后面传入的值是学习效率。一般是一个小于1的数。越小收敛越慢,但并不是越大收敛越快,取值太大甚至可能不收敛了。
optimizer = tf.train.GradientDescentOptimizer(0.0000001)
#这里填写我们每次训练的目的 即我们是通过优化函数的对象optimizer进行减小lost的值
train_step = optimizer.minimize(lost)
#打开一个session
with tf.Session() as sess:
    #在session下初始化 所有的变量
    init = tf.global_variables_initializer()
    sess.run(init)
    #训练的次数
    steps = 1000
    for i in range(steps):
        #模拟传入训练数据
        #每次训练传入的数据x的列表
        xs = [i]
        #y的列表
        ys = [3 * i]
        #构造传参列表
        feed = {x: xs, y_: ys}
        #运行 传入训练目的 和变量列表
        sess.run(train_step, feed_dict=feed)
        if i % 100 == 0:
            print("经过 %d 训练:" % i)
            print("W: %f" % sess.run(W))
            print("b: %f" % sess.run(b))
            print("lost: %f" % sess.run(lost, feed_dict=feed))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值