Ich arbeite gerade an einer Frage aus dem Online-Buch:
http://neuralnetworksanddeeplearning.com/chap1.html
Ich kann verstehen, dass, wenn die zusätzliche Ausgangsschicht aus 5 Ausgangsneuronen besteht, ich wahrscheinlich eine Vorspannung von 0,5 und ein Gewicht von jeweils 0,5 für die vorherige Schicht festlegen könnte. Die Frage lautet nun aber: Eine neue Schicht von vier Ausgangsneuronen - das ist mehr als genug, um 10 mögliche Ausgänge bei darzustellen .
Kann mich jemand durch die Schritte führen, die erforderlich sind, um dieses Problem zu verstehen und zu lösen?
Die Übungsfrage:
Es gibt eine Möglichkeit, die bitweise Darstellung einer Ziffer zu bestimmen, indem dem darüber liegenden dreischichtigen Netzwerk eine zusätzliche Schicht hinzugefügt wird. Die zusätzliche Ebene konvertiert die Ausgabe der vorherigen Ebene in eine binäre Darstellung, wie in der folgenden Abbildung dargestellt. Suchen Sie eine Reihe von Gewichten und Vorurteilen für die neue Ausgabeebene. Angenommen, die ersten drei Schichten von Neuronen sind so beschaffen, dass die Aktivierung der korrekten Ausgabe in der dritten Schicht (dh der alten Ausgabeschicht) mindestens 0,99 beträgt und die Aktivierung der falschen Ausgaben weniger als 0,01 beträgt.
quelle
sigmoid((0 * 10) * 1)
0,5. Indem Sie entsprechend große Zahlen auswählen, stellen Sie entweder eine sehr hohe oder niedrige Ausgabe vor dem Sigmoid sicher, die dann sehr nahe an 0 oder 1 ausgegeben wird. Dies ist eine robustere IMO als die in FullStacks Antwort angenommene lineare Ausgabe, ignoriert dies jedoch im Wesentlichen unsere Zwei Antworten sind gleich.Der folgende Code von SaturnAPI beantwortet diese Frage. Den Code finden Sie unter https://saturnapi.com/artitw/neural-network-decimal-digits-to-binary-bitwise-conversion
quelle
eye(10,10)
?Pythonischer Beweis für die obige Übung:
quelle
Eine kleine Änderung an der Antwort von FullStack bezüglich Neil Slaters Kommentaren mit Octave:
quelle