標籤:

回歸擬合

1.擬合線性模型

輸入層只有1個neuron,沒有隱藏層,沒有激活函數,輸出層只有1個neuron。這裡僅僅是在tensorflow中使用其優化演算法優化損失函數。

import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt線性模型#試驗多次,不知道為什麼訓練數據的x只能限制在[0,1]的區間里,否則訓練過程中參數會溢出,而得出錯誤的結果x = np.linspace(0,1,500).astype(np.float32).reshape((500,1)) #[0,1]共500均勻分割點,且shape變為(500,1)y = (3*x+5+np.random.normal(0,0.1,500).reshape((500,1))).astype(np.float32).reshape((500,1))Weights = tf.get_variable("weights1",[1],initializer = tf.truncated_normal_initializer(stddev=0.1)) biases = tf.get_variable(biases1,[1],initializer=tf.constant_initializer(0.0)) y_ = Weights*x + biasesloss = tf.reduce_mean(tf.square(y_-y)) train = tf.train.GradientDescentOptimizer(0.5).minimize(loss) ### 訓練部分with tf.Session() as sess: tf.global_variables_initializer().run() for step in range(200): sess.run(train) if step % 20 == 0: print(step,sess.run(Weights),sess.run(biases))大體訓練過程,初始化所有op,運行sess.run(train),trian會去找相關的loss,loss找y_,y_使用x且讀取Weights,biases進來計算。

每輪訓練都整個訓練集當成一個批數據放進去計算平均損失,然後優化,共計算了20輪。

2.擬合非線性模型

由回歸知道也可以通過在模型中加入非線性項來擬合非線性模型,如 y=w_{1}x+w_{2}sinx+b

3.上面兩個模型其實質都是線性模型的方式訓練參數。


推薦閱讀:

概率論回顧
優化問題
語料庫語言學基礎知識:概率論2(連續變數、聯合分布)
矩陣分解及其意義

TAG:概率論 |