Projekt 5
Odtwarzanie
charakterystyki statycznej przy wykorzystaniu sieci neuronowych
4. Przykłady
W przykładzie wykorzystano sieć neuronową typu Sequencial z biblioteki Keras.
Do wygenerowania danych uczących wykorzystano generator CV (przebieg trójkątny) oraz pracę regulatora w trybie sterowania ręcznego. W taki sposób można zebrać możliwie szybko dane to odtworzenia charakterystyki statycznej.

Do testów wykorzystano dane wygenerowane dla przebiegu SP z generatora dla skokowych zmian w całym zakresie pracy. Tryb pracy regulatora ustawiono na automatyczny.


Na rysunku poniżej widać, że zależność \( F_3=f(L_3) \) ma charakter statyczny, nieloniowy.

Do modelowania wybrano sieć typu Sequential z biblioteki Keras. Wybrano bardzo prostą strukturę sieci, z jedną warstwą ukrytą i funkcjami aktywacji w postaci tanh oraz optymalizatorem Adam. Wykorzystano normalizację sygnałów wejściowych.
# Narmalizacja
normalizer = tf.keras.layers.Normalization(axis=-1)
normalizer.adapt(np.array(train_features))
# Warstwa wejść i konstrukcja modelu
input_layer = keras.layers.Input(train_features.shape[1:])
model = keras.Sequential([
input_layer,
layers.Dense(2, activation='tanh'),
layers.Dense(1)
])
# Kompilacja modelu
model.compile(loss='mean_absolute_error',
optimizer=tf.keras.optimizers.Adam(0.02))
# Proce uczenia
history = model.fit(
train_features,
train_labels,
epochs=20,
validation_split = 0.2)
# Predykcja
y = model_saved.predict(test_features)
Na rysunku poniżej widać ocenę jakości predykcji wartości L3 dokonywanej przez sieć. Pomimo bardzo prostej struktury i krótkiego procesu uczenia uzyskano dobre wyniki. Charakterystyka statyczna odtwarzana jest w zasadzie bezbłędnie.

F3 na danych testowych