【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 

  

二、结果

截取后面一部分:

posted @ 2020-03-29 19:55  忆凡人生  阅读(229)  评论(0编辑  收藏  举报