Errata

Neuronale Netze selbst programmieren

Errata for Neuronale Netze selbst programmieren, Second Edition

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date submitted
O'Reilly learning platform Page Kapitel 1, Einen einfachen Klassifizierer trainieren
Abbildung 1-17: Trainingsdaten mit der anfänglichen Trennungslinie

I figure 1-17 there is a typographical error in the formula for the separation line. The current formula reads 'y = (0.25) y', while the correct formula should be 'y = (0.25) x'.

Wolfgang Kaufmann  Nov 05, 2024 
Printed Page S. 101; S. 144
Abb. 1-91; Abb. 2-26

Aus meiner Sicht ist die Matrixformel für die Gewichtsaktualisierungen in den genannten beiden Abbildungen falsch dargestellt:
\Delta w_{ij} = \alpha * E_k * sigmoid(O_k) * (1-sigmoid(O_k)) \dot O_j^T

Korrekte Form:
\Delta w_{ij} = \alpha * E_k * O_k * (1-O_k) \dot O_j^T

Indizien:
S. 101, Absatz unter Abb. 1-91: "Die Sigmoidfunktionen sind verschwunden, weil sie einfach die Ausgaben der Knoten O_k sind."

S. 99: Bei der Herleitung der o.g. Formel wird darauf hingewiesen, dass "der Summenausdruck innerhalb der sigmoid()-Funktion [...] das Signal in den Knoten der letzten Schicht [ist], den wir I_k hätten nennen können, um den Ausdruck nochmals zu vereinfachen".
Statt I_k hätte ich hier allerdings den Buchstaben X_k erwartet analog zur Formel auf S. 69 oben. Das würde zu folgender Form führen (äquivalent zur oben vorgeschlagenen korrekten Form):
\Delta w_{ij} = \alpha * E_k * sigmoid(X_k) * (1-sigmoid(X_k)) \dot O_j^T

S. 146: In der Python-Implementierung finden sich die zur oben vorgeschlagenen korrekten Form äquivalenten Anweisungen:
hidden_outputs = self.activation_function(hidden_inputs)
# [...]
self.who += self.lr * numpy.dot((output_errors * final_outputs * (1.0 - final_outputs)), numpy.transpose(hidden_outputs))

(Hier: hidden_outputs = O_J, final_outputs = O_k)

Anonymous  Mar 04, 2025 
Printed Page 83
image 1-73 at the top

the image 1-73 is supposed to show a transposition of the matrix shown in 1-72 but it doesn't.

Anonymous  Nov 05, 2025 
Printed Page 101
figure 1-90

Hello, maybe within the matrices in figure 1-90 there are some expressions missing for w1,1 and (1-S1) in the first row of the matrices. w1,1 should also be equipped with a delta at the beginning and (1-S1) should be E1*S1*(1-S1)?
Kind regards

Eomer  May 15, 2025