《卷積神經網路的Python實現》筆記
線性分類器
線性模型
LinearClassification,線性分類中分值函式的程式碼實現。
import numpy as np
D = 784 #資料維度 28*28*1
K = 10 #型別數 10個數字
N = 128 #樣本數量
X = np.random.randn(N,D) #資料矩陣,每一行一個樣本
# print(X)
W = 0.01*np.random.randn(D,K)
# print(W)
b = np.zeros((1,K))
# print(b)
scores = np.dot(X,W) + b
#dot是矩陣乘法
#廣播機制,numpy自動識別意圖,不必將b轉成N*K大小的矩陣。
softmax損失函式(書中用的是softmax,對於SVM並沒有太多的講解)
使用上文程式碼,繼續編寫。
構造指數化分值矩陣,樣本歸一化,負對數損失函式。
y = np.random.randint(K,size= N)# y為樣本標籤
# np.random.randint和random.randint有不同,前者區間為前閉後開,後者區間為前閉後閉
# np.random.randint(K,size = K)第一個引數為區間[0,K),第二個引數為矩陣列數,即大小為N的向量
#指數化分治矩陣:使用以e為底的指數函式,將分值由實數對映為正實數。
exp_scores = np.exp(scores)
#樣本歸一化係數
exp_scores_sum = np.sum(exp_scores, axis=1)
# axis=1表示,對於N*K的矩陣,每一列不變,將每一行的數相加。
#樣本真實類別的歸一化分值
corect_probs = exp_scores[range(N),y]/exp_scores_sum
#負對數損失函式
corect_logprobs = -np.log(corect_probs)
梯度下降法
以f(x)= x^2/2 為例
alpha = 1 #二次項係數
epslon = 0.5 #學習率
iter_num = 100 #迴圈次數
x0 =1 #輸入值
def f(x):
return alpha*x**2/2
def df(x):
return alpha*x
def GD_update(x):
return x-epslon*df(x)
x = x0
for k in range(iter_num):
x = GD_update(x)
print(k,x,f(x),df(x))
正則化
正則化也是重要的概念,他能夠控制模型額學習容量,減弱過擬合的風險。
神經網路
三層神經網路程式碼
這裡採用ReLU啟用函式,原因如下:
1、sigmoid啟用函式在輸入比較大和負數的時候,函式值接近於1或者0,處於飽和狀態,梯度為0。梯度為0是很危險的,不能夠繼續進行有效的學習。而現在也很少使用sigmoid作為啟用函式了。
2、tanh啟用函式是sigmoid函式的放大平移,雖然也存在飽和區域,但是效果更好些。
程式碼中,dim1與dim2為超引數。這裡我們就要考慮到,引數數量越多,模型學習容量越大,越容易導致過擬合,這就需要正則化。通常正則化是權重引數的L2範數。
import numpy as np
D = 784 #28*28*1資料維度
K = 10 #類別數
N = 128 #樣本數量
dim1 = 128 #隱含層寬度
dim2 = 36
W1 = 0.01 * np.random.randn(D,dim1)
b1 = np.zeros((1,dim1))
W2 = 0.01*np.random.randn(dim1,dim2)
b2 = np.zeros((1,dim2))
W3 = 0.01*np.random.randn(dim2,K)
b3 = np.zeros((1,K))
X = np.random.randn(N,D)# 資料矩陣,每行一個樣本
hidden_layer1 = np.maximum(0,np.dot(X,W1)+b1)
#ReLU啟用函式啟用
hidden_layer2 = np.maximum(0,np.dot(hidden_layer1,W2)+b2)
#ReLU啟用函式啟用
scores = np.dot(hidden_layer2,W3)+b3
#輸出層不需要啟用函式
相關文章
- 卷積神經網路的原理及Python實現卷積神經網路Python
- 深度學習筆記------卷積神經網路深度學習筆記卷積神經網路
- 卷積神經網路學習筆記——SENet卷積神經網路筆記SENet
- 深度學習卷積神經網路筆記深度學習卷積神經網路筆記
- 吳恩達《卷積神經網路》課程筆記(1)– 卷積神經網路基礎吳恩達卷積神經網路筆記
- 利用Python實現卷積神經網路的視覺化Python卷積神經網路視覺化
- [譯] 使用 Python 和 Keras 實現卷積神經網路PythonKeras卷積神經網路
- 【python實現卷積神經網路】開始訓練Python卷積神經網路
- 卷積神經網路學習筆記——Siamese networks(孿生神經網路)卷積神經網路筆記
- TensorFlow上實現卷積神經網路CNN卷積神經網路CNN
- Keras上實現卷積神經網路CNNKeras卷積神經網路CNN
- 卷積神經網路卷積神經網路
- 圖卷積神經網路分類的pytorch實現卷積神經網路PyTorch
- 卷積神經網路概述卷積神經網路
- 解密卷積神經網路!解密卷積神經網路
- 5.2.1 卷積神經網路卷積神經網路
- 卷積神經網路CNN卷積神經網路CNN
- 卷積神經網路-AlexNet卷積神經網路
- 卷積神經網路-1卷積神經網路
- 卷積神經網路-2卷積神經網路
- 卷積神經網路-3卷積神經網路
- 【python實現卷積神經網路】卷積層Conv2D反向傳播過程Python卷積神經網路反向傳播
- 【Python】keras卷積神經網路識別mnistPythonKeras卷積神經網路
- 吳恩達《卷積神經網路》課程筆記(2)– 深度卷積模型:案例研究吳恩達卷積神經網路筆記模型
- 卷積神經網路四種卷積型別卷積神經網路型別
- 深度學習入門筆記(十八):卷積神經網路(一)深度學習筆記卷積神經網路
- 全卷積神經網路FCN卷積神經網路
- 深度剖析卷積神經網路卷積神經網路
- 9 大主題卷積神經網路(CNN)的 PyTorch 實現卷積神經網路CNNPyTorch
- 【深度學習篇】--神經網路中的卷積神經網路深度學習神經網路卷積
- TensorFlow實戰卷積神經網路之LeNet卷積神經網路
- 卷積神經網路鼻祖LeNet網路分析卷積神經網路
- 卷積神經網路中的Winograd快速卷積演算法卷積神經網路演算法
- 【Pytorch】基於卷積神經網路實現的面部表情識別PyTorch卷積神經網路
- CNN神經網路之卷積操作CNN神經網路卷積
- 卷積神經網路 part2卷積神經網路
- 14 卷積神經網路(進階)卷積神經網路
- 卷積神經網路(CNN)詳解卷積神經網路CNN