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.

Dane uczące do odtworzenia charakterystyki wypływu ze zbiornika 3
Dane uczące do odtworzenia charakterystyki wypływu ze zbiornika 3
Dane uczące do odtworzenia charakterystyki wypływu ze zbiornika 3

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.

Dane testowe
Dane testowe
Dane testowe

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

Charakterystyka statyczna F2(L3)
Charakterystyka statyczna F2(L3)

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.

Listing: Normalizacja i konfiguracja modelu sieci neuronowych

# 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))
    
Listing: Wywołanie procedury uczenia sieci neuronowej

# Proce uczenia
history = model.fit(
    train_features,
    train_labels,
    epochs=20,
    validation_split = 0.2)
    
Listing: Predykcja wartości wyjść sieci

# 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.

Predykcja sygnału F3 na danych testowych
Predykcja sygnału F3 na danych testowych
Rzeczywista i odtworzona charakterystyka statyczna F2(L3)
Rzeczywista i odtworzona charakterystyka statyczna \( F_2(L_3) \)