跳到主要內容

PythonAI-卷積神經網路CNN

卷積神經網路

(1) 介紹:
神經網路三大天王NN、CNN和RNN,本文章介紹卷積神經網路(Convolutional Neural Network,CNN),發明CNN目前為Facebook AI首席科學家被稱為CNN之父,CNN的發明把所有的圖型辨識的演算法幹掉,目前沒有可以比他更準確。當我們利用CNN來訓練辨識貓,CNN會自己找到它有關於貓的特徵,自己去識別.

enter image description here

(2)CNN運作方式
2.1 CNN運作架構
將貓咪像素圖作為輸入神經元,經過Convolution Layer和Pooling Layer擷取圖形特徵值與處理圖形
會先將貓咪圖片轉成一小格一小格的Filter,這些Filter是用來擷取貓身上的特徵值,

enter image description here

2.2 Convolution Layer卷積層
我們會將圖片輸入像素(Pixel)當作輸入的神經元,每個神經元會乘上相同的權重向量(Weight Array),向量的乘法是做內積,所以由圖片可以看到,將3X3的像素乘以3X3權重值:2*1+1*0+2*1+1*0+4*1+1*0+3*1+1*0+3*1=14.

卷積層計算方式-1

由左到右,上到下以3X3的區塊遞移計算,最後可以得到一個完整的特徵圖(Feature Map)
enter image description here

我們通常會使用多組Filters(6X6或8X8)去計算出Feature Map,這樣結果會得到原貓咪圖的資料量大很多,如何把這些圖簡化,後來使用一個方法稱為Pooling layer

enter image description here

2.3 Pooling Layer池化層
Pooling Layer層主要的目的是將Filter所得到的Feature Map做簡化,最常用的方法稱為Max-Pooling Layer,將Feature Map以2X2的區塊投票選出最大的值,表示為該區域的特徵值

enter image description here

參考

  1. 第5.1講: 卷積神經網絡介紹(Convolutional Neural Network)

留言

  1. In this fashion my colleague Wesley Virgin's biography starts in this shocking and controversial video.

    As a matter of fact, Wesley was in the military-and shortly after leaving-he found hidden, "mind control" tactics that the government and others used to get whatever they want.

    These are the EXACT same secrets tons of famous people (especially those who "became famous out of nothing") and elite business people used to become rich and famous.

    You've heard that you use only 10% of your brain.

    That's because the majority of your BRAINPOWER is UNCONSCIOUS.

    Maybe that thought has even occurred INSIDE OF YOUR very own head... as it did in my good friend Wesley Virgin's head seven years back, while driving an unregistered, garbage bucket of a car with a suspended driver's license and on his banking card.

    "I'm very frustrated with living check to check! Why can't I become successful?"

    You've taken part in those types of thoughts, ain't it right?

    Your own success story is waiting to be written. All you have to do is in YOURSELF.

    Learn How To Become A MILLIONAIRE Fast

    回覆刪除

張貼留言

這個網誌中的熱門文章

JavaBean 和POJO

前言 今天介紹JavaBean和POJO的不同,這兩個名詞在JAVA文章常常被拿來使用以及討論。在JDK1.1時候釋出才有的一個標準架構,很多時候常常被搞混,所以我們特別開闢一章來加以討論。POJO規範在企業級應用已經廣大的被使用的規範。 解釋 POJO : 全名為Plain-old-Java-object,只需要繼承Object就可以,沒有特定規定,只要建立的類別有setter/getter方法都可以稱為POJO JavaBean: JavaBean通常用來封裝多個物件成為單獨物件使用,規範比較嚴格,規則如下 規則 說明 1 需要實作序列(Serializable/Externalizable) 2 不能有參數的建構子( no-arg constructor) 3 需要有公用setter/getter 4 屬性必須要私人(private) 5 屬於特定POJO規則 比較 所有的JavaBean都為POJO,但是所有的POJO不一定為JavaBean 都可以當作重複元件 都必須序列化 特性都為可用性、易用性和持久化使用 - 應用 由圖我們可以知道POJO在應用程式中,主要用來存取資料庫資料達到持久化的目的,並提供給商業邏輯流程處理使用。這種POJO的架構提供程式人員開發時的可以很有規則將資料封裝並加以使用。 範例1. JavaBean(以員工為實例) JavaBean建立員工物件,可以發現Employee物件建構子沒有任何參數,屬性為私有化並setter/getter的命名方式。 //實作序列化 public class Employee implements java.io.Serializable{ private int id; private String name; //無參數建構子 public Employee(){} //以下實作setter/getter public void setId(int id){this.id=id;} public int getId(){return id;} public void setName(String ...

Python AI-問題集

Python AI-問題集 問題集 Jupyter Notebook執行ipywidgets會出現kernel死掉的錯誤發生(The kernel appears to have died) 解決方法 (1) 根據log檔來判斷問題: 例如:log訊息出現OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized. (2) 根據問題關鍵字找出問題所在: 利用google查詢所遭遇到的問題,例如我把上面的問題上google查詢可以找到這篇的解法 https://blog.csdn.net/bingjianIT/article/details/86182096 (3)實作解法: 我實作下面解法後,就可以順利執行手寫辨識的程式. //在Python宣告時加入 import os os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE" 參考 https://blog.csdn.net/bingjianIT/article/details/86182096

GSON 進階教學

GSON進階教學 完成 基礎教學 後,本章節教你如何處理在非正常情況下,如何完成反序列與序列動作。 泛型轉換 序列化與反序列化時,客製化輸入出JOSN字串@SerializedName 忽略物件屬性輸出@Expose 泛型轉換 泛型做Json序列/反序列時,比較麻煩地方是泛型在運行期間相關的參數就會被抹除所以無法知道原來的類別。我們建立一個播放器(Play)類別,它為泛型的類型,它可撥放MP3、CD等等,所以建立一個CD媒介(CD)類別。Play使用類型為泛型T, 物件 屬性 播放器 Play 類型 type CD媒介 CD 歌 songs /**' * 播放器 * @param */ public class Play { T type ; public Play(T t){ this.type = t; } @Override public String toString() { return this.type.toString(); } } /** * CD 音樂物件 */ public class CD { private List songs ; public CD(String ...songs){ this.songs = new ArrayList() ; for(String song : songs){ this.songs.add(song) ; } } @Override public String toString() { StringBuilder sb = new StringBuilder() ; sb.append(""); for(String s:songs){ sb.append(""+s+",\r\n"); } sb.append("")...