Představme si, že chceme naučit neuronovou síť řešit XOR problém. XOR je logická operace, která má následující pravdivostní tabulku:
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
Postup:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np
model = Sequential()
model.add(Dense(2, input_dim=2, activation='relu')) # skrytá vrstva s 2 neurony a ReLU aktivační funkcí
model.add(Dense(1, activation='sigmoid')) # výstupní vrstva s 1 neuronem a sigmoid aktivační funkcí
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Vstupní data
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=float)
# Očekávané výstupy
Y = np.array([0, 1, 1, 0], dtype=float)
model.fit(X, Y, epochs=500, verbose=0) # Počet epoch tréninku: 500
print(model.predict(X).round())
V tomto příkladě jsme vytvořili jednoduchou neuronovou síť s jednou skrytou vrstvou, která řeší XOR problém. Neuronová síť má 2 neurony ve skryté vrstvě s ReLU aktivační funkcí a 1 neuron výstupní vrstvy s sigmoid aktivační funkcí. Pro trénink neuronové sítě jsme použili dataset obsahující čtyři vzory pro všechny možné kombinace vstupních hodnot. Poté, co jsme neuronovou síť natrénovali, jsme ji otestovali na vstupních datech a zkontrolovali, zda správně předpovídá výstupy pro XOR problém.
Pokud chcete otestovat funkčnost kódu, budete muset nainstalovat knihovnu TensorFlow do vašeho prostředí Pythonu. Jestliže používáte Jupyter Notebook, můžete následovat tyto kroky:
Pokud ještě nemáte nainstalovaný TensorFlow, můžete jej nainstalovat přímo z Jupyter Notebooku spuštěním následujícího příkazu v nové buňce:
!pip install tensorflow
Pokud pracujete v jiném prostředí (jako je PyCharm, Atom, atd.), měl by postup být podobný, ale instalace TensorFlowu může vyžadovat použití příkazové řádky nebo konzole daného prostředí.
Výsledkem bude natrénovaná neuronová síť, která je schopna řešit XOR problém. Poslední buňka v notebooku by měla vytisknout předpovědi modelu na tréninkové data, které by měly odpovídat očekávaným výstupům XOR problému ([0, 1, 1, 0]). Výsledek může být mírně odlišný v závislosti na náhodné inicializaci modelu a jeho tréninkového procesu, takže pokud nevidíte očekávaný výsledek, zkuste model znovu natrénovat.
A zde je již ukázka celého programu včetně výstupu ve vývojovém prostředí PyCharm: