Hopfield hálózat vagy írjon magát FineReader Intel® szoftver

Először, meg kell határozni, hogy mekkora neuron. az
Biológia neuron - egy speciális sejt teszi ki az idegrendszerre. Biológiai neuron szerkezete az 1. ábrán látható.

Hopfield hálózat vagy írjon magát FineReader Intel® szoftver

1. ábra reakcióvázlat a neuron

A neurális hálózat lehet bevinni, az idegsejtek és összefüggéseket. Következésképpen annak érdekében, hogy meghatározzuk egy mesterséges (nem-biológiai) neurális hálózat, hogy:

  • Kérdezze meg a hálózati architektúra;
  • Határozza meg a dinamikája az egyes hálózati elemek - neuronok;
  • Határozzuk meg a szabályokat, amelyek a neuronok kölcsönhatásban vannak egymással;
  • Ismertesse a tanuló algoritmus, azaz a kötések kialakítása, hogy megoldja a problémát.

Mivel az építészet, a neurális hálózatot Hopfield hálózatot használunk. Ez a modell úgy tűnik, hogy a leggyakoribb matematikai modellek utalnak. Ez annak köszönhető, hogy az egyszerűség és érthetőség. Hopfield hálózat mutatja, hogy a memória lehet elhelyezni egy hálózati elem, ami nem túl megbízható. Kísérleti adatok azt mutatják, hogy a hibás termékek száma neuronok 50% a valószínűsége, hogy a helyes válasz nagyon közel 100%. Még egy felületes összehasonlítása a neurális hálózat (például az agyba) és Neumann számítógép mutatja, hogy mennyi a különbség a tárgyak: például a módosítások gyakorisága államok neuronok ( „órajel frekvenciája”) kisebb, mint 200 Hz, míg a frekvencia állapotában bekövetkező változásokat a modern processzorok elérheti több GHz (10 9 Hz).

A hivatalos leírást a Hopfield hálózat

A hálózat N mesterséges neuronok, az axonok minden neuron kapcsolódik a dendritek a másik idegsejt, amely egy visszajelzést. A hálózati architektúra ábrán látható. 2.

Hopfield hálózat vagy írjon magát FineReader Intel® szoftver

2. ábra Az architektúra a neurális hálózat a Hopfield

Minden neuron lehet az egyik államban 2:

Egyenletek (1), (2), (3), (5) elegendő, hogy meghatározzuk a mesterséges neurális hálózat a Hopfield és folytathatja annak végrehajtására.

Végrehajtása Hopfield neurális hálózat, a fentiekben meghatározott kerül sor a nyelv a C ++. Kezdeni, akkor meg kell határozni további adattípusok (lásd. 1. listát)

  • írja súlyozási együtthatót (választott float típus);
  • Írja állapotának leírásakor a neuron (saját bevezetése típusú transzfer van kiválasztva);
  • típusú, amely leírja a hálózati állapot t időpontban (kiválasztva szabványos konténer vektor);
  • típusú, amely leírja egy mátrixot súlyozási együtthatók neuronális kapcsolatok (kiválasztott tartályt vektor vektor konténerek).


1. lista definiálása az új típusú

hálózati képzés, vagy, pontosabban, a számítás a mátrix elemeinek szerinti (3) készül LearnNeuroNet funkciót. fogadó bemenete egy lista a képzés és visszaadja egy objektum típusú link_koefs_t. Az értékek kiszámítása csak az alsó háromszög elemek. Az értékek a felső elemek megfelelően kiszámított expressziós (4). Általános nézet LearnNeuroNet eljárás látható a 2. lista.

2. lista A képzés a neurális hálózat

Frissítése neuron államok által megvalósított funktorhoz neuro_net_system. A túlterhelt üzemeltető funktora át a kezdeti állapotát funktorhoz át a kezdeti állapot. van bemeneti felismerhető módon (szerinti (5)) - mutató egy objektum típusú neurons_line.

funktorhoz üzemeltető módosítja továbbított neurons_line típusú objektumot, hogy az állam a neurális hálózat egy időben. Az érték nem mereven rögzített és határozza meg a kifejezést:

azaz amikor az állam minden egyes neuron nem változott 1 „stroke”.

Kiszámítani a (2) 2 STL algoritmust alkalmazva:

  • inner_product számítási összegét termékek a súlyozási együtthatók és neuron állapotok (azaz, számítása (2), hogy specifikus);
  • átalakítani, hogy kiszámítja az új értékeket az egyes neuron (azaz a fenti pontos számítását minden egyes lehetséges)

Funktorhoz neurons_net forráskód a 3. listában.

3. lista funktorhoz munka végrehajtásáért a neurális hálózat

Megjelenik a konzol bemeneti és kimeneti kép létrehozásához típusú neurons_line_print_descriptor. amely tárolja utalás a képformátumot és a méret (szélesség és magasság a téglalap, ami bele van írva a képen). Az ilyen típusú felülírás üzemben <<. Исходный код типа neurons_line_print_descriptor и оператора вывода в поток показан в листинге 4.

4. lista A képzés a neurális hálózat

Annak ellenőrzésére, a végrehajtás a teljesítmény, a neurális hálózat képezte 2 kulcs képek:

3. ábra Key képek

A bemeneti táplált torzított képeket. A neurális hálózat, hogy pontosan felismerje az eredeti képeket. Torzult kép és felismeri a képeket a 4. ábrán látható, az 5.

4. ábra Pattern Recognition 1

5. ábra képfelismerés 2

A program futtatása történik a parancssorból varrás típusa: AppName WIDTH HEIGHT SOURCE_FILE [LEARNE_FILE_N]. ahol:

  • AppNaame - a neve a végrehajtható fájl;
  • Szélességét. Magasság - szélessége és magassága a téglalapot, ahol illeszkedik a kimeneti és a legfontosabb kép;
  • SOURCE_FILE - forrás fájlt az eredeti módon;
  • [LEARNE_FILE_N] - egy vagy több fájl klyuchyvymi képek (szóközzel elválasztva).

További információ a lehetőségek fordító optimalizáció, tekintse meg optimalizálási közlemény.