Dieser Artikel ist ein Lernmemo von Deep Learning von Grund auf neu.
--Aktivierungsfunktion: Es spielt eine Rolle bei der Bestimmung, wie die Summe der Eingangssignale aktiviert wird (zündet). In Perceptron wird eine "Schrittfunktion" verwendet, die den Ausgang an der Schwelle umschaltet, in einem neuronalen Netzwerk wird jedoch eine "Sigmoidfunktion" oder "ReLU-Funktion" verwendet, die eine glatte Kurve zeichnet. Die Aktivierungsfunktion der verborgenen Schicht wird durch h () dargestellt, und die Aktivierungsfunktion der Ausgangsschicht wird durch σ () dargestellt.
h(x) = \frac{1}{1+ \mathrm{e}^{-x}}
a = w_1x_1+w_2x_2+b
z = h(a)
py3:3layered_neuralnetwork.py.py
import numpy as np
import matplotlib.pyplot as plt
#Initialisierung von Gewicht und Bias
def init_network():
network = {}
#1. Schicht
network['W1'] = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]])
network['b1'] = np.array([0.1, 0.2, 0.3])
#2. Schicht
network['W2'] = np.array([[0.1, 0.4], [0.2, 0.5], [0.3, 0.6]])
network['b2'] = np.array([0.1, 0.2])
#3. Schicht
network['W3'] = np.array([[0.1, 0.3], [0.2, 0.4]])
network['b3'] = np.array([0.1, 0.2])
return network
#Eingabe → Ausgabe
def forward(network, x):
W1, W2, W3 = network['W1'], network['W2'], network['W3']
b1, b2, b3 = network['b1'], network['b2'], network['b3']
#1. Schicht
a1 = np.dot(x, W1) +b1 # A = XW +B
z1 = sigmoid(a1) # Z = h(A)
#2. Schicht
a2 = np.dot(z1, W2) +b2
z2 = sigmoid(a2)
#3. Schicht
a3 = np.dot(z2, W3) +b3
y = identity_function(a3) #Nur die letzte Schicht hat eine andere Aktivierungsfunktion
return y
#Sigmaid-Funktion(Aktivierungsfunktion)
def sigmoid(x):
return 1 / (1 + np.exp(-x))
#Gleiche Funktion(Aktivierungsfunktion)
def identity_function(x):
return x
#Überprüfen Sie den Vorgang unten
network = init_network()
x = np.array([1.0, 0.5])
y = forward(network, x)
print(y) # [0.31682708 0.69627909]
Recommended Posts