**
# -- 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、loss
r_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、loss
r_w, r_b, r_loss = sess.run([w, b, loss])
print_info(r_w, r_b, r_loss)
執行結果
深度學習之tensorflow(一)線性回歸模型
線性回歸案例 import tensorflow as tf import numpy as np from matplotlib import pyplot as plt 組織資料 x np.random.rand 100 y x 0.1 0.2 定義線性模型 k tf.variable 0.初始...
一 線性結構
基礎知識 1.陣列 2.帶頭結點的雙向鍊錶 head first 3.迴圈佇列 例一 最小值問題 問題描述 實現乙個n個元素的線性表,每次可以修改其中乙個元素,也可以詢問閉區間 q,p 中元素的最小值。1 n,m 100000 分析 設塊長l,則一共有n l塊 維護陣列b,儲存每個塊的最小值。每次修...
(一)線性模型
基本形式 給定由d個屬性描述的特徵 x 其中x 是在第i個屬性位置上的取值,這樣就形成了乙個線性函式,定義如下 令 x 1 1寫成向量形式如下 我們的目標就是去求這些引數,如何確定引數,關鍵在於如何去衡量 h x 和y之間的差別。均方誤差是回歸任務中最常用的效能度量,因此我們可以試圖讓均方誤差最小化...