系列文章
本教程有同步的github地址
知識點
線性迴歸:是迴歸問題,形式如。
np.random.rand()
通過這個函數可以生成一個或者一組從0-1
均勻分佈的隨機樣本值。隨機樣本的取值範圍是[0, 1)。
tf.square()
計算平方,針對一個或者一組數據進行平方計算,即x^2
。
tf.reduce_mean()
計算平均數,計算一個list的平均數。
tf.train.GradientDescentOptimizer()
定義SGD
優化器。
示例
#%% md
# 線性迴歸
#%%
import tensorflow as tf
import numpy as np
#%% md
生成隨機的數據點100個
np.random.rand()函數
作用:
通過本函數可以返回一個或一組服從“0~1”均勻分佈的隨機樣本值。隨機樣本取值範圍是\[0,1),不包括1。
#%%
x_data = np.random.rand(100)
y_data = 0.1 * x_data +0.2
#%%
x_data
#%%
y_data
#%% md
構造線性模型
#%%
b = tf.Variable(0.)
k = tf.Variable(0.)
y = k * x_data + b
#%%
k
#%%
b
#%%
y
#%% md
創建二次代價函數
`tf.square()`計算平方
`tf.reduce_mean()`計算均值
#%%
loss = tf.reduce_mean(tf.square(y - y_data))
#%%
loss
#%% md
定義優化器
#%%
optim = tf.train.GradientDescentOptimizer(0.2)
#%%
optim
#%% md
最小化代價函數
#%%
train_step = optim.minimize(loss)
#%%
train_step
#%% md
初始化全部的變量
#%%
init = tf.global_variables_initializer()
#%% md
訓練迭代
#%%
with tf.Session() as sess:
sess.run(init)
for step in range(2000):
sess.run(train_step)
if step % 20 == 0:
k_value, b_value, loss_value = sess.run([k, b, loss])
print("k={}, b={}, loss={}".format(k_value, b_value, loss_value))
#%%