TensorFlow 例項一 線性回歸模型

2021-10-05 03:57:52 字數 1825 閱讀 4919

** 

# -- 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之間的差別。均方誤差是回歸任務中最常用的效能度量,因此我們可以試圖讓均方誤差最小化...