1. 程式人生 > >DeepLearning (四) 基於自編碼演算法與softmax迴歸的手寫數字識別

DeepLearning (四) 基於自編碼演算法與softmax迴歸的手寫數字識別

softmax 迴歸模型,是logistic 迴歸模型在多分類問題上的推廣。關於logistic迴歸演算法的介紹,前面部落格已經講得很清楚,詳情可以參考部落格

在logistic迴歸模型中,我們的激勵函式sigmoid的輸入為:
z=θ0x0+θ1x1+θ2x2+...+θnxn

則可以得到假設函式為:
hθ(x)=g(z)=11+eθTx

其中 g 為 sigmoid 函式。

因此,我們得到判斷,當 z 的值大於0, h 的值大於0.5,此時我們判斷 x 屬於正類(舉個例子),當 z 的值小於0.5 ,此時 h 的值小於0.5,我們判斷 x 屬於反類。

此時得到的代價函式為:

J(
θ)=1m[i=1my(i)loghθx(i)+(1y(i))log(1hθx(i))]

只要最小化代價函式 J 就能夠得到最優的模型引數 θ

對於二分類來說,我們只需要一組模型引數 θ 就可以對資料進行分類。

在多分類問題中,我們的 y(i) 值就不在只是0或者1,它可以是2,3,4等等,此時我們就得為每個模型都分配一組模型引數 θ1,θ2,...,θn ,假設現在依舊是2個分類,我們對假設函式改造一下:

hθ(x)=1eθT1x+eθT2x[eθT1xeθT2x]=[p1p2]

其中,θ1 代表分類1的模型引數, θ2 代表分類2的模型引數, 那麼此時我們的假設函式 h

得到的是 p1,p2,這是兩個大於0,小於1的值,分別代表當前輸入資料 x 屬於兩個分類的概率。依照最大似然演算法,我們選取概率最大的那個作為我們的分類結果。

這就是softmax迴歸的最簡單模式。

K個模型的softmax迴歸演算法

