timaschew / jANN

API for creating and using artificial neural network in java
2 stars 4 forks source link

TopologyPanel and TrainControlPanel #38

Closed timaschew closed 13 years ago

timaschew commented 13 years ago

Wir brauchen doch schon das TrainControlPanel (ich hatte ja gesagt, wir brauchen es erstmal nicht, hatte mich geirrt: wir werden die Step Funktion nur erstmal weglassen, den rest brauchen wir)

Also bei dem TopologiPanel fehlt ja noch der Button "Netz erstellen". Wenn man da draufdrückt, soll ein Network erstellt werden. Dies kann über die Klasse NetConfig erzeugt werden, dort gibt man die Parameter an wieviel Input, Hidden, ... es gibt. DIese Werte stehen dann ja in der SidebarModel Klasse.

Nachdem alle Parameter gesetzt sind muss finalyzeStructure aufgerufen werden.

Wenn im TrainControlPanel auf den Button Play drückt, sollen die Werte wie Lernreate etc. über die NetConfig gesetzt werden. Die Parameter kannst in dem Backpropagation Klasse setzen, darüber kommst du von der NetConfig mit der Methode: getTrainingModule() dran. Und an die NetConfig kommst du über die Session, also Settings.getCurrentSession.getNetConfig()

Falls einige Methoden fehlen, füg sie einfach selber hinzu!

SofiaD commented 13 years ago

Ich habe geguckt, aber mit dem hin und her bin ich gerade verwirrt. Also in Netconfig habe ich keine Methode gefunden wo man ein Netz erstellen kann, die entsprechende Methode habe ich in Networkfactory gefunden createSimpleNetwork(input, output...) Soll die erstellung wieder über den actioncontroller erfolgen? Ich frage, weil, wenn es nach mir ging würde ich alles in einer klasse schreiebn, aber ich möchte nicht, dass du noch mal rumkopieren musst tut mir leid, wenn ich dich nerve :-)

timaschew commented 13 years ago

Ha du hast recht, das Net wird in der Factory erstellt, nicht in der NetConfig. Ja mach das bitte über den ActionController. Du brauchst ja nur einen Inner Class ActionListener an den Button zu hängen und dort die ac.doAction(Actions.CREATE_NET, evt) aufzurufen

Der ActionController ist genau dafür da, damit wir zentral die Action in einer Klasse alle haben und nicht über mehrere Klassen verteilt sind. Genau wie das I18n Zeug.

SofiaD commented 13 years ago

sag mal ist es so gewollt, dass die createSimpleNet-Methode ein (int input,int hidden[], int output, boolean bias) diese Parameter braucht? So wie wir es jetzt haben, ist (int, Map<int, int>, int, Map<int, boolean). Was erwartest du in int [] hidden genau? und in boolean bias, welchen Bias meinst du?

timaschew commented 13 years ago

Also die createSimpleNet macht nur ein sehr einfaches Netz. Wieso klickst du dich nicht mal durch den Code und schaust was da gemacht wird?

Wie du vielleicht erkennst, wird nur ein boolean paramter für bias benutzt. weil der sowohl für input als auch ür alle hidden gilt. Das gleich gilt für int[] hidden, schau in den quellcode ! das ist ein array, das beschreibt wieviele neuronen es gibt in den hidden layern also {2,3,1} bedeutet 1. hiddenlayer hat 2 neuronne, der 2. hiddenlayer hat 3 neuronen und der dritte hidden layer hat ein neuron.

Die parameter aus dem model passen natürlich nicht mit der Map. Das war vllt bisschen schlect gewählt bei mir. Bau das mal um als List (ArrayList) das kann man dann in ein primitives array konvertieren mit ArrayUtils.toPrimitive(array)

Du kommst wahrschienlcih nicht drumherum neue Methoden in der NetworkFactory zu schreiben, damit das alles passt.