DeepLearning (四) 基於自編碼演算法與softmax迴歸的手寫數字識別
softmax 迴歸模型,是logistic 迴歸模型在多分類問題上的推廣。關於logistic迴歸演算法的介紹,前面部落格已經講得很清楚,詳情可以參考部落格
在logistic迴歸模型中,我們的激勵函式sigmoid的輸入為:
則可以得到假設函式為:
其中 g 為 sigmoid 函式。
因此,我們得到判斷,當
此時得到的代價函式為:
只要最小化代價函式
對於二分類來說,我們只需要一組模型引數
在多分類問題中,我們的
其中,
這就是softmax迴歸的最簡單模式。
K個模型的softmax迴歸演算法
對於輸入訓練集
softmax 迴歸模型,是logistic 迴歸模型在多分類問題上的推廣。關於logistic迴歸演算法的介紹,前面部落格已經講得很清楚,詳情可以參考部落格
在logistic迴歸模型中,我們的激勵函式sigmoid的輸入為:
z=θ0x0+θ1x from numpy import *
from os import listdir
import operator
import time
#k-NN簡單實現函式
def classify0(inX,dataSet,labels,k):
#求出樣本集的行數,也就是labels標籤的數目
直接先用前面設定的網路進行識別,即進行推理的過程,而先忽視學習的過程。
推理的過程其實就是前向傳播的過程。
深度學習也是分成兩步:學習 + 推理。學習就是訓練模型,更新引數;推理就是用學習到的引數來處理新的資料。
from keras.datasets.mnist impor
這是k-近鄰演算法的最後一個例子——手寫數字識別!
怎樣?是不是聽起來很高大上?
呵呵。然而這跟影象識別沒有半毛錢的關係
因為每個資料樣本並不是手寫數字的圖片,而是有由0和1組成的文字檔案,就像這樣:
嗯,這個資料集中的每一個樣本用圖形軟體處理過,變成了寬高
作者:faaronzheng 轉載請註明出處!
最近再看Machine
Learning in Action. k近鄰演算法這一章節提供了不少例子,本著Talk is cheap的原則,我們用手寫數字識別來實際測試一下。 簡單的介紹一下k近鄰演算法(KNN):給定測試樣本
目前為止,我們已經討論了神經網路在有監督學習中的應用。在有監督學習中,訓練樣本是有類別標籤的。現在假設我們只有一個沒有帶類別標籤的訓練樣本集合 ,其中 。自編碼神經網路是一種無監督學習演算法,它使用了反向傳播演算法,並讓目標值等於輸入值,比如 。下圖是一個自編碼神經網路的示例。
本文將採用深度學習中的卷積神經網路來訓練手寫數字識別模型。使用卷積神經網路建立合理的模型結構,利用卷積層中設定一定數目的卷積核(即濾波器),通過訓練資料使模型學習到能夠反映出十個不同手寫提數字特徵的卷積核權值,最後通過全連線層使用softmax函式給出預測數字圖對應每種數字可能性的概率多少。
本文以學習基於
上一篇已經簡單粗暴的建立了一個KNN模型對手寫圖片進行了識別,所以本篇文章採用構造KD樹的方法實現手寫數字的識別。
(一)構造KD樹
構造KD樹的基本原理網上都有介紹,所以廢話不多說,直接上程式碼。
#Knn KD_Tree演算法
import math
from 識別數字 做了 XML svm 簡單實用 清空 朋友 detail data 完整項目下載地址:
http://download.csdn.net/detail/hi_dahaihai/9892004
本項目即拿MFC做了一個畫板,畫一個數字後可自行識別數字。此外還 有保存
方向梯度直方圖(Histogram of Oriented Gradient, HOG)特徵是一種在計算機視覺和影象處理中用來進行物體檢測的特徵描述子。HOG特徵通過計算和統計影象區域性區域的梯度方向直方圖來構成特徵。
#include <iostream>
#inc
內容來自mooc人工智慧實踐第五講
一、MNIST資料集一些用到的基礎函式語法
############ warm up ! ############
# 匯入imput_data模組
from tensorflow.examples.tutorials.mnist import
目錄
1、一些說明
2、常量定義
3、工具函式
4、模型定義以及訓練
4.1、匯入庫
4.2、主入口
4.3、主函式
4.3.1、獲取訓練資料
4.3.1、定義模型
4.3.2
使用Softmax迴歸來實現手寫數字識別,即給定一張手寫數字,判斷屬於0--9中哪一個數字。
1.LR邏輯迴歸
先準備一下LR邏輯迴歸:
廣義線性模型:實現x到y的非線性對映:
在LR邏輯迴歸中取g函式:實現0--1對映 輸出值為 預測結果為1的概率
這裡的手寫數字以0,1的形式儲存在文字檔案中,大小是32x32.目錄trainingDigits有1934個樣本。0-9每個數字大約有200個樣本,命名規則如下:
下劃線前的數字代表是樣本0-9的
一、概述
手寫數字識別通常作為第一個深度學習在計算機視覺方面應用的示例,Mnist資料集在這當中也被廣泛採用,可用於進行訓練及模型效能測試;
模型的輸入: 32*32的手寫字型圖片,這些手寫字型包含0~9數字,也就是相當於10個類別的圖片
模型的輸出: 分類結果,0~
學習目標
目標
應用tf.nn.conv2d實現卷積計算
應用tf.nn.relu實現啟用函式計算
應用tf.nn.max_pool實現池化層的計算
應用卷積神經網路實現影象分類識別
應用
下面為網路結構模型
%網路結構模型
name: "LeNet" #網路的名字"LeNet"
layer { #定義一個層
name: "mnist" #層的名字"mnist"
type:
資料來源
我們的文字是形如這樣的,每個數字都有很多txt檔案,TXT裡面是01數字,表示手寫數字的灰度圖。
現在我們要用knn演算法實現數字識別。
資料處理
每個txt檔案都是32*32的0,1矩陣,如果要使用knn,那麼還得考慮行列關係,如果能把它拉開,只有一行,就可以不必考慮數字
定義將影象轉換為向量函式
# 匯入程式所需要的模組
import numpy as np
import operator
from os import listdir
讀取檔案
def img2vector(filename):
returnVect = np.zero
因為本程式是提取HOG特徵,使用SVM進行分類的,所以大概瞭解下HOG的一些知識,其中我覺得怎麼計算影象HOG特徵的維度會對程式瞭解有幫助
關於HOG,我們可以參考:
http://gz-ricky.blogbus.com/logs/85326
相關推薦
DeepLearning (四) 基於自編碼演算法與softmax迴歸的手寫數字識別
機器學習實戰k近鄰演算法(kNN)應用之手寫數字識別程式碼解讀
【深度學習】基於Numpy實現的神經網路進行手寫數字識別
《機器學習實戰》第二章:k-近鄰演算法(3)手寫數字識別
基於k近鄰(KNN)的手寫數字識別
自編碼演算法與稀疏性
[分享] Python實現的基於深度學習的手寫數字識別演算法
基於KNN分類演算法手寫數字識別的實現(二)——構建KD樹
MFC基於對話框 手寫數字識別 SVM+MNIST數據集
【機器學習--opencv3.4.1版本基於Hog特徵描述子Svm對經典手寫數字識別】
TensorFlow神經網路(四)手寫數字識別
基於Keras mnist手寫數字識別---Keras卷積神經網路入門教程
深度學習2--tensorflow--Softmax迴歸實現手寫數字識別
機器學習--k-近鄰演算法(kNN)實現手寫數字識別
基於Keras:手寫數字識別
Tensorflow案例5:CNN演算法-Mnist手寫數字識別
從零開始學caffe(四):mnist手寫數字識別網路結構模型和超引數檔案的原始碼閱讀
機器學習實戰——KNN演算法手寫數字識別
K-近鄰演算法之手寫數字識別系統
基於opencv的手寫數字識別(MFC,HOG,SVM)