包括三部分,**(這裡w設定為矩陣,方便大家理解矩陣更新),最速下降意義(如何求得更新公式),具體例子
最速下降和隨機梯度下降是一樣一樣的,餵入的資料隨機的就是隨機梯度下降
當然最速梯度下降和隨機梯度下降很有點區別的,最速梯度下降學習率使用了線性搜尋armji法則(這裡不再詳細分析)
1.最速梯度下降法的含義或意義
**的例子
!!!!!!注意,w的初始化一定初值不能全一樣,如果初值全一樣,那麼更新過程就完全一樣了,w的多維就完全失去意義了
**
import numpy as np
import random
seed = 1
def sgd(x, y, w, alpha, m , max_iteration):
"""隨機梯度下降法:stochastic_gradient_descent
:param x:train_data
:param y:train_label
:param w:初始化權重
:param alpha:學習速率
:param m:
:param max_iteration:迭代次數
:return:
"""data = list(range(4))
for i in range(0, max_iteration):
index = random.sample(data, 1)[0] # 從data列表中隨機選取乙個數,sgd 隨機梯度下降,隨機就是體現在這個地方,其實順序餵入也是隨機的一種
z = y[index]
print z.shape
hypothesis = np.dot(x[index], w) # 計算神經網路的輸出(無啟用函式),前向傳播過程
print hypothesis.shape
print z.shape
loss = hypothesis - z # 損失函式
# 下降梯度
# print z.shape
# print loss.shape
temp = np.mat(x[index])
print temp.shape
loss=np.reshape(loss, (1, -1))
gradient = np.dot(temp.t, loss)#損失函式是吳恩大上的 損失函式: 1/2 ×(y- y(x))**2 導數就是 : (y-y(x)) *x !!!注意這裡是對 w 求導, x 是常數
# 求導之後得到theta
w = w - alpha * gradient
return w
def main():
train_data = np.array([[1, 4, 2], [2, 5, 3], [5, 1, 6], [4, 2, 8]])
train_label = np.array([[19 ,12],[26, 14],[19,15],[20,16]] )
# [[19 ,12],[26, 14],[19,15],[20,16]]
m, n = np.shape(train_data) # 讀取矩陣的長度,shape[0]就是讀取矩陣第一維度的長度
rdm = np.random.randomstate(seed)#生成偽隨機數,seed是初始化數
#如果輸入 label ,變成 4行兩列 , w 就變成 3行兩列了
w = rdm.rand(n,2) #初始化 權重 w
max_iteration = 500 # 迭代次數
alpha = 0.01 # 學習速率
w = sgd(train_data, train_label, w, alpha, m, max_iteration)
print(w)
if __name__ == "__main__":
main()
C語言關於建立動態鍊錶(含詳細注釋)
關於建立動態鍊錶,首先我們要知道要為新建節點動態申請儲存單元,讓指標變數指向這個新建節點,然後再將新建節點新增到鍊錶中。在這裡插入 片 include include define len sizeof struct link 預定義利用sizeof得出len的長度 struct link int ...
knn詳細注釋python
from numpy import import operator as opt 對資料集進行規範化 defnormdata dataset maxvals dataset.max axis 0 求出一列的最大值 minvals dataset.min axis 0 求出一列的最小值 ranges ...
快排歸併排模板(含略詳細的填坑注釋說明)
include using namespace std void quicksort int arr,int low,int high void mergesort int a,int l,int r,int b int main int b 10 mergesort nums,0,9,b for ...