【TF-3-1】Tensorflow--简单线性拟合
一、代码:
1 import numpy as np
2 import tensorflow as tf
3 # 1. 构造一个数据
4 np.random.seed(28)
5 N = 100
6 x = np.linspace(0, 6, N) + np.random.normal(loc=0.0, scale=2, size=N)
7 y = 14 * x - 7 + np.random.normal(loc=0.0, scale=5.0, size=N)
8 # 将x和y设置成为矩阵
9 x.shape = -1, 1
10 y.shape = -1, 1
11 # 2. 模型构建
12 # 定义一个变量w和变量b,初始化
13 # random_uniform:(random:随机产生数据,uniform:均匀分布) =>产生一个服从均匀分布的随机数列
14 # shape: 产生多少数据/产生的数据格式是什么; minval:均匀分布中的可能出现的最小值,maxval: 均匀分布中可能出现的最大值
15 w = tf.Variable(initial_value=tf.random_uniform(shape=[1], minval=-1.0, maxval=1.0), name='w')
16 b = tf.Variable(initial_value=tf.zeros([1]), name='b')
17 # 构建一个预测值
18 y_hat = w * x + b
19 # 构建一个损失函数:以MSE作为损失函数(预测值和实际值之间的平方和)
20 loss = tf.reduce_mean(tf.square(y_hat - y), name='loss')
21 # 以随机梯度下降的方式优化损失函数
22 optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.05)
23 # 在优化的过程中,是让那个函数最小化
24 train = optimizer.minimize(loss, name='train')
25 # 全局变量更新
26 init_op = tf.global_variables_initializer()
27 # 运行
28 def print_info(r_w, r_b, r_loss):
29 print("w={},b={},loss={}".format(r_w, r_b, r_loss))
30 with tf.Session() as sess:
31 # 初始化
32 sess.run(init_op)
33 # 输出初始化的w、b、loss
34 r_w, r_b, r_loss = sess.run([w, b, loss])
35 print_info(r_w, r_b, r_loss)
36 # 进行训练(n次)
37 for step in range(100):
38 # 模型训练
39 sess.run(train)
40 # 输出训练后的w、b、loss
41 r_w, r_b, r_loss = sess.run([w, b, loss])
42 print_info(r_w, r_b, r_loss)
43
二、结果
截取后面一部分:


浙公网安备 33010602011771号