2013-04-22 139 views
0

我正在使用神經網絡進行字符識別(以及後來的指紋識別)。我對事件的順序感到困惑。我正在用26個字母訓練網絡。後來我會增加這26個乾淨的信件和26個嘈雜的信件。如果我想識別一個字母說「A」,那麼做到這一點的正確方法是什麼?這是我現在正在做的事情。與MATLAB中的神經網絡混淆

1)使用26x100矩陣訓練網絡;每行包含一個來自bmp(10x10)分段的字母。 2)但是,對於測試目標,我使用「A」的輸入矩陣。我在第一行之後有25行零,以便我的輸入矩陣與我的目標矩陣具有相同的大小。 3)我運行perform(net,testTargets,輸出),其中輸出是來自26x100矩陣訓練的網絡的輸出。 testTargets是「A」的矩陣。

雖然這似乎不正確。訓練是否單獨承認任何角色?我想要發生的事情如下。

1)爲我選擇的圖像文件(在將圖像處理爲邏輯數組後)訓練網絡。

2)使用此訓練網絡識別不同圖像文件中的字母。

因此,訓練網絡以識別A到Z.然後選擇圖像,運行網絡以查看從所選圖像中識別出哪些字母。

+0

你能澄清你的問題嗎?我不確定你在這個過程中遇到什麼困難。你能否也發佈一些代碼?一般來說,如果沒有對其工作原理的直觀理解,實施ml方法只會以淚結束。你有一個概念上的問題,或者你的代碼中存在一個錯誤? – 2013-04-22 02:03:53

+0

因爲我已經爲它實現了GUI,所以發佈我的代碼會有點困難。當我開發這個程序時,我意識到我可能會考慮這個錯誤。我在整個過程中遇到問題。我什麼時候能看到網絡是否可以識別我給它的任何輸入?這是我的理解,我訓練網絡的字母A到Z,然後我提交一個邏輯陣列的任何字母或字母從圖像處理使用bwlabel。我的希望是從網絡得到回覆,說明我的信件是否被識別。 – roldy 2013-04-22 02:41:01

回答

0

好的,所以似乎這裏的問題似乎更符合「我如何神經網絡」的概念,我可以概述這裏的基本過程,試圖鞏固您的想法,但實際上,實施它你去你自己。我個人認爲專有語言(MATLAB)是一種令人憎惡的東西,但我總是欣賞知識分子的熱情。

神經網絡的基本概念是,你有一系列層次的權重連接它們的節點(取決於你想做什麼,你可以將每個節點連接到上面和下面的層,或連接每個節點或其中的任何地方)。每個節點都有一個「工作函數」或概率函數,表示給定節點或神經元將評估爲「開」或1的機會。一般工作流程始於任何頂層神經元/節點把它們初始化爲你的數據值(在你的情況下,你可能會開始每個這些關閉,因爲圖像中的像素值,歸一化爲二進制將是最簡單的)。這些節點中的每一個然後將乘以一個權重並向下反饋給第二層,根據總和(幾何或算術和,取決於您的實現)將被視爲「隱藏層」,這將與工作函數來確定隱藏層的狀態。

最後一點是有點理論性,很難遵循,所以這裏是一個例子。假設你的第一行有三個節點([1,0,1]),並且將這三個節點連接到第二層的第一個節點的權重類似於([0.5, 2.0, 0.6])。如果你正在做的算術和這意味着,如果您使用的是邏輯功能的功函數(一個非常普遍的在你的「隱藏層」的第一個節點上的權重將

1*0.5 + 0*2.0 + 1*0.6 = 1.1

選擇,雖然tanh也很常見),這會使該節點評估的機會約爲75%。

您可能希望最終圖層有26個節點,每個字母一個,但可以添加更多隱藏層以改善模型。你會假設你的模型預測的字母將是最大權重標題中的最後一個節點。

在你開始運行之後,你想要訓練它,因爲你可能只是隨機播種你的權重,感。這裏有很多不同的方法,但我通常會概述反向傳播,這是一種非常常見的訓練神經網絡的方法。這個想法本質上是,因爲你知道圖像應該被識別哪個字符,所以你將結果與你的模型實際預測的結果進行比較。如果你的模型準確地預測了角色你很好,你可以保持原樣,因爲它工作。如果你預測了一個不正確的字符,你想通過你的神經網絡返回,並增加從你送入的像素節點到應該被預測的字符的結尾節點的權值。您還應該減少導致不正確返回的字符的權重。

希望有幫助,讓我知道你是否還有其他問題。

+0

我想我的問題是爲什麼我們要用目標和我們想要認識的東西來訓練網絡。我的理解是,我們希望僅僅基於目標「構建」一個完美的網絡,獲得該網絡的權重,然後提交我們的圖像以獲得認可,並查看結果是什麼。我只是不明白爲什麼我們在訓練過程中使用我們的圖像。 – roldy 2013-04-22 04:41:18

+0

等一下,你不明白你爲什麼要訓練網絡?或者你對監督式和非監督式培訓方法的區別感到困惑嗎?你訓練網絡的原因是因爲隨機權重沒有意義。對於您所做的任何標識,權重也完全相同。這是神經網絡的一個重點。最好還應該有不同的訓練和測試組合。在一組圖像上訓練網絡,並在另一組圖像上進行測試。 – 2013-04-22 06:48:13

+0

我正在跟隨MATLAB生成的代碼。我明白爲什麼我們要訓練網絡。我會張貼生成的代碼明天的片段。 – roldy 2013-04-22 07:23:44