tensorflow-代码-简单线性拟合

tensorflow学习之路 五:线性拟合

步骤:

1.随机生成100随机点作为x,定义一个方程y=k×X+b,使用方程计算y的值

#使用numpy生成100个随机的点
x_data = np.random.rand(100)
y_data = x_data*1+3

2.创建两个变量k和b,表示要建立的线性模型的斜率k和截距b,建立方程

#构造一个线性模型
b = tf.Variable(0.)#定义一个变量,初始值设为0.0
k = tf.Variable(0.)#定义一个变量,初始值设为0.0
#定义一个线性模型
y = k*x_data + b

3.定义loss值,使用二次代价函数的方法,其中y_data表示真实值,y表示预测值

#二次代价函数,计算误差
loss = tf.reduce_mean(tf.square(y_data-y))

4.定义优化方法,使用梯度下降法进行优化,定义梯度下降法

#定义一个梯度下降法进行训练优化
optimizer = tf.train.GradientDescentOptimizer(0.2)

5.使用梯度下降法优化loss,获得最小loss

#最小化代价函数,使用上面定义的梯度下降法优化loss,减少误差
train = optimizer.minimize(loss)

完整代码:

"""
    tensorflow 简单使用案例
"""
import tensorflow as tf
import numpy as np
#使用numpy生成100个随机的点
x_data = np.random.rand(100)
y_data = x_data*1+3

#构造一个线性模型
b = tf.Variable(0.)#定义一个变量,初始值设为0.0
k = tf.Variable(0.)#定义一个变量,初始值设为0.0

#定义一个线性模型
y = k*x_data + b

#二次代价函数,计算误差
loss = tf.reduce_mean(tf.square(y_data-y))

#定义一个梯度下降法进行训练优化
optimizer = tf.train.GradientDescentOptimizer(0.2)

#最小化代价函数,使用上面定义的梯度下降法优化loss,减少误差
train = optimizer.minimize(loss)

#初始化变量
init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for step in range(201):
        sess.run(train)
        if step%20 == 0:
            print(step,sess.run([k,b,loss]))#每隔20步,显示斜率k,截距b,误差loss


结果:

迭代次数    斜率       截距        误差
0         [0.7523737, 1.405753,  2.9684691]
20        [1.301885,  2.835301,  0.0067594755]
40        [1.1900864, 2.8962953, 0.0026799745]
60        [1.1196907, 2.934701,  0.0010625487]
80        [1.075365,  2.9588835, 0.00042127658]
100       [1.0474545, 2.9741104, 0.00016702618]
120       [1.0298804, 2.9836981, 6.6222114e-05]
140       [1.0188147, 2.9897354, 2.6255619e-05]
160       [1.0118468, 2.9935367, 1.0409605e-05]
180       [1.0074596, 2.9959302, 4.1273847e-06]
200       [1.0046971, 2.9974375, 1.6363775e-06]

可以看出经过多次迭代,原本斜率截距都为0.0的初始值,慢慢接近原始数据,误差越来越小

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值