全連接網絡之線性迴歸

最近在入門深度學習,看到全連接的時候,一時興起來模擬一下最小二乘的解法。

import numpy as np
import random
import matplotlib.pyplot as plt

#造數據,對y=3x+2直線上的點進行擾動
n = 100  
x = np.zeros((n,2))
y = np.zeros((n,1))
for i in range(n) :
    x[i,0] = random.randint(1,20)
    x[i,1] = 1
    if(i % 3 == 0) :
        y[i] = 3*x[i,0] + 2* x[i,1] + 5
    else :
        y[i] = 3*x[i,0] + 2* x[i,1]

#生成隨機權重(k,b): y = kx + b
np.random.seed(1)
w =	np.random.rand(2,1)

#前向傳播與後向傳播,注意dw = x.T * l1_err,並且學習率很重要
for j in range(100000):
	l1 = np.dot(x,w)
	l1_err = l1 - y
	w -= 0.0001 * x.T.dot(l1_err)
 
#畫出擬合直線
print("final w:\n",w)
k = w[0][0]
b = w[1][0]
plt.plot([0,20],[b,20*k+b], color='r')
plt.scatter(x[:,0], y, marker='.', c='g')
plt.show()

效果如下所示,綠色爲散點,紅色爲擬合的直線,效果還不錯!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章