對於輸入訓練集 {(x(1),y(1)),...(x(m),y(m))} , 我們有類標籤 y(i){1,2,...,k} , 對於每個輸入資料 x ,我們都可以得到它屬於每個類別的概率 p(y=j|x) ,此時得到假設函式如下:
hθ(x(i))=p(y(i)=1|x(i);θ)p(y(i)=

相關推薦

DeepLearning () 基於編碼演算法softmax迴歸數字識別

softmax 迴歸模型,是logistic 迴歸模型在多分類問題上的推廣。關於logistic迴歸演算法的介紹,前面部落格已經講得很清楚,詳情可以參考部落格 在logistic迴歸模型中,我們的激勵函式sigmoid的輸入為: z=θ0x0+θ1x

機器學習實戰k近鄰演算法(kNN)應用之數字識別程式碼解讀

from numpy import * from os import listdir import operator import time #k-NN簡單實現函式 def classify0(inX,dataSet,labels,k): #求出樣本集的行數,也就是labels標籤的數目

【深度學習】基於Numpy實現的神經網路進行數字識別

直接先用前面設定的網路進行識別,即進行推理的過程,而先忽視學習的過程。 推理的過程其實就是前向傳播的過程。 深度學習也是分成兩步:學習 + 推理。學習就是訓練模型,更新引數;推理就是用學習到的引數來處理新的資料。 from keras.datasets.mnist impor

《機器學習實戰》第二章:k-近鄰演算法(3)數字識別

這是k-近鄰演算法的最後一個例子——手寫數字識別! 怎樣?是不是聽起來很高大上? 呵呵。然而這跟影象識別沒有半毛錢的關係 因為每個資料樣本並不是手寫數字的圖片,而是有由0和1組成的文字檔案,就像這樣:         嗯,這個資料集中的每一個樣本用圖形軟體處理過,變成了寬高

基於k近鄰(KNN)的數字識別

作者:faaronzheng 轉載請註明出處! 最近再看Machine Learning in Action. k近鄰演算法這一章節提供了不少例子,本著Talk is cheap的原則,我們用手寫數字識別來實際測試一下。 簡單的介紹一下k近鄰演算法(KNN):給定測試樣本

編碼演算法稀疏性

目前為止,我們已經討論了神經網路在有監督學習中的應用。在有監督學習中,訓練樣本是有類別標籤的。現在假設我們只有一個沒有帶類別標籤的訓練樣本集合 ,其中 。自編碼神經網路是一種無監督學習演算法,它使用了反向傳播演算法,並讓目標值等於輸入值,比如 。下圖是一個自編碼神經網路的示例。

[分享] Python實現的基於深度學習的數字識別演算法

本文將採用深度學習中的卷積神經網路來訓練手寫數字識別模型。使用卷積神經網路建立合理的模型結構,利用卷積層中設定一定數目的卷積核(即濾波器),通過訓練資料使模型學習到能夠反映出十個不同手寫提數字特徵的卷積核權值,最後通過全連線層使用softmax函式給出預測數字圖對應每種數字可能性的概率多少。 本文以學習基於

基於KNN分類演算法數字識別的實現(二)——構建KD樹

上一篇已經簡單粗暴的建立了一個KNN模型對手寫圖片進行了識別,所以本篇文章採用構造KD樹的方法實現手寫數字的識別。 (一)構造KD樹 構造KD樹的基本原理網上都有介紹,所以廢話不多說,直接上程式碼。 #Knn KD_Tree演算法 import math from

MFC基於對話框 數字識別 SVM+MNIST數據集

識別數字 做了 XML svm 簡單實用 清空 朋友 detail data 完整項目下載地址: http://download.csdn.net/detail/hi_dahaihai/9892004 本項目即拿MFC做了一個畫板,畫一個數字後可自行識別數字。此外還 有保存

【機器學習--opencv3.4.1版本基於Hog特徵描述子Svm對經典數字識別

 方向梯度直方圖(Histogram of Oriented Gradient, HOG)特徵是一種在計算機視覺和影象處理中用來進行物體檢測的特徵描述子。HOG特徵通過計算和統計影象區域性區域的梯度方向直方圖來構成特徵。 #include <iostream> #inc

TensorFlow神經網路(數字識別

內容來自mooc人工智慧實踐第五講 一、MNIST資料集一些用到的基礎函式語法 ############ warm up ! ############ # 匯入imput_data模組 from tensorflow.examples.tutorials.mnist import

基於Keras mnist數字識別---Keras卷積神經網路入門教程

目錄 1、一些說明 2、常量定義 3、工具函式 4、模型定義以及訓練 4.1、匯入庫 4.2、主入口 4.3、主函式 4.3.1、獲取訓練資料 4.3.1、定義模型 4.3.2

深度學習2--tensorflow--Softmax迴歸實現數字識別

使用Softmax迴歸來實現手寫數字識別,即給定一張手寫數字,判斷屬於0--9中哪一個數字。 1.LR邏輯迴歸 先準備一下LR邏輯迴歸: 廣義線性模型:實現x到y的非線性對映: 在LR邏輯迴歸中取g函式:實現0--1對映  輸出值為  預測結果為1的概率

機器學習--k-近鄰演算法(kNN)實現數字識別

這裡的手寫數字以0,1的形式儲存在文字檔案中,大小是32x32.目錄trainingDigits有1934個樣本。0-9每個數字大約有200個樣本,命名規則如下: 下劃線前的數字代表是樣本0-9的

基於Keras:數字識別

一、概述 手寫數字識別通常作為第一個深度學習在計算機視覺方面應用的示例,Mnist資料集在這當中也被廣泛採用,可用於進行訓練及模型效能測試; 模型的輸入: 32*32的手寫字型圖片,這些手寫字型包含0~9數字,也就是相當於10個類別的圖片 模型的輸出: 分類結果,0~

Tensorflow案例5:CNN演算法-Mnist數字識別

學習目標 目標 應用tf.nn.conv2d實現卷積計算 應用tf.nn.relu實現啟用函式計算 應用tf.nn.max_pool實現池化層的計算 應用卷積神經網路實現影象分類識別 應用

從零開始學caffe():mnist數字識別網路結構模型和超引數檔案的原始碼閱讀

下面為網路結構模型 %網路結構模型 name: "LeNet" #網路的名字"LeNet" layer { #定義一個層 name: "mnist" #層的名字"mnist" type:

機器學習實戰——KNN演算法數字識別

資料來源 我們的文字是形如這樣的,每個數字都有很多txt檔案,TXT裡面是01數字,表示手寫數字的灰度圖。 現在我們要用knn演算法實現數字識別。 資料處理 每個txt檔案都是32*32的0,1矩陣,如果要使用knn,那麼還得考慮行列關係,如果能把它拉開,只有一行,就可以不必考慮數字

K-近鄰演算法數字識別系統

定義將影象轉換為向量函式 # 匯入程式所需要的模組 import numpy as np import operator from os import listdir 讀取檔案 def img2vector(filename): returnVect = np.zero

基於opencv的數字識別(MFC,HOG,SVM)

因為本程式是提取HOG特徵,使用SVM進行分類的,所以大概瞭解下HOG的一些知識,其中我覺得怎麼計算影象HOG特徵的維度會對程式瞭解有幫助 關於HOG,我們可以參考: http://gz-ricky.blogbus.com/logs/85326