好的,所以似乎這裏的問題似乎更符合「我如何神經網絡」的概念,我可以概述這裏的基本過程,試圖鞏固您的想法,但實際上,實施它你去你自己。我個人認爲專有語言(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個節點,每個字母一個,但可以添加更多隱藏層以改善模型。你會假設你的模型預測的字母將是最大權重標題中的最後一個節點。
在你開始運行之後,你想要訓練它,因爲你可能只是隨機播種你的權重,感。這裏有很多不同的方法,但我通常會概述反向傳播,這是一種非常常見的訓練神經網絡的方法。這個想法本質上是,因爲你知道圖像應該被識別哪個字符,所以你將結果與你的模型實際預測的結果進行比較。如果你的模型準確地預測了角色你很好,你可以保持原樣,因爲它工作。如果你預測了一個不正確的字符,你想通過你的神經網絡返回,並增加從你送入的像素節點到應該被預測的字符的結尾節點的權值。您還應該減少導致不正確返回的字符的權重。
希望有幫助,讓我知道你是否還有其他問題。
你能澄清你的問題嗎?我不確定你在這個過程中遇到什麼困難。你能否也發佈一些代碼?一般來說,如果沒有對其工作原理的直觀理解,實施ml方法只會以淚結束。你有一個概念上的問題,或者你的代碼中存在一個錯誤? – 2013-04-22 02:03:53
因爲我已經爲它實現了GUI,所以發佈我的代碼會有點困難。當我開發這個程序時,我意識到我可能會考慮這個錯誤。我在整個過程中遇到問題。我什麼時候能看到網絡是否可以識別我給它的任何輸入?這是我的理解,我訓練網絡的字母A到Z,然後我提交一個邏輯陣列的任何字母或字母從圖像處理使用bwlabel。我的希望是從網絡得到回覆,說明我的信件是否被識別。 – roldy 2013-04-22 02:41:01