TensorFlow 实现曲线拟合

本篇播客利用了TensorFlow实现了曲线y = kx + b中参数k,b的求解,代码如下

import tensorflow as tf
import numpy as np
import os

os.environ["TF_CPP_MIN_LOG_LEVEL"] = '2'  # 只显示 warning 和 Error
x_data = np.random.rand(100)  # 生成100个随机数
y_data = x_data * 0.2 + 0.4  # 得到真值y

k = tf.Variable(0.)  # 定义变量 float
b = tf.Variable(0.)  # 定义变量 float

y = k * x_data + b  # 曲线模型

loss = tf.reduce_mean(tf.square(y - y_data))  # 损失函数
optimizer = tf.train.GradientDescentOptimizer(0.01)  # 定义一个优化器为优化Loss,指定学习率为0.01
train = optimizer.minimize(loss)  # 优化Loss
# 至此计算图已经定义好了,后面是初始化及在session中启动图

init = tf.global_variables_initializer()  # 只要使用到变量,就要加上这句,初始化所有变量

with tf.Session() as sess:
    sess.run(init)  # 只要存在变量,必须先在session中运行初始化变量
    for step in range(1001):
        sess.run(train)
        if step % 100 == 0:
            print(step, sess.run([k, b]))

结果如下

0 [0.0048449547, 0.009826779]
100 [0.18180682, 0.3682551]
200 [0.1968718, 0.39813355]
300 [0.19835065, 0.40052718]
400 [0.19866277, 0.40063486]
500 [0.19885166, 0.4005639]
600 [0.19900797, 0.40048862]
700 [0.19914262, 0.40042236]
800 [0.19925895, 0.40036514]
900 [0.19935946, 0.40031555]
1000 [0.1994463, 0.40027282]

从结果看与真值0.2 0.4 比较接近

猜你喜欢

转载自blog.csdn.net/ruguowoshiyu/article/details/81697852