8、神經網路
'''
預測手寫數字
使用多類logistic迴歸不能形成更復雜的假設,因為它只是一個線性分類器。
神經網路可以實現非常複雜的非線性的模型。
利用已經訓練好了的權重進行預測。
'''
import numpy as np
from scipy.io import loadmat
# 載入權重資料
def load_weight(path):
data = loadmat(path)
return data['Theta1'], data['Theta2']
# 載入權重資料
theta1, theta2 = load_weight('data/ex3weights.mat')
# print(theta1.shape, theta2.shape) # (25, 401) (10, 26)
# 載入資料集
def load_data(path):
data = loadmat(path) # loadmat讀取mat檔案
# 這裡的資料為MATLAB的格式,所以要使用SciPy.io的loadmat函式
X = data['X']
y = data['y']
return X, y
# 載入資料集
X, y = load_data('data/ex3data1.mat')
y = y.flatten() # 轉為一維向量
X = np.insert(X, 0, values=np.ones(X.shape[0]), axis=1) # np.ones(n) 返回一個元素值全為1的n維向量
# print(X.shape, y.shape) # (5000, 401) (5000,)
# sigmoid函式
def sigmoid(z):
return 1 / (1 + np.exp(-z))
# 神經網路計算
a1 = X # 第一層神經元
z2 = a1 @ theta1.T
z2 = np.insert(z2, 0, 1, axis=1)
a2 = sigmoid(z2) # 第二層神經元
# print(a2.shape) # (5000, 26)
z3 = a2 @ theta2.T
a3 = sigmoid(z3) # 第三層神經元
# print(a3.shape) # (5000, 10)
# 計算準確率
y_pred = np.argmax(a3, axis=1) + 1 # 按行取最大值的索引值,加一是因為索引從0開始
# print(y_pred.shape) # (5000,)
accuracy = np.mean(y_pred == y)
print('accuracy={}%'.format(accuracy * 100)) # accuracy=97.52%
執行結果:
accuracy=97.52%
相關文章
- (四)卷積神經網路 -- 8 網路中的網路(NiN)卷積神經網路
- 神經網路:numpy實現神經網路框架神經網路框架
- 神經網路神經網路
- LSTM神經網路神經網路
- BP神經網路神經網路
- 模糊神經網路神經網路
- 聊聊從腦神經到神經網路神經網路
- 圖神經網路GNN 庫,液體神經網路LNN/LFM神經網路GNN
- MLer必知的8個神經網路架構神經網路架構
- 神經網路篇——從程式碼出發理解BP神經網路神經網路
- 【深度學習篇】--神經網路中的卷積神經網路深度學習神經網路卷積
- 【神經網路篇】--RNN遞迴神經網路初始與詳解神經網路RNN遞迴
- 卷積神經網路卷積神經網路
- 迴圈神經網路神經網路
- 人工神經網路(ANN)神經網路
- 生成型神經網路神經網路
- 機器學習整理(神經網路)機器學習神經網路
- 神經網路入門神經網路
- 使用深度神經網路為什麼8位足夠?神經網路
- 機器學習必知的8大神經網路架構機器學習神經網路架構
- 8-深度學習之神經網路核心原理與演算法-卷積神經網路深度學習神經網路演算法卷積
- 為什麼說BP神經網路就是人工神經網路的一種?神經網路
- 簡述脈衝神經網路SNN:下一代神經網路神經網路
- 5.2.1 卷積神經網路卷積神經網路
- 迴圈神經網路(RNN)神經網路RNN
- 神經網路初始化神經網路
- 白話深度神經網路神經網路
- 初識神經網路----一神經網路
- 淺析模糊神經網路神經網路
- 卷積神經網路概述卷積神經網路
- 解密卷積神經網路!解密卷積神經網路
- BP神經網路流程圖神經網路流程圖
- 迴圈神經網路 RNN神經網路RNN
- 圖神經網路入門神經網路
- 卷積神經網路CNN卷積神經網路CNN
- 圖神經網路知識神經網路
- keras構建神經網路Keras神經網路
- 卷積神經網路初探卷積神經網路