TensorFlow2

機器學習基礎

  • 線性迴歸
  • 邏輯迴歸
  • Softmax分類
  • 神經網絡

線性迴歸

什麼是迴歸?

圖片描述
通俗地講:給定X1, X2, ..., Xn,經過模型或算法預測數值Y,便是迴歸。如上圖所示。
例如,預測測試分數:算法

x(hours) y(score)
10 90
9 80
3 50
2 30

如下面的數據闡述什麼是線性迴歸:網絡

x y
1 1
2 2
3 3

1.以下圖所示,咱們把上述數據中的點(x, y)在座標中描繪出來,能夠發現(x,y)呈線性趨勢。
2.試圖用一條直線H(x)=wx+b去擬合座標中的觀察值,例如圖中的3條直線。session

圖片描述

那麼,圖中的3條直線哪一個能更好地擬合觀察值(x,y)呢?以下圖所示:咱們能夠用觀察值到直線的豎直距離的平方(H(x)-y)^2來衡量模型的擬合效果,如圖中的損失函數:cost。less

圖片描述

讓咱們觀察一下這個例子中的損失函數到底長什麼樣子。以下圖所示:cost(W)爲平滑可導的凸函數,在w=1處取得最小值。所以,咱們能夠經過梯度降低的方法求解使得損失函數達到最小值的W。dom

圖片描述

TensorFlow實現線性迴歸

1.添加線性節點H(x) = Wx + b機器學習

# 訓練數據集x,y
x_train = [1, 2, 3]
y_train = [1, 2, 3]

W = tf.Variable(tf.random_normal([1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')
# 線性假設 XW + b
hypothesis = x_train * W + b

2.計算損失函數函數

cost = tf.reduce_mean(tf.square(hypothesis - y_train))

3.梯度降低學習

optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
train = optimizer.minimize(cost)

4.更新圖並獲取結果測試

# 開啓session會話
less = tf.Session()
# 初始化全局變量
sess.run(tf.global_variables_initializer())

# 擬合直線
for step in range(2001):
    sess.run(train)
    if step % 20 == 0:
        print(step, sets.run(cost), sess.run(W), sets.run(b))

完整代碼:spa

import tensorflow as tf
# 訓練數據集x,y
x_train = [1, 2, 3]
y_train = [1, 2, 3]

W = tf.Variable(tf.random_normal([1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')
# 線性假設 XW + b
hypothesis = x_train * W + b
# 損失函數
cost = tf.reduce_mean(tf.square(hypothesis - y_train))

# 梯度降低
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
train = optimizer.minimize(cost)

# 開啓session會話
sess = tf.Session()
# 初始化全局變量
sess.run(tf.global_variables_initializer())

# 擬合直線
for step in range(2001):
    sess.run(train)
    if step % 20 == 0:
        print(step, sess.run(cost), sess.run(W), sess.run(b))

圖片描述

相關文章
相關標籤/搜索