Snipe-Version 0.9 erschienen

In dieser neuen Version wurde die interne Datenstruktur von Snipe flexibel erweiterbar gemacht und das Lernverfahren Resilient Propagation wurde generalüberholt (:!: dies bringt eine Interfaceänderung mit sich). Download wie immer unter der zugehörigen Unterseite.

Genauere Beschreibung

  • Dynamische Synapse Shadows wurden eingefügt. Die Datenstruktur wurde – ohne dabei langsamer zu werden, keine Sorge – verallgemeinert. Was ist ein dynamischer Synapse-Shadow? ;-) Ganz einfach. In der Dokumentation wird ja eine spezielle, relativ flotte Datenstruktur für die Synapsen der Neuronalen Netze beschrieben. Ein Synapse Shadow stellt nun für jede Synapse ein „Schattendatenfeld“ zur Verfügung, in dem ein Double speicherbar ist. Das ist sehr praktisch für Daten, die „pro Synapse“ gespeichert werden müssen, wie z.B. bei Resilient Propagation die Lernraten. Solche Shadows kann man einem Netz nun automatisch in beliebiger Anzahl hinzufügen und wieder abrufen. Nachdem wir nun wissen, was ein Shadow ist – warum heißen die Shadows zusätzlich dynamisch? Die Shadows profitieren von der internen Speicherstruktur der Datenstruktur, und wenn sich das Netz in seiner Struktur ändert (z.B. wenn ein Neuron entfernt wird), werden die Shadows automatisch mitgeändert. Im Moment habe ich nur verschiedene Operatoren für die Synapse Shadows hinzugefügt, ohne sie groß zu kommentieren. Diese werden allerdings die Basis für eine saubere Vererbungs-Policy entwerfen zu können sein, die ich mutmaßlich zum nächsten Release entwerfe.
  • :!:Resilient Backpropagation wurde generalüberholt. Achtung: Dieses Update sorgt in der Methode com.dkriesel.snipe.core.NeuralNetwork.trainResilientBackpropagation für eine Interface-Änderung! Großes Dankeschön für das Generalüberholen geht an Martin Westhoven. Der hat nicht nur einen Bugfix gelöst, der ResilientBackpropagation daran hindern konnte, zu lernen (andere Komponenten waren nicht betroffen), sondern noch zusätzlich eine weitere Rprop-Verbesserung implementiert, die auf Wunsch zuschaltbar ist (siehe Dokumentation hierfür). Weiter wurde Rprop umgebaut, um die Shadows zu nutzen.
  • Diverse Klassen sind nun serialisierbar.

Viel Spaß damit!

Comments

xyz
|
2012/06/11 22:42

Hallo,

wieso ist das Coding zu snipe nicht öffentlich verfügbar? Vielleicht habe ich auch etwas übersehen?

Es gibt übrigens auch Decompiler mit dem das Coding aus dem Bytecode extrahierbar ist…

David Kriesel
|
2012/06/12 11:23

Hi,

weil ich es noch nicht auf einem Entwicklungsstand sehe, um es im Source zu veröffentlichen. Dass es Decompiler gibt ist mir schon bewusst ;-)

xyz
|
2012/06/15 22:11

An das Coding komme ich mit jd-gui (http://java.decompiler.free.fr/) ohne Probleme. Die Veröffentlichung des Coding kann nur die Qualität verbessern, da dann Fehler eher entdeckt und ausgebessert werden können.

David Kriesel
|
2012/06/18 18:03

Wow, du warst im ersten Semester im Programmiergrundkurs anwesend, hast verstanden, was ein Decompiler ist, und dass es sowas auch für Java gibt! m( Danke für diese Berichterstattung.

Mehr steht nämlich wirklich nicht drin: Ich bin mir, wie viele andere Informatiker (und insbesondere die Zielgruppe dieser Webseite), über die Vorteile des Opensourcegedankens im Klaren. Noch viel klarer ist, dass jeder sich irgendein JAR aus dem Netz ziehen und durch einen Decompiler jagen kann, oh wow! Darum habe ich es auch nicht nötig, deinen Link oben wegzustreichen.

Das ändert aber nichts daran, dass ich völlig frei bin zu zu entscheiden, was ich wie mit meiner Arbeit mache, und damit auch, ob und in welcher Form ich den Code online stelle. Wenn ich das gar nicht, oder auch in Rosa und Mintgrün machen wollen würde, wäre das auch in Ordnung. Ich stelle ihn also online, wenn ich das schön finde (und den Code schön genug dafür finde). So einfach ist das.

Das enthält den Leuten auch kein Wissen vor, da ich die Datenstrukturen ohnehin in der Dokumentation skizziere.

Mirko Kunze
|
2012/06/18 18:09

Vielleicht könntest du dann wenigstens eine Dokumentation zum dekompilierten Code schreiben? Das würde die Arbeit damit auch vereinfachen 8-)

Adrian Zilske
|
2012/06/20 03:36

Ich finde SNIPE als 'Einstiegstool' auf jeden Fall sehr hilfreich. Würde ich mich über gut dokumentierten Quelltext freuen? Sicherlich. Kann ich verstehen, wenn jemand diesen nicht erstellen will, sondern seine Zeit (erstmal?) anders verbringt? Natürlich.

Mir hilft auf jedem Fall auch ohne offenen Code die Lektüre des Scripts und das 'herumspielen' mit Snipe bei meiner Masterarbeit durchaus nicht unerheblich (wenn auch leider Convolution Neural Networks (noch?) nicht behandelt werden *freundlich mit einem Zaunpfahl wink*).

David Kriesel
|
2012/06/20 09:03

Das stimmt, CNNs sind nicht enthalten :-) ich muss mal gucken, wie ich die flott auf die Datenstruktur abbilde und ob und wenn ja wann ich das mache … Danke auf jeden Fall für den Wink, rechne aber jetzt nicht so bald damit, ist grad viel zu tun :-)




SEYMJ
Recent changes RSS feed Creative Commons License Donate Minima Template by Wikidesign Driven by DokuWiki