代碼?
# -- encoding:utf-8 --
"""
Create by ibf on 2018/5/6
"""import numpy as np
import tensorflow as tf# 1. 構造一個數據
np.random.seed(28)
N = 100
x = np.linspace(0, 6, N) + np.random.normal(loc=0.0, scale=2, size=N)
y = 14 * x - 7 + np.random.normal(loc=0.0, scale=5.0, size=N)
# 將x和y設置成為矩陣
x.shape = -1, 1
y.shape = -1, 1# 2. 模型構建
# 定義一個變量w和變量b
# random_uniform:(random意思:隨機產生數據, uniform:均勻分布的意思) ==> 意思:產生一個服從均勻分布的隨機數列
# shape: 產生多少數據/產生的數據格式是什么; minval:均勻分布中的可能出現的最小值,maxval: 均勻分布中可能出現的最大值
# tf.zeros:意思是產生一個全為 零 的矩陣,參數表明是一維的
w = tf.Variable(initial_value=tf.random_uniform(shape=[1], minval=-1.0, maxval=1.0), name='w')
b = tf.Variable(initial_value=tf.zeros([1]), name='b')
# 構建一個預測值
y_hat = w * x + b# 構建一個損失函數
# 以MSE作為損失函數(預測值和實際值之間的平方和)
loss = tf.reduce_mean(tf.square(y_hat - y), name='loss')# 以隨機梯度下降的方式優化損失函數
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.05)
# 在優化的過程中,是讓那個函數最小化,會自動更新w和b
train = optimizer.minimize(loss, name='train')# 全局變量更新
init_op = tf.global_variables_initializer()# 運行
def print_info(r_w, r_b, r_loss):print("w={},b={},loss={}".format(r_w, r_b, r_loss))with tf.Session() as sess:# 初始化sess.run(init_op)# 輸出初始化的w、b、lossr_w, r_b, r_loss = sess.run([w, b, loss])print_info(r_w, r_b, r_loss)# 進行訓練(n次)for step in range(100):# 模型訓練sess.run(train)# 輸出訓練后的w、b、lossr_w, r_b, r_loss = sess.run([w, b, loss])print_info(r_w, r_b, r_loss)
運行結果