###############################################################################
# The Institute for the Design of Advanced Energy Systems Integrated Platform
# Framework (IDAES IP) was produced under the DOE Institute for the
# Design of Advanced Energy Systems (IDAES).
#
# Copyright (c) 2018-2023 by the software owners: The Regents of the
# University of California, through Lawrence Berkeley National Laboratory,
# National Technology & Engineering Solutions of Sandia, LLC, Carnegie Mellon
# University, West Virginia University Research Corporation, et al.
# All rights reserved.  Please see the files COPYRIGHT.md and LICENSE.md
# for full copyright and license information.
###############################################################################

Supercritical CO2 Property Surrogate with OMLT Surrogate Object - Training Surrogate (Part 1)#

Maintainer: Javal Vyas

Author: Javal Vyas

Updated: 2024-01-24

1. Introduction#

This notebook illustrates the use of KerasSurrogate API leveraging TensorFlow Keras and OMLT package to produce an ML surrogate based on supercritical CO2 data from simulation using REFPROP package.

There are several reasons to build surrogate models for complex processes, even when higher fidelity models already exist (e.g., reduce model size, improve convergence reliability, replace models with externally compiled code and make them fully-equation oriented).

In this example, we intend to make a surrogate for the physical properties of S-CO2 to be embedded in the property package. This property package will be used to get the physical properties of S-CO2 in the flowsheet simulation. To learn more about property package, see the IDAES-PSE Github Page or IDAES Read-the-docs.

1.1 Need for ML Surrogates#

The properties predicted by the surrogate are enthalpy and entropy of the S-CO2 based on the pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebric, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebric equation.

1.2 Supercritical CO2 cycle process#

The following flowsheet will be used to optimize the design for the cooling of the fusion reactor using supercritical CO2 cycle. We shall focus on training the surrogate for this notebook and move to constructing the flowsheet and the properties package in the subsequent notebooks. The take away from this flowsheet is that, 3 variables can be measured in any given unit which are flow, pressure and temperature and other properties can be calculated using them. Thus, surrogate should have pressure and temperature as the inputs.

In this example, we will train a tanh model from our data and then demonstrate that we can solve an optimization problem with that surrogate model.

from IPython.display import Image
from pathlib import Path


def datafile_path(name):
    return Path("..") / name


Image(datafile_path("CO2_flowsheet.png"))
../../../../_images/d8050a37171e8e1c8ef9b92bd7f8a6b2f52abfff04d2faffafe235388ba5adee.png

2. Training and Validating Surrogate#

First, let’s import the required Python and IDAES modules:

# Import statements
import os
import numpy as np
import pandas as pd
import random as rn
import tensorflow as tf
import tensorflow.keras as keras

# Import IDAES libraries
from idaes.core.surrogate.sampling.data_utils import split_training_validation
from idaes.core.surrogate.sampling.scaling import OffsetScaler
from idaes.core.surrogate.keras_surrogate import KerasSurrogate
from idaes.core.surrogate.plotting.sm_plotter import (
    surrogate_scatter2D,
    surrogate_parity,
    surrogate_residual,
)

# fix environment variables to ensure consist neural network training
os.environ["PYTHONHASHSEED"] = "0"
os.environ["CUDA_VISIBLE_DEVICES"] = ""
np.random.seed(46)
rn.seed(1342)
tf.random.set_seed(62)
2024-03-18 23:16:57.389698: I tensorflow/tsl/cuda/cudart_stub.cc:28] Could not find cuda drivers on your machine, GPU will not be used.
2024-03-18 23:16:57.438183: I tensorflow/tsl/cuda/cudart_stub.cc:28] Could not find cuda drivers on your machine, GPU will not be used.
2024-03-18 23:16:57.439101: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 AVX512F FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2024-03-18 23:16:58.326851: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT

2.1 Importing Training and Validation Datasets#

In this section, we read the dataset from the CSV file located in this directory. 500 data points were simulated for S-CO2 physical properties using REFPROP package. This example is trained on the entire dataset because neural network can overfit on smaller dataset. The data is separated using an 80/20 split into training and validation data using the IDAES split_training_validation() method.

We rename the column headers because they contained “.”, which may cause errors while reading the column names in subsquent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are pressure, temperature , while the output variables are enth_mol, entr_mol, hence we create two new dataframes for the input and output variables.

# Import training data
np.set_printoptions(precision=6, suppress=True)

csv_data = pd.read_csv(datafile_path("500_Points_DataSet.csv"))
csv_data.columns.values[0:6] =["pressure", "temperature","enth_mol","entr_mol","CO2_enthalpy","CO2_entropy"]
data = csv_data.sample(n=500)

# Creating input_data and output_data from data
input_data = data.iloc[:, :2]
output_data = data.iloc[:,2:4]

# Define labels, and split training and validation data
input_labels = input_data.columns
output_labels =  output_data.columns 

n_data = data[input_labels[0]].size
data_training, data_validation = split_training_validation(
    data, 0.8, seed=n_data
)

2.2 Training Surrogate with TensorFlow Keras#

TensorFlow Keras provides an interface to pass regression settings, build neural networks and train surrogate models. Keras enables the usage of two API formats: Sequential and Functional. While the Functional API offers more versatility, including multiple input and output layers in a single neural network, the Sequential API is more stable and user-friendly. Further, the Sequential API integrates cleanly with existing IDAES surrogate tools and will be utilized in this example.

In the code below, we build the neural network structure based on our training data structure and desired regression settings. Offline, neural network models were trained for the list of settings below, and the options bolded and italicized were determined to have the minimum mean squared error for the dataset:

  • Activation function: sigmoid, tanh

  • Optimizer: Adam

  • Number of hidden layers: 3, 4, 5, 6

  • Number of neurons per layer: 20, 40, 60

Important thing to note here is that we do not use ReLU activation function for the training as the flowsheet we intend to solve with this surrogate model is a NLP problem and using ReLU activation function will make it an MINLP. Another thing to note here is the network is smaller (4,20) in order to avoid overfitting.

Typically, Sequential Keras models are built vertically; the dataset is scaled and normalized. The network is defined for the input layer, hidden layers, and output layer for the passed activation functions and network/layer sizes. Then, the model is compiled using the passed optimizer and trained using a desired number of epochs. Keras internally validates while training and updates each epoch’s model weight (coefficient) values.

Finally, after training the model, we save the results and model expressions to a folder that contains a serialized JSON file. Serializing the model in this fashion enables importing a previously trained set of surrogate models into external flowsheets. This feature will be used later.

import matplotlib.pyplot as plt

# selected settings for regression (best fit from options above)
activation, optimizer, n_hidden_layers, n_nodes_per_layer = "tanh", "Adam", 4, 20
loss, metrics = "mse", ["mae", "mse"]

# Create data objects for training using scalar normalization
n_inputs = len(input_labels)
n_outputs = len(output_labels)
x = input_data
y = output_data

input_scaler = None
output_scaler = None
input_scaler = OffsetScaler.create_normalizing_scaler(x)
output_scaler = OffsetScaler.create_normalizing_scaler(y)
x = input_scaler.scale(x)
y = output_scaler.scale(y)
x = x.to_numpy()
y = y.to_numpy()

# Create Keras Sequential object and build neural network
model = tf.keras.Sequential()
model.add(
    tf.keras.layers.Dense(
        units=n_nodes_per_layer, input_dim=n_inputs, activation=activation
    )
)
for i in range(1, n_hidden_layers):
    model.add(tf.keras.layers.Dense(units=n_nodes_per_layer, activation=activation))
model.add(tf.keras.layers.Dense(units=n_outputs,activation=keras.activations.linear))

# Train surrogate (calls optimizer on neural network and solves for weights)
model.compile(loss=loss, optimizer=optimizer, metrics=metrics)
mcp_save = tf.keras.callbacks.ModelCheckpoint(
    ".mdl_co2.h5", save_best_only=True, monitor="val_loss", mode="min"
)
history = model.fit(x=x, y=y, validation_split=0.2, verbose=2, epochs=250, callbacks=[mcp_save])

# Get the training and validation MSE from the history
train_mse = history.history['mse']
val_mse = history.history['val_mse']

# Generate a plot of training MSE vs validation MSE
epochs = range(1, len(train_mse) + 1)
plt.plot(epochs, train_mse, 'bo-', label='Training MSE')
plt.plot(epochs, val_mse, 'ro-', label='Validation MSE')
plt.title('Training MSE vs Validation MSE')
plt.xlabel('Epochs')
plt.ylabel('MSE')
plt.legend()
plt.show()
Epoch 1/250
13/13 - 1s - loss: 0.0188 - mae: 0.0963 - mse: 0.0188 - val_loss: 0.0043 - val_mae: 0.0456 - val_mse: 0.0043 - 1s/epoch - 78ms/step
Epoch 2/250
13/13 - 0s - loss: 0.0032 - mae: 0.0424 - mse: 0.0032 - val_loss: 0.0032 - val_mae: 0.0446 - val_mse: 0.0032 - 57ms/epoch - 4ms/step
Epoch 3/250
13/13 - 0s - loss: 0.0023 - mae: 0.0383 - mse: 0.0023 - val_loss: 0.0019 - val_mae: 0.0352 - val_mse: 0.0019 - 56ms/epoch - 4ms/step
Epoch 4/250
13/13 - 0s - loss: 0.0016 - mae: 0.0299 - mse: 0.0016 - val_loss: 0.0014 - val_mae: 0.0277 - val_mse: 0.0014 - 56ms/epoch - 4ms/step
/home/docs/checkouts/readthedocs.org/user_builds/idaes-examples/envs/latest/lib/python3.8/site-packages/keras/src/engine/training.py:3000: UserWarning: You are saving your model as an HDF5 file via `model.save()`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')`.
  saving_api.save_model(
Epoch 5/250
13/13 - 0s - loss: 0.0015 - mae: 0.0278 - mse: 0.0015 - val_loss: 0.0015 - val_mae: 0.0294 - val_mse: 0.0015 - 56ms/epoch - 4ms/step
Epoch 6/250
13/13 - 0s - loss: 0.0013 - mae: 0.0277 - mse: 0.0013 - val_loss: 0.0013 - val_mae: 0.0281 - val_mse: 0.0013 - 55ms/epoch - 4ms/step
Epoch 7/250
13/13 - 0s - loss: 0.0012 - mae: 0.0264 - mse: 0.0012 - val_loss: 0.0011 - val_mae: 0.0265 - val_mse: 0.0011 - 55ms/epoch - 4ms/step
Epoch 8/250
13/13 - 0s - loss: 0.0012 - mae: 0.0261 - mse: 0.0012 - val_loss: 0.0011 - val_mae: 0.0256 - val_mse: 0.0011 - 56ms/epoch - 4ms/step
Epoch 9/250
13/13 - 0s - loss: 0.0011 - mae: 0.0246 - mse: 0.0011 - val_loss: 0.0011 - val_mae: 0.0248 - val_mse: 0.0011 - 56ms/epoch - 4ms/step
Epoch 10/250
13/13 - 0s - loss: 0.0011 - mae: 0.0262 - mse: 0.0011 - val_loss: 0.0010 - val_mae: 0.0256 - val_mse: 0.0010 - 70ms/epoch - 5ms/step
Epoch 11/250
13/13 - 0s - loss: 0.0010 - mae: 0.0243 - mse: 0.0010 - val_loss: 9.2558e-04 - val_mae: 0.0237 - val_mse: 9.2558e-04 - 73ms/epoch - 6ms/step
Epoch 12/250
13/13 - 0s - loss: 9.5997e-04 - mae: 0.0235 - mse: 9.5997e-04 - val_loss: 9.1248e-04 - val_mae: 0.0227 - val_mse: 9.1248e-04 - 55ms/epoch - 4ms/step
Epoch 13/250
13/13 - 0s - loss: 9.2440e-04 - mae: 0.0222 - mse: 9.2440e-04 - val_loss: 8.8580e-04 - val_mae: 0.0233 - val_mse: 8.8580e-04 - 56ms/epoch - 4ms/step
Epoch 14/250
13/13 - 0s - loss: 9.1128e-04 - mae: 0.0232 - mse: 9.1128e-04 - val_loss: 9.1357e-04 - val_mae: 0.0235 - val_mse: 9.1357e-04 - 39ms/epoch - 3ms/step
Epoch 15/250
13/13 - 0s - loss: 8.9781e-04 - mae: 0.0227 - mse: 8.9781e-04 - val_loss: 8.5792e-04 - val_mae: 0.0227 - val_mse: 8.5792e-04 - 71ms/epoch - 5ms/step
Epoch 16/250
13/13 - 0s - loss: 8.4960e-04 - mae: 0.0225 - mse: 8.4960e-04 - val_loss: 8.1350e-04 - val_mae: 0.0224 - val_mse: 8.1350e-04 - 56ms/epoch - 4ms/step
Epoch 17/250
13/13 - 0s - loss: 8.9626e-04 - mae: 0.0222 - mse: 8.9626e-04 - val_loss: 7.5260e-04 - val_mae: 0.0212 - val_mse: 7.5260e-04 - 57ms/epoch - 4ms/step
Epoch 18/250
13/13 - 0s - loss: 8.4027e-04 - mae: 0.0226 - mse: 8.4027e-04 - val_loss: 8.2619e-04 - val_mae: 0.0224 - val_mse: 8.2619e-04 - 39ms/epoch - 3ms/step
Epoch 19/250
13/13 - 0s - loss: 8.0283e-04 - mae: 0.0214 - mse: 8.0283e-04 - val_loss: 8.0335e-04 - val_mae: 0.0220 - val_mse: 8.0335e-04 - 38ms/epoch - 3ms/step
Epoch 20/250
13/13 - 0s - loss: 8.0113e-04 - mae: 0.0220 - mse: 8.0113e-04 - val_loss: 7.8560e-04 - val_mae: 0.0218 - val_mse: 7.8560e-04 - 37ms/epoch - 3ms/step
Epoch 21/250
13/13 - 0s - loss: 7.6917e-04 - mae: 0.0212 - mse: 7.6917e-04 - val_loss: 7.3536e-04 - val_mae: 0.0209 - val_mse: 7.3536e-04 - 55ms/epoch - 4ms/step
Epoch 22/250
13/13 - 0s - loss: 7.5576e-04 - mae: 0.0214 - mse: 7.5576e-04 - val_loss: 6.9543e-04 - val_mae: 0.0205 - val_mse: 6.9543e-04 - 55ms/epoch - 4ms/step
Epoch 23/250
13/13 - 0s - loss: 7.7255e-04 - mae: 0.0214 - mse: 7.7255e-04 - val_loss: 8.2266e-04 - val_mae: 0.0224 - val_mse: 8.2266e-04 - 39ms/epoch - 3ms/step
Epoch 24/250
13/13 - 0s - loss: 7.6791e-04 - mae: 0.0218 - mse: 7.6791e-04 - val_loss: 7.8518e-04 - val_mae: 0.0219 - val_mse: 7.8518e-04 - 39ms/epoch - 3ms/step
Epoch 25/250
13/13 - 0s - loss: 7.0922e-04 - mae: 0.0207 - mse: 7.0922e-04 - val_loss: 6.7947e-04 - val_mae: 0.0202 - val_mse: 6.7947e-04 - 71ms/epoch - 5ms/step
Epoch 26/250
13/13 - 0s - loss: 7.2592e-04 - mae: 0.0213 - mse: 7.2592e-04 - val_loss: 8.1154e-04 - val_mae: 0.0221 - val_mse: 8.1154e-04 - 39ms/epoch - 3ms/step
Epoch 27/250
13/13 - 0s - loss: 7.2796e-04 - mae: 0.0206 - mse: 7.2796e-04 - val_loss: 6.6514e-04 - val_mae: 0.0204 - val_mse: 6.6514e-04 - 71ms/epoch - 5ms/step
Epoch 28/250
13/13 - 0s - loss: 7.0480e-04 - mae: 0.0210 - mse: 7.0480e-04 - val_loss: 6.5905e-04 - val_mae: 0.0201 - val_mse: 6.5905e-04 - 73ms/epoch - 6ms/step
Epoch 29/250
13/13 - 0s - loss: 7.5475e-04 - mae: 0.0214 - mse: 7.5475e-04 - val_loss: 8.6202e-04 - val_mae: 0.0231 - val_mse: 8.6202e-04 - 55ms/epoch - 4ms/step
Epoch 30/250
13/13 - 0s - loss: 7.1157e-04 - mae: 0.0209 - mse: 7.1157e-04 - val_loss: 6.5643e-04 - val_mae: 0.0201 - val_mse: 6.5643e-04 - 73ms/epoch - 6ms/step
Epoch 31/250
13/13 - 0s - loss: 6.7830e-04 - mae: 0.0205 - mse: 6.7830e-04 - val_loss: 6.5345e-04 - val_mae: 0.0202 - val_mse: 6.5345e-04 - 71ms/epoch - 5ms/step
Epoch 32/250
13/13 - 0s - loss: 7.3917e-04 - mae: 0.0214 - mse: 7.3917e-04 - val_loss: 6.8767e-04 - val_mae: 0.0200 - val_mse: 6.8767e-04 - 40ms/epoch - 3ms/step
Epoch 33/250
13/13 - 0s - loss: 6.7551e-04 - mae: 0.0199 - mse: 6.7551e-04 - val_loss: 6.8259e-04 - val_mae: 0.0208 - val_mse: 6.8259e-04 - 55ms/epoch - 4ms/step
Epoch 34/250
13/13 - 0s - loss: 7.2058e-04 - mae: 0.0217 - mse: 7.2058e-04 - val_loss: 9.3194e-04 - val_mae: 0.0235 - val_mse: 9.3194e-04 - 38ms/epoch - 3ms/step
Epoch 35/250
13/13 - 0s - loss: 6.9832e-04 - mae: 0.0197 - mse: 6.9832e-04 - val_loss: 8.0461e-04 - val_mae: 0.0224 - val_mse: 8.0461e-04 - 38ms/epoch - 3ms/step
Epoch 36/250
13/13 - 0s - loss: 6.9579e-04 - mae: 0.0206 - mse: 6.9579e-04 - val_loss: 6.6133e-04 - val_mae: 0.0199 - val_mse: 6.6133e-04 - 53ms/epoch - 4ms/step
Epoch 37/250
13/13 - 0s - loss: 6.8947e-04 - mae: 0.0205 - mse: 6.8947e-04 - val_loss: 6.5451e-04 - val_mae: 0.0201 - val_mse: 6.5451e-04 - 54ms/epoch - 4ms/step
Epoch 38/250
13/13 - 0s - loss: 7.5213e-04 - mae: 0.0216 - mse: 7.5213e-04 - val_loss: 7.0569e-04 - val_mae: 0.0211 - val_mse: 7.0569e-04 - 54ms/epoch - 4ms/step
Epoch 39/250
13/13 - 0s - loss: 7.0449e-04 - mae: 0.0210 - mse: 7.0449e-04 - val_loss: 7.8929e-04 - val_mae: 0.0218 - val_mse: 7.8929e-04 - 53ms/epoch - 4ms/step
Epoch 40/250
13/13 - 0s - loss: 6.9465e-04 - mae: 0.0206 - mse: 6.9465e-04 - val_loss: 5.9849e-04 - val_mae: 0.0190 - val_mse: 5.9849e-04 - 72ms/epoch - 6ms/step
Epoch 41/250
13/13 - 0s - loss: 6.7256e-04 - mae: 0.0199 - mse: 6.7256e-04 - val_loss: 6.0397e-04 - val_mae: 0.0193 - val_mse: 6.0397e-04 - 55ms/epoch - 4ms/step
Epoch 42/250
13/13 - 0s - loss: 6.5540e-04 - mae: 0.0204 - mse: 6.5540e-04 - val_loss: 7.1924e-04 - val_mae: 0.0210 - val_mse: 7.1924e-04 - 53ms/epoch - 4ms/step
Epoch 43/250
13/13 - 0s - loss: 6.3972e-04 - mae: 0.0197 - mse: 6.3972e-04 - val_loss: 6.0452e-04 - val_mae: 0.0193 - val_mse: 6.0452e-04 - 38ms/epoch - 3ms/step
Epoch 44/250
13/13 - 0s - loss: 6.3808e-04 - mae: 0.0198 - mse: 6.3808e-04 - val_loss: 6.5779e-04 - val_mae: 0.0200 - val_mse: 6.5779e-04 - 53ms/epoch - 4ms/step
Epoch 45/250
13/13 - 0s - loss: 6.4120e-04 - mae: 0.0202 - mse: 6.4120e-04 - val_loss: 7.5032e-04 - val_mae: 0.0211 - val_mse: 7.5032e-04 - 38ms/epoch - 3ms/step
Epoch 46/250
13/13 - 0s - loss: 7.0527e-04 - mae: 0.0203 - mse: 7.0527e-04 - val_loss: 6.2620e-04 - val_mae: 0.0201 - val_mse: 6.2620e-04 - 53ms/epoch - 4ms/step
Epoch 47/250
13/13 - 0s - loss: 6.3542e-04 - mae: 0.0198 - mse: 6.3542e-04 - val_loss: 5.8546e-04 - val_mae: 0.0187 - val_mse: 5.8546e-04 - 72ms/epoch - 6ms/step
Epoch 48/250
13/13 - 0s - loss: 6.9146e-04 - mae: 0.0208 - mse: 6.9146e-04 - val_loss: 6.6286e-04 - val_mae: 0.0202 - val_mse: 6.6286e-04 - 54ms/epoch - 4ms/step
Epoch 49/250
13/13 - 0s - loss: 7.4305e-04 - mae: 0.0211 - mse: 7.4305e-04 - val_loss: 7.4612e-04 - val_mae: 0.0217 - val_mse: 7.4612e-04 - 54ms/epoch - 4ms/step
Epoch 50/250
13/13 - 0s - loss: 6.8340e-04 - mae: 0.0206 - mse: 6.8340e-04 - val_loss: 6.8777e-04 - val_mae: 0.0196 - val_mse: 6.8777e-04 - 54ms/epoch - 4ms/step
Epoch 51/250
13/13 - 0s - loss: 6.5283e-04 - mae: 0.0196 - mse: 6.5283e-04 - val_loss: 6.0459e-04 - val_mae: 0.0195 - val_mse: 6.0459e-04 - 38ms/epoch - 3ms/step
Epoch 52/250
13/13 - 0s - loss: 6.0418e-04 - mae: 0.0196 - mse: 6.0418e-04 - val_loss: 5.7305e-04 - val_mae: 0.0180 - val_mse: 5.7305e-04 - 69ms/epoch - 5ms/step
Epoch 53/250
13/13 - 0s - loss: 6.0884e-04 - mae: 0.0189 - mse: 6.0884e-04 - val_loss: 6.4579e-04 - val_mae: 0.0202 - val_mse: 6.4579e-04 - 39ms/epoch - 3ms/step
Epoch 54/250
13/13 - 0s - loss: 6.1448e-04 - mae: 0.0197 - mse: 6.1448e-04 - val_loss: 5.9441e-04 - val_mae: 0.0189 - val_mse: 5.9441e-04 - 53ms/epoch - 4ms/step
Epoch 55/250
13/13 - 0s - loss: 6.3511e-04 - mae: 0.0196 - mse: 6.3511e-04 - val_loss: 7.2290e-04 - val_mae: 0.0214 - val_mse: 7.2290e-04 - 53ms/epoch - 4ms/step
Epoch 56/250
13/13 - 0s - loss: 6.1938e-04 - mae: 0.0197 - mse: 6.1938e-04 - val_loss: 5.7032e-04 - val_mae: 0.0188 - val_mse: 5.7032e-04 - 71ms/epoch - 5ms/step
Epoch 57/250
13/13 - 0s - loss: 6.7133e-04 - mae: 0.0207 - mse: 6.7133e-04 - val_loss: 7.3368e-04 - val_mae: 0.0214 - val_mse: 7.3368e-04 - 38ms/epoch - 3ms/step
Epoch 58/250
13/13 - 0s - loss: 6.3014e-04 - mae: 0.0198 - mse: 6.3014e-04 - val_loss: 5.6271e-04 - val_mae: 0.0181 - val_mse: 5.6271e-04 - 69ms/epoch - 5ms/step
Epoch 59/250
13/13 - 0s - loss: 6.1936e-04 - mae: 0.0195 - mse: 6.1936e-04 - val_loss: 5.9423e-04 - val_mae: 0.0190 - val_mse: 5.9423e-04 - 53ms/epoch - 4ms/step
Epoch 60/250
13/13 - 0s - loss: 5.8478e-04 - mae: 0.0189 - mse: 5.8478e-04 - val_loss: 5.8329e-04 - val_mae: 0.0188 - val_mse: 5.8329e-04 - 54ms/epoch - 4ms/step
Epoch 61/250
13/13 - 0s - loss: 5.9652e-04 - mae: 0.0188 - mse: 5.9652e-04 - val_loss: 5.9535e-04 - val_mae: 0.0195 - val_mse: 5.9535e-04 - 38ms/epoch - 3ms/step
Epoch 62/250
13/13 - 0s - loss: 5.9126e-04 - mae: 0.0189 - mse: 5.9126e-04 - val_loss: 5.7487e-04 - val_mae: 0.0185 - val_mse: 5.7487e-04 - 38ms/epoch - 3ms/step
Epoch 63/250
13/13 - 0s - loss: 5.9325e-04 - mae: 0.0193 - mse: 5.9325e-04 - val_loss: 5.4086e-04 - val_mae: 0.0178 - val_mse: 5.4086e-04 - 66ms/epoch - 5ms/step
Epoch 64/250
13/13 - 0s - loss: 5.8429e-04 - mae: 0.0190 - mse: 5.8429e-04 - val_loss: 5.4432e-04 - val_mae: 0.0181 - val_mse: 5.4432e-04 - 54ms/epoch - 4ms/step
Epoch 65/250
13/13 - 0s - loss: 6.0129e-04 - mae: 0.0191 - mse: 6.0129e-04 - val_loss: 6.1667e-04 - val_mae: 0.0193 - val_mse: 6.1667e-04 - 53ms/epoch - 4ms/step
Epoch 66/250
13/13 - 0s - loss: 6.3993e-04 - mae: 0.0195 - mse: 6.3993e-04 - val_loss: 5.8189e-04 - val_mae: 0.0193 - val_mse: 5.8189e-04 - 55ms/epoch - 4ms/step
Epoch 67/250
13/13 - 0s - loss: 6.2439e-04 - mae: 0.0197 - mse: 6.2439e-04 - val_loss: 6.9319e-04 - val_mae: 0.0202 - val_mse: 6.9319e-04 - 53ms/epoch - 4ms/step
Epoch 68/250
13/13 - 0s - loss: 6.3890e-04 - mae: 0.0198 - mse: 6.3890e-04 - val_loss: 8.6462e-04 - val_mae: 0.0239 - val_mse: 8.6462e-04 - 55ms/epoch - 4ms/step
Epoch 69/250
13/13 - 0s - loss: 7.0108e-04 - mae: 0.0209 - mse: 7.0108e-04 - val_loss: 6.5308e-04 - val_mae: 0.0201 - val_mse: 6.5308e-04 - 54ms/epoch - 4ms/step
Epoch 70/250
13/13 - 0s - loss: 5.9414e-04 - mae: 0.0191 - mse: 5.9414e-04 - val_loss: 5.5111e-04 - val_mae: 0.0182 - val_mse: 5.5111e-04 - 55ms/epoch - 4ms/step
Epoch 71/250
13/13 - 0s - loss: 6.2215e-04 - mae: 0.0197 - mse: 6.2215e-04 - val_loss: 5.8063e-04 - val_mae: 0.0190 - val_mse: 5.8063e-04 - 55ms/epoch - 4ms/step
Epoch 72/250
13/13 - 0s - loss: 5.8678e-04 - mae: 0.0189 - mse: 5.8678e-04 - val_loss: 5.4221e-04 - val_mae: 0.0184 - val_mse: 5.4221e-04 - 55ms/epoch - 4ms/step
Epoch 73/250
13/13 - 0s - loss: 5.7409e-04 - mae: 0.0188 - mse: 5.7409e-04 - val_loss: 6.1846e-04 - val_mae: 0.0192 - val_mse: 6.1846e-04 - 55ms/epoch - 4ms/step
Epoch 74/250
13/13 - 0s - loss: 5.5394e-04 - mae: 0.0183 - mse: 5.5394e-04 - val_loss: 5.7936e-04 - val_mae: 0.0186 - val_mse: 5.7936e-04 - 38ms/epoch - 3ms/step
Epoch 75/250
13/13 - 0s - loss: 5.5549e-04 - mae: 0.0187 - mse: 5.5549e-04 - val_loss: 5.9935e-04 - val_mae: 0.0185 - val_mse: 5.9935e-04 - 53ms/epoch - 4ms/step
Epoch 76/250
13/13 - 0s - loss: 6.0922e-04 - mae: 0.0192 - mse: 6.0922e-04 - val_loss: 5.7894e-04 - val_mae: 0.0188 - val_mse: 5.7894e-04 - 38ms/epoch - 3ms/step
Epoch 77/250
13/13 - 0s - loss: 5.7865e-04 - mae: 0.0189 - mse: 5.7865e-04 - val_loss: 5.6318e-04 - val_mae: 0.0187 - val_mse: 5.6318e-04 - 53ms/epoch - 4ms/step
Epoch 78/250
13/13 - 0s - loss: 5.8140e-04 - mae: 0.0192 - mse: 5.8140e-04 - val_loss: 5.1664e-04 - val_mae: 0.0175 - val_mse: 5.1664e-04 - 72ms/epoch - 6ms/step
Epoch 79/250
13/13 - 0s - loss: 5.5805e-04 - mae: 0.0182 - mse: 5.5805e-04 - val_loss: 6.4469e-04 - val_mae: 0.0199 - val_mse: 6.4469e-04 - 38ms/epoch - 3ms/step
Epoch 80/250
13/13 - 0s - loss: 5.5360e-04 - mae: 0.0181 - mse: 5.5360e-04 - val_loss: 5.5219e-04 - val_mae: 0.0179 - val_mse: 5.5219e-04 - 38ms/epoch - 3ms/step
Epoch 81/250
13/13 - 0s - loss: 5.6180e-04 - mae: 0.0188 - mse: 5.6180e-04 - val_loss: 5.2044e-04 - val_mae: 0.0176 - val_mse: 5.2044e-04 - 37ms/epoch - 3ms/step
Epoch 82/250
13/13 - 0s - loss: 5.4782e-04 - mae: 0.0185 - mse: 5.4782e-04 - val_loss: 5.0224e-04 - val_mae: 0.0172 - val_mse: 5.0224e-04 - 69ms/epoch - 5ms/step
Epoch 83/250
13/13 - 0s - loss: 5.5233e-04 - mae: 0.0177 - mse: 5.5233e-04 - val_loss: 6.7202e-04 - val_mae: 0.0210 - val_mse: 6.7202e-04 - 54ms/epoch - 4ms/step
Epoch 84/250
13/13 - 0s - loss: 5.9143e-04 - mae: 0.0191 - mse: 5.9143e-04 - val_loss: 4.9758e-04 - val_mae: 0.0171 - val_mse: 4.9758e-04 - 55ms/epoch - 4ms/step
Epoch 85/250
13/13 - 0s - loss: 5.3297e-04 - mae: 0.0180 - mse: 5.3297e-04 - val_loss: 6.0992e-04 - val_mae: 0.0193 - val_mse: 6.0992e-04 - 53ms/epoch - 4ms/step
Epoch 86/250
13/13 - 0s - loss: 5.3293e-04 - mae: 0.0184 - mse: 5.3293e-04 - val_loss: 5.0070e-04 - val_mae: 0.0172 - val_mse: 5.0070e-04 - 53ms/epoch - 4ms/step
Epoch 87/250
13/13 - 0s - loss: 5.3765e-04 - mae: 0.0177 - mse: 5.3765e-04 - val_loss: 8.0830e-04 - val_mae: 0.0230 - val_mse: 8.0830e-04 - 46ms/epoch - 4ms/step
Epoch 88/250
13/13 - 0s - loss: 6.5249e-04 - mae: 0.0199 - mse: 6.5249e-04 - val_loss: 6.1463e-04 - val_mae: 0.0196 - val_mse: 6.1463e-04 - 54ms/epoch - 4ms/step
Epoch 89/250
13/13 - 0s - loss: 6.2629e-04 - mae: 0.0200 - mse: 6.2629e-04 - val_loss: 5.6308e-04 - val_mae: 0.0181 - val_mse: 5.6308e-04 - 54ms/epoch - 4ms/step
Epoch 90/250
13/13 - 0s - loss: 5.7332e-04 - mae: 0.0186 - mse: 5.7332e-04 - val_loss: 5.4206e-04 - val_mae: 0.0184 - val_mse: 5.4206e-04 - 54ms/epoch - 4ms/step
Epoch 91/250
13/13 - 0s - loss: 5.5743e-04 - mae: 0.0189 - mse: 5.5743e-04 - val_loss: 5.1031e-04 - val_mae: 0.0171 - val_mse: 5.1031e-04 - 38ms/epoch - 3ms/step
Epoch 92/250
13/13 - 0s - loss: 6.1698e-04 - mae: 0.0194 - mse: 6.1698e-04 - val_loss: 8.3100e-04 - val_mae: 0.0231 - val_mse: 8.3100e-04 - 38ms/epoch - 3ms/step
Epoch 93/250
13/13 - 0s - loss: 7.0406e-04 - mae: 0.0208 - mse: 7.0406e-04 - val_loss: 5.9279e-04 - val_mae: 0.0190 - val_mse: 5.9279e-04 - 54ms/epoch - 4ms/step
Epoch 94/250
13/13 - 0s - loss: 5.7027e-04 - mae: 0.0185 - mse: 5.7027e-04 - val_loss: 5.5360e-04 - val_mae: 0.0184 - val_mse: 5.5360e-04 - 53ms/epoch - 4ms/step
Epoch 95/250
13/13 - 0s - loss: 5.4953e-04 - mae: 0.0183 - mse: 5.4953e-04 - val_loss: 5.0858e-04 - val_mae: 0.0176 - val_mse: 5.0858e-04 - 38ms/epoch - 3ms/step
Epoch 96/250
13/13 - 0s - loss: 5.1176e-04 - mae: 0.0176 - mse: 5.1176e-04 - val_loss: 5.5556e-04 - val_mae: 0.0179 - val_mse: 5.5556e-04 - 38ms/epoch - 3ms/step
Epoch 97/250
13/13 - 0s - loss: 5.1469e-04 - mae: 0.0177 - mse: 5.1469e-04 - val_loss: 5.8859e-04 - val_mae: 0.0182 - val_mse: 5.8859e-04 - 53ms/epoch - 4ms/step
Epoch 98/250
13/13 - 0s - loss: 5.0501e-04 - mae: 0.0172 - mse: 5.0501e-04 - val_loss: 5.7471e-04 - val_mae: 0.0185 - val_mse: 5.7471e-04 - 38ms/epoch - 3ms/step
Epoch 99/250
13/13 - 0s - loss: 5.3553e-04 - mae: 0.0183 - mse: 5.3553e-04 - val_loss: 5.9465e-04 - val_mae: 0.0180 - val_mse: 5.9465e-04 - 38ms/epoch - 3ms/step
Epoch 100/250
13/13 - 0s - loss: 5.2568e-04 - mae: 0.0179 - mse: 5.2568e-04 - val_loss: 4.7495e-04 - val_mae: 0.0168 - val_mse: 4.7495e-04 - 71ms/epoch - 5ms/step
Epoch 101/250
13/13 - 0s - loss: 5.3231e-04 - mae: 0.0176 - mse: 5.3231e-04 - val_loss: 5.4590e-04 - val_mae: 0.0186 - val_mse: 5.4590e-04 - 54ms/epoch - 4ms/step
Epoch 102/250
13/13 - 0s - loss: 5.3408e-04 - mae: 0.0183 - mse: 5.3408e-04 - val_loss: 5.3105e-04 - val_mae: 0.0179 - val_mse: 5.3105e-04 - 38ms/epoch - 3ms/step
Epoch 103/250
13/13 - 0s - loss: 6.2023e-04 - mae: 0.0198 - mse: 6.2023e-04 - val_loss: 5.1609e-04 - val_mae: 0.0175 - val_mse: 5.1609e-04 - 38ms/epoch - 3ms/step
Epoch 104/250
13/13 - 0s - loss: 5.3258e-04 - mae: 0.0179 - mse: 5.3258e-04 - val_loss: 4.8995e-04 - val_mae: 0.0173 - val_mse: 4.8995e-04 - 52ms/epoch - 4ms/step
Epoch 105/250
13/13 - 0s - loss: 4.7236e-04 - mae: 0.0170 - mse: 4.7236e-04 - val_loss: 4.6179e-04 - val_mae: 0.0161 - val_mse: 4.6179e-04 - 70ms/epoch - 5ms/step
Epoch 106/250
13/13 - 0s - loss: 4.7836e-04 - mae: 0.0171 - mse: 4.7836e-04 - val_loss: 4.6575e-04 - val_mae: 0.0169 - val_mse: 4.6575e-04 - 54ms/epoch - 4ms/step
Epoch 107/250
13/13 - 0s - loss: 4.8280e-04 - mae: 0.0169 - mse: 4.8280e-04 - val_loss: 4.8260e-04 - val_mae: 0.0167 - val_mse: 4.8260e-04 - 54ms/epoch - 4ms/step
Epoch 108/250
13/13 - 0s - loss: 4.7842e-04 - mae: 0.0173 - mse: 4.7842e-04 - val_loss: 5.1025e-04 - val_mae: 0.0172 - val_mse: 5.1025e-04 - 54ms/epoch - 4ms/step
Epoch 109/250
13/13 - 0s - loss: 5.5460e-04 - mae: 0.0186 - mse: 5.5460e-04 - val_loss: 6.6666e-04 - val_mae: 0.0197 - val_mse: 6.6666e-04 - 38ms/epoch - 3ms/step
Epoch 110/250
13/13 - 0s - loss: 5.3021e-04 - mae: 0.0182 - mse: 5.3021e-04 - val_loss: 4.9609e-04 - val_mae: 0.0170 - val_mse: 4.9609e-04 - 38ms/epoch - 3ms/step
Epoch 111/250
13/13 - 0s - loss: 4.7517e-04 - mae: 0.0171 - mse: 4.7517e-04 - val_loss: 5.4831e-04 - val_mae: 0.0178 - val_mse: 5.4831e-04 - 38ms/epoch - 3ms/step
Epoch 112/250
13/13 - 0s - loss: 4.9955e-04 - mae: 0.0177 - mse: 4.9955e-04 - val_loss: 5.8683e-04 - val_mae: 0.0184 - val_mse: 5.8683e-04 - 38ms/epoch - 3ms/step
Epoch 113/250
13/13 - 0s - loss: 5.3932e-04 - mae: 0.0185 - mse: 5.3932e-04 - val_loss: 5.1246e-04 - val_mae: 0.0175 - val_mse: 5.1246e-04 - 52ms/epoch - 4ms/step
Epoch 114/250
13/13 - 0s - loss: 4.6728e-04 - mae: 0.0171 - mse: 4.6728e-04 - val_loss: 6.0161e-04 - val_mae: 0.0191 - val_mse: 6.0161e-04 - 37ms/epoch - 3ms/step
Epoch 115/250
13/13 - 0s - loss: 4.6413e-04 - mae: 0.0169 - mse: 4.6413e-04 - val_loss: 4.7510e-04 - val_mae: 0.0168 - val_mse: 4.7510e-04 - 52ms/epoch - 4ms/step
Epoch 116/250
13/13 - 0s - loss: 4.3671e-04 - mae: 0.0163 - mse: 4.3671e-04 - val_loss: 4.3951e-04 - val_mae: 0.0158 - val_mse: 4.3951e-04 - 70ms/epoch - 5ms/step
Epoch 117/250
13/13 - 0s - loss: 4.3787e-04 - mae: 0.0165 - mse: 4.3787e-04 - val_loss: 5.3112e-04 - val_mae: 0.0175 - val_mse: 5.3112e-04 - 38ms/epoch - 3ms/step
Epoch 118/250
13/13 - 0s - loss: 4.8953e-04 - mae: 0.0172 - mse: 4.8953e-04 - val_loss: 4.4563e-04 - val_mae: 0.0166 - val_mse: 4.4563e-04 - 37ms/epoch - 3ms/step
Epoch 119/250
13/13 - 0s - loss: 4.9920e-04 - mae: 0.0177 - mse: 4.9920e-04 - val_loss: 5.9141e-04 - val_mae: 0.0189 - val_mse: 5.9141e-04 - 37ms/epoch - 3ms/step
Epoch 120/250
13/13 - 0s - loss: 5.0111e-04 - mae: 0.0174 - mse: 5.0111e-04 - val_loss: 4.5637e-04 - val_mae: 0.0164 - val_mse: 4.5637e-04 - 38ms/epoch - 3ms/step
Epoch 121/250
13/13 - 0s - loss: 4.5273e-04 - mae: 0.0166 - mse: 4.5273e-04 - val_loss: 5.1122e-04 - val_mae: 0.0168 - val_mse: 5.1122e-04 - 36ms/epoch - 3ms/step
Epoch 122/250
13/13 - 0s - loss: 5.3754e-04 - mae: 0.0184 - mse: 5.3754e-04 - val_loss: 4.6944e-04 - val_mae: 0.0159 - val_mse: 4.6944e-04 - 37ms/epoch - 3ms/step
Epoch 123/250
13/13 - 0s - loss: 4.6272e-04 - mae: 0.0169 - mse: 4.6272e-04 - val_loss: 6.1991e-04 - val_mae: 0.0188 - val_mse: 6.1991e-04 - 54ms/epoch - 4ms/step
Epoch 124/250
13/13 - 0s - loss: 5.2881e-04 - mae: 0.0177 - mse: 5.2881e-04 - val_loss: 4.6706e-04 - val_mae: 0.0162 - val_mse: 4.6706e-04 - 40ms/epoch - 3ms/step
Epoch 125/250
13/13 - 0s - loss: 4.4405e-04 - mae: 0.0165 - mse: 4.4405e-04 - val_loss: 4.6710e-04 - val_mae: 0.0161 - val_mse: 4.6710e-04 - 54ms/epoch - 4ms/step
Epoch 126/250
13/13 - 0s - loss: 4.8105e-04 - mae: 0.0171 - mse: 4.8105e-04 - val_loss: 6.1268e-04 - val_mae: 0.0184 - val_mse: 6.1268e-04 - 54ms/epoch - 4ms/step
Epoch 127/250
13/13 - 0s - loss: 4.3017e-04 - mae: 0.0161 - mse: 4.3017e-04 - val_loss: 4.3580e-04 - val_mae: 0.0158 - val_mse: 4.3580e-04 - 71ms/epoch - 5ms/step
Epoch 128/250
13/13 - 0s - loss: 4.7036e-04 - mae: 0.0169 - mse: 4.7036e-04 - val_loss: 6.4477e-04 - val_mae: 0.0190 - val_mse: 6.4477e-04 - 53ms/epoch - 4ms/step
Epoch 129/250
13/13 - 0s - loss: 4.9358e-04 - mae: 0.0175 - mse: 4.9358e-04 - val_loss: 5.1158e-04 - val_mae: 0.0179 - val_mse: 5.1158e-04 - 53ms/epoch - 4ms/step
Epoch 130/250
13/13 - 0s - loss: 4.7696e-04 - mae: 0.0172 - mse: 4.7696e-04 - val_loss: 4.4447e-04 - val_mae: 0.0156 - val_mse: 4.4447e-04 - 39ms/epoch - 3ms/step
Epoch 131/250
13/13 - 0s - loss: 4.6706e-04 - mae: 0.0163 - mse: 4.6706e-04 - val_loss: 4.2718e-04 - val_mae: 0.0156 - val_mse: 4.2718e-04 - 69ms/epoch - 5ms/step
Epoch 132/250
13/13 - 0s - loss: 4.1806e-04 - mae: 0.0162 - mse: 4.1806e-04 - val_loss: 4.2230e-04 - val_mae: 0.0154 - val_mse: 4.2230e-04 - 70ms/epoch - 5ms/step
Epoch 133/250
13/13 - 0s - loss: 4.0698e-04 - mae: 0.0158 - mse: 4.0698e-04 - val_loss: 4.3732e-04 - val_mae: 0.0162 - val_mse: 4.3732e-04 - 54ms/epoch - 4ms/step
Epoch 134/250
13/13 - 0s - loss: 4.0229e-04 - mae: 0.0157 - mse: 4.0229e-04 - val_loss: 4.0980e-04 - val_mae: 0.0150 - val_mse: 4.0980e-04 - 69ms/epoch - 5ms/step
Epoch 135/250
13/13 - 0s - loss: 3.8526e-04 - mae: 0.0154 - mse: 3.8526e-04 - val_loss: 4.3528e-04 - val_mae: 0.0152 - val_mse: 4.3528e-04 - 52ms/epoch - 4ms/step
Epoch 136/250
13/13 - 0s - loss: 3.8810e-04 - mae: 0.0152 - mse: 3.8810e-04 - val_loss: 4.1881e-04 - val_mae: 0.0161 - val_mse: 4.1881e-04 - 38ms/epoch - 3ms/step
Epoch 137/250
13/13 - 0s - loss: 3.8191e-04 - mae: 0.0152 - mse: 3.8191e-04 - val_loss: 4.0633e-04 - val_mae: 0.0152 - val_mse: 4.0633e-04 - 70ms/epoch - 5ms/step
Epoch 138/250
13/13 - 0s - loss: 3.9566e-04 - mae: 0.0154 - mse: 3.9566e-04 - val_loss: 3.9835e-04 - val_mae: 0.0153 - val_mse: 3.9835e-04 - 72ms/epoch - 6ms/step
Epoch 139/250
13/13 - 0s - loss: 3.7483e-04 - mae: 0.0152 - mse: 3.7483e-04 - val_loss: 4.0924e-04 - val_mae: 0.0152 - val_mse: 4.0924e-04 - 53ms/epoch - 4ms/step
Epoch 140/250
13/13 - 0s - loss: 3.9849e-04 - mae: 0.0151 - mse: 3.9849e-04 - val_loss: 3.8459e-04 - val_mae: 0.0148 - val_mse: 3.8459e-04 - 70ms/epoch - 5ms/step
Epoch 141/250
13/13 - 0s - loss: 5.0689e-04 - mae: 0.0176 - mse: 5.0689e-04 - val_loss: 4.5617e-04 - val_mae: 0.0164 - val_mse: 4.5617e-04 - 53ms/epoch - 4ms/step
Epoch 142/250
13/13 - 0s - loss: 4.5152e-04 - mae: 0.0165 - mse: 4.5152e-04 - val_loss: 4.5620e-04 - val_mae: 0.0165 - val_mse: 4.5620e-04 - 53ms/epoch - 4ms/step
Epoch 143/250
13/13 - 0s - loss: 4.1721e-04 - mae: 0.0163 - mse: 4.1721e-04 - val_loss: 3.9931e-04 - val_mae: 0.0148 - val_mse: 3.9931e-04 - 39ms/epoch - 3ms/step
Epoch 144/250
13/13 - 0s - loss: 3.8327e-04 - mae: 0.0151 - mse: 3.8327e-04 - val_loss: 3.8673e-04 - val_mae: 0.0150 - val_mse: 3.8673e-04 - 54ms/epoch - 4ms/step
Epoch 145/250
13/13 - 0s - loss: 3.6678e-04 - mae: 0.0149 - mse: 3.6678e-04 - val_loss: 3.7792e-04 - val_mae: 0.0147 - val_mse: 3.7792e-04 - 71ms/epoch - 5ms/step
Epoch 146/250
13/13 - 0s - loss: 3.6183e-04 - mae: 0.0149 - mse: 3.6183e-04 - val_loss: 3.6959e-04 - val_mae: 0.0140 - val_mse: 3.6959e-04 - 71ms/epoch - 5ms/step
Epoch 147/250
13/13 - 0s - loss: 3.5020e-04 - mae: 0.0144 - mse: 3.5020e-04 - val_loss: 3.6822e-04 - val_mae: 0.0144 - val_mse: 3.6822e-04 - 72ms/epoch - 6ms/step
Epoch 148/250
13/13 - 0s - loss: 3.5631e-04 - mae: 0.0145 - mse: 3.5631e-04 - val_loss: 4.2364e-04 - val_mae: 0.0150 - val_mse: 4.2364e-04 - 54ms/epoch - 4ms/step
Epoch 149/250
13/13 - 0s - loss: 3.5923e-04 - mae: 0.0146 - mse: 3.5923e-04 - val_loss: 3.8281e-04 - val_mae: 0.0141 - val_mse: 3.8281e-04 - 54ms/epoch - 4ms/step
Epoch 150/250
13/13 - 0s - loss: 3.5207e-04 - mae: 0.0145 - mse: 3.5207e-04 - val_loss: 3.9438e-04 - val_mae: 0.0145 - val_mse: 3.9438e-04 - 53ms/epoch - 4ms/step
Epoch 151/250
13/13 - 0s - loss: 3.8594e-04 - mae: 0.0152 - mse: 3.8594e-04 - val_loss: 4.4376e-04 - val_mae: 0.0159 - val_mse: 4.4376e-04 - 38ms/epoch - 3ms/step
Epoch 152/250
13/13 - 0s - loss: 3.9056e-04 - mae: 0.0151 - mse: 3.9056e-04 - val_loss: 5.1693e-04 - val_mae: 0.0174 - val_mse: 5.1693e-04 - 37ms/epoch - 3ms/step
Epoch 153/250
13/13 - 0s - loss: 3.8816e-04 - mae: 0.0149 - mse: 3.8816e-04 - val_loss: 3.8192e-04 - val_mae: 0.0150 - val_mse: 3.8192e-04 - 37ms/epoch - 3ms/step
Epoch 154/250
13/13 - 0s - loss: 3.5776e-04 - mae: 0.0147 - mse: 3.5776e-04 - val_loss: 4.9889e-04 - val_mae: 0.0171 - val_mse: 4.9889e-04 - 54ms/epoch - 4ms/step
Epoch 155/250
13/13 - 0s - loss: 3.9218e-04 - mae: 0.0150 - mse: 3.9218e-04 - val_loss: 3.4602e-04 - val_mae: 0.0136 - val_mse: 3.4602e-04 - 55ms/epoch - 4ms/step
Epoch 156/250
13/13 - 0s - loss: 3.5214e-04 - mae: 0.0147 - mse: 3.5214e-04 - val_loss: 3.6163e-04 - val_mae: 0.0138 - val_mse: 3.6163e-04 - 38ms/epoch - 3ms/step
Epoch 157/250
13/13 - 0s - loss: 3.3259e-04 - mae: 0.0140 - mse: 3.3259e-04 - val_loss: 3.4867e-04 - val_mae: 0.0134 - val_mse: 3.4867e-04 - 53ms/epoch - 4ms/step
Epoch 158/250
13/13 - 0s - loss: 3.2140e-04 - mae: 0.0137 - mse: 3.2140e-04 - val_loss: 4.2948e-04 - val_mae: 0.0149 - val_mse: 4.2948e-04 - 38ms/epoch - 3ms/step
Epoch 159/250
13/13 - 0s - loss: 3.5593e-04 - mae: 0.0147 - mse: 3.5593e-04 - val_loss: 3.6539e-04 - val_mae: 0.0143 - val_mse: 3.6539e-04 - 54ms/epoch - 4ms/step
Epoch 160/250
13/13 - 0s - loss: 3.5448e-04 - mae: 0.0143 - mse: 3.5448e-04 - val_loss: 3.6194e-04 - val_mae: 0.0133 - val_mse: 3.6194e-04 - 53ms/epoch - 4ms/step
Epoch 161/250
13/13 - 0s - loss: 3.6394e-04 - mae: 0.0148 - mse: 3.6394e-04 - val_loss: 4.8111e-04 - val_mae: 0.0155 - val_mse: 4.8111e-04 - 38ms/epoch - 3ms/step
Epoch 162/250
13/13 - 0s - loss: 3.5773e-04 - mae: 0.0148 - mse: 3.5773e-04 - val_loss: 3.4037e-04 - val_mae: 0.0132 - val_mse: 3.4037e-04 - 72ms/epoch - 6ms/step
Epoch 163/250
13/13 - 0s - loss: 3.1493e-04 - mae: 0.0134 - mse: 3.1493e-04 - val_loss: 3.3247e-04 - val_mae: 0.0135 - val_mse: 3.3247e-04 - 72ms/epoch - 6ms/step
Epoch 164/250
13/13 - 0s - loss: 3.2248e-04 - mae: 0.0139 - mse: 3.2248e-04 - val_loss: 3.2460e-04 - val_mae: 0.0129 - val_mse: 3.2460e-04 - 71ms/epoch - 5ms/step
Epoch 165/250
13/13 - 0s - loss: 2.9953e-04 - mae: 0.0133 - mse: 2.9953e-04 - val_loss: 3.9031e-04 - val_mae: 0.0139 - val_mse: 3.9031e-04 - 54ms/epoch - 4ms/step
Epoch 166/250
13/13 - 0s - loss: 2.9217e-04 - mae: 0.0130 - mse: 2.9217e-04 - val_loss: 3.2431e-04 - val_mae: 0.0128 - val_mse: 3.2431e-04 - 55ms/epoch - 4ms/step
Epoch 167/250
13/13 - 0s - loss: 3.1240e-04 - mae: 0.0135 - mse: 3.1240e-04 - val_loss: 3.2208e-04 - val_mae: 0.0126 - val_mse: 3.2208e-04 - 71ms/epoch - 5ms/step
Epoch 168/250
13/13 - 0s - loss: 3.2791e-04 - mae: 0.0141 - mse: 3.2791e-04 - val_loss: 3.3739e-04 - val_mae: 0.0128 - val_mse: 3.3739e-04 - 54ms/epoch - 4ms/step
Epoch 169/250
13/13 - 0s - loss: 3.1323e-04 - mae: 0.0135 - mse: 3.1323e-04 - val_loss: 3.1927e-04 - val_mae: 0.0130 - val_mse: 3.1927e-04 - 70ms/epoch - 5ms/step
Epoch 170/250
13/13 - 0s - loss: 2.9000e-04 - mae: 0.0130 - mse: 2.9000e-04 - val_loss: 3.1541e-04 - val_mae: 0.0129 - val_mse: 3.1541e-04 - 70ms/epoch - 5ms/step
Epoch 171/250
13/13 - 0s - loss: 2.9152e-04 - mae: 0.0131 - mse: 2.9152e-04 - val_loss: 3.2274e-04 - val_mae: 0.0133 - val_mse: 3.2274e-04 - 38ms/epoch - 3ms/step
Epoch 172/250
13/13 - 0s - loss: 2.8599e-04 - mae: 0.0129 - mse: 2.8599e-04 - val_loss: 3.1106e-04 - val_mae: 0.0128 - val_mse: 3.1106e-04 - 56ms/epoch - 4ms/step
Epoch 173/250
13/13 - 0s - loss: 3.2214e-04 - mae: 0.0135 - mse: 3.2214e-04 - val_loss: 3.0565e-04 - val_mae: 0.0124 - val_mse: 3.0565e-04 - 72ms/epoch - 6ms/step
Epoch 174/250
13/13 - 0s - loss: 2.8688e-04 - mae: 0.0128 - mse: 2.8688e-04 - val_loss: 3.0158e-04 - val_mae: 0.0125 - val_mse: 3.0158e-04 - 56ms/epoch - 4ms/step
Epoch 175/250
13/13 - 0s - loss: 2.7364e-04 - mae: 0.0124 - mse: 2.7364e-04 - val_loss: 3.9630e-04 - val_mae: 0.0141 - val_mse: 3.9630e-04 - 54ms/epoch - 4ms/step
Epoch 176/250
13/13 - 0s - loss: 2.8243e-04 - mae: 0.0130 - mse: 2.8243e-04 - val_loss: 4.7232e-04 - val_mae: 0.0152 - val_mse: 4.7232e-04 - 54ms/epoch - 4ms/step
Epoch 177/250
13/13 - 0s - loss: 3.1561e-04 - mae: 0.0135 - mse: 3.1561e-04 - val_loss: 3.1716e-04 - val_mae: 0.0126 - val_mse: 3.1716e-04 - 53ms/epoch - 4ms/step
Epoch 178/250
13/13 - 0s - loss: 3.0201e-04 - mae: 0.0131 - mse: 3.0201e-04 - val_loss: 3.1475e-04 - val_mae: 0.0131 - val_mse: 3.1475e-04 - 54ms/epoch - 4ms/step
Epoch 179/250
13/13 - 0s - loss: 2.6135e-04 - mae: 0.0120 - mse: 2.6135e-04 - val_loss: 2.8890e-04 - val_mae: 0.0121 - val_mse: 2.8890e-04 - 72ms/epoch - 6ms/step
Epoch 180/250
13/13 - 0s - loss: 2.6340e-04 - mae: 0.0124 - mse: 2.6340e-04 - val_loss: 2.9985e-04 - val_mae: 0.0118 - val_mse: 2.9985e-04 - 54ms/epoch - 4ms/step
Epoch 181/250
13/13 - 0s - loss: 2.7811e-04 - mae: 0.0126 - mse: 2.7811e-04 - val_loss: 2.9394e-04 - val_mae: 0.0119 - val_mse: 2.9394e-04 - 53ms/epoch - 4ms/step
Epoch 182/250
13/13 - 0s - loss: 2.6014e-04 - mae: 0.0120 - mse: 2.6014e-04 - val_loss: 3.0359e-04 - val_mae: 0.0125 - val_mse: 3.0359e-04 - 53ms/epoch - 4ms/step
Epoch 183/250
13/13 - 0s - loss: 2.7167e-04 - mae: 0.0124 - mse: 2.7167e-04 - val_loss: 2.7749e-04 - val_mae: 0.0114 - val_mse: 2.7749e-04 - 70ms/epoch - 5ms/step
Epoch 184/250
13/13 - 0s - loss: 2.7533e-04 - mae: 0.0122 - mse: 2.7533e-04 - val_loss: 3.5095e-04 - val_mae: 0.0127 - val_mse: 3.5095e-04 - 54ms/epoch - 4ms/step
Epoch 185/250
13/13 - 0s - loss: 2.7914e-04 - mae: 0.0124 - mse: 2.7914e-04 - val_loss: 3.1144e-04 - val_mae: 0.0122 - val_mse: 3.1144e-04 - 38ms/epoch - 3ms/step
Epoch 186/250
13/13 - 0s - loss: 2.5303e-04 - mae: 0.0118 - mse: 2.5303e-04 - val_loss: 2.7969e-04 - val_mae: 0.0117 - val_mse: 2.7969e-04 - 53ms/epoch - 4ms/step
Epoch 187/250
13/13 - 0s - loss: 2.5598e-04 - mae: 0.0119 - mse: 2.5598e-04 - val_loss: 2.7735e-04 - val_mae: 0.0114 - val_mse: 2.7735e-04 - 70ms/epoch - 5ms/step
Epoch 188/250
13/13 - 0s - loss: 2.5960e-04 - mae: 0.0121 - mse: 2.5960e-04 - val_loss: 4.2670e-04 - val_mae: 0.0158 - val_mse: 4.2670e-04 - 54ms/epoch - 4ms/step
Epoch 189/250
13/13 - 0s - loss: 3.2610e-04 - mae: 0.0137 - mse: 3.2610e-04 - val_loss: 2.6521e-04 - val_mae: 0.0113 - val_mse: 2.6521e-04 - 55ms/epoch - 4ms/step
Epoch 190/250
13/13 - 0s - loss: 2.4351e-04 - mae: 0.0115 - mse: 2.4351e-04 - val_loss: 2.7226e-04 - val_mae: 0.0109 - val_mse: 2.7226e-04 - 53ms/epoch - 4ms/step
Epoch 191/250
13/13 - 0s - loss: 2.3266e-04 - mae: 0.0113 - mse: 2.3266e-04 - val_loss: 3.4418e-04 - val_mae: 0.0125 - val_mse: 3.4418e-04 - 52ms/epoch - 4ms/step
Epoch 192/250
13/13 - 0s - loss: 2.2837e-04 - mae: 0.0112 - mse: 2.2837e-04 - val_loss: 2.6041e-04 - val_mae: 0.0109 - val_mse: 2.6041e-04 - 70ms/epoch - 5ms/step
Epoch 193/250
13/13 - 0s - loss: 2.3638e-04 - mae: 0.0112 - mse: 2.3638e-04 - val_loss: 2.5045e-04 - val_mae: 0.0105 - val_mse: 2.5045e-04 - 71ms/epoch - 5ms/step
Epoch 194/250
13/13 - 0s - loss: 2.4117e-04 - mae: 0.0116 - mse: 2.4117e-04 - val_loss: 2.4949e-04 - val_mae: 0.0104 - val_mse: 2.4949e-04 - 72ms/epoch - 6ms/step
Epoch 195/250
13/13 - 0s - loss: 2.1609e-04 - mae: 0.0109 - mse: 2.1609e-04 - val_loss: 2.5408e-04 - val_mae: 0.0108 - val_mse: 2.5408e-04 - 55ms/epoch - 4ms/step
Epoch 196/250
13/13 - 0s - loss: 2.4552e-04 - mae: 0.0116 - mse: 2.4552e-04 - val_loss: 2.6961e-04 - val_mae: 0.0106 - val_mse: 2.6961e-04 - 55ms/epoch - 4ms/step
Epoch 197/250
13/13 - 0s - loss: 2.2317e-04 - mae: 0.0108 - mse: 2.2317e-04 - val_loss: 2.3884e-04 - val_mae: 0.0103 - val_mse: 2.3884e-04 - 71ms/epoch - 5ms/step
Epoch 198/250
13/13 - 0s - loss: 2.2038e-04 - mae: 0.0110 - mse: 2.2038e-04 - val_loss: 3.1247e-04 - val_mae: 0.0120 - val_mse: 3.1247e-04 - 53ms/epoch - 4ms/step
Epoch 199/250
13/13 - 0s - loss: 2.0833e-04 - mae: 0.0104 - mse: 2.0833e-04 - val_loss: 2.4196e-04 - val_mae: 0.0100 - val_mse: 2.4196e-04 - 39ms/epoch - 3ms/step
Epoch 200/250
13/13 - 0s - loss: 2.1080e-04 - mae: 0.0105 - mse: 2.1080e-04 - val_loss: 2.3147e-04 - val_mae: 0.0104 - val_mse: 2.3147e-04 - 70ms/epoch - 5ms/step
Epoch 201/250
13/13 - 0s - loss: 2.2794e-04 - mae: 0.0111 - mse: 2.2794e-04 - val_loss: 2.3885e-04 - val_mae: 0.0109 - val_mse: 2.3885e-04 - 53ms/epoch - 4ms/step
Epoch 202/250
13/13 - 0s - loss: 2.0907e-04 - mae: 0.0107 - mse: 2.0907e-04 - val_loss: 2.5114e-04 - val_mae: 0.0103 - val_mse: 2.5114e-04 - 53ms/epoch - 4ms/step
Epoch 203/250
13/13 - 0s - loss: 2.2326e-04 - mae: 0.0109 - mse: 2.2326e-04 - val_loss: 2.4012e-04 - val_mae: 0.0106 - val_mse: 2.4012e-04 - 54ms/epoch - 4ms/step
Epoch 204/250
13/13 - 0s - loss: 2.0454e-04 - mae: 0.0104 - mse: 2.0454e-04 - val_loss: 3.1762e-04 - val_mae: 0.0118 - val_mse: 3.1762e-04 - 53ms/epoch - 4ms/step
Epoch 205/250
13/13 - 0s - loss: 1.9525e-04 - mae: 0.0100 - mse: 1.9525e-04 - val_loss: 2.2594e-04 - val_mae: 0.0098 - val_mse: 2.2594e-04 - 55ms/epoch - 4ms/step
Epoch 206/250
13/13 - 0s - loss: 1.8630e-04 - mae: 0.0099 - mse: 1.8630e-04 - val_loss: 3.9084e-04 - val_mae: 0.0148 - val_mse: 3.9084e-04 - 54ms/epoch - 4ms/step
Epoch 207/250
13/13 - 0s - loss: 2.2174e-04 - mae: 0.0113 - mse: 2.2174e-04 - val_loss: 2.2081e-04 - val_mae: 0.0100 - val_mse: 2.2081e-04 - 71ms/epoch - 5ms/step
Epoch 208/250
13/13 - 0s - loss: 1.8094e-04 - mae: 0.0100 - mse: 1.8094e-04 - val_loss: 2.1238e-04 - val_mae: 0.0093 - val_mse: 2.1238e-04 - 71ms/epoch - 5ms/step
Epoch 209/250
13/13 - 0s - loss: 1.8467e-04 - mae: 0.0100 - mse: 1.8467e-04 - val_loss: 3.1668e-04 - val_mae: 0.0123 - val_mse: 3.1668e-04 - 55ms/epoch - 4ms/step
Epoch 210/250
13/13 - 0s - loss: 1.9131e-04 - mae: 0.0102 - mse: 1.9131e-04 - val_loss: 2.1810e-04 - val_mae: 0.0103 - val_mse: 2.1810e-04 - 53ms/epoch - 4ms/step
Epoch 211/250
13/13 - 0s - loss: 1.6428e-04 - mae: 0.0092 - mse: 1.6428e-04 - val_loss: 2.1204e-04 - val_mae: 0.0091 - val_mse: 2.1204e-04 - 72ms/epoch - 6ms/step
Epoch 212/250
13/13 - 0s - loss: 1.5949e-04 - mae: 0.0090 - mse: 1.5949e-04 - val_loss: 1.9976e-04 - val_mae: 0.0093 - val_mse: 1.9976e-04 - 71ms/epoch - 5ms/step
Epoch 213/250
13/13 - 0s - loss: 1.5974e-04 - mae: 0.0090 - mse: 1.5974e-04 - val_loss: 2.1691e-04 - val_mae: 0.0099 - val_mse: 2.1691e-04 - 54ms/epoch - 4ms/step
Epoch 214/250
13/13 - 0s - loss: 1.8097e-04 - mae: 0.0095 - mse: 1.8097e-04 - val_loss: 2.2471e-04 - val_mae: 0.0103 - val_mse: 2.2471e-04 - 53ms/epoch - 4ms/step
Epoch 215/250
13/13 - 0s - loss: 1.7352e-04 - mae: 0.0094 - mse: 1.7352e-04 - val_loss: 2.0101e-04 - val_mae: 0.0094 - val_mse: 2.0101e-04 - 53ms/epoch - 4ms/step
Epoch 216/250
13/13 - 0s - loss: 1.5797e-04 - mae: 0.0090 - mse: 1.5797e-04 - val_loss: 1.9459e-04 - val_mae: 0.0094 - val_mse: 1.9459e-04 - 70ms/epoch - 5ms/step
Epoch 217/250
13/13 - 0s - loss: 1.5403e-04 - mae: 0.0090 - mse: 1.5403e-04 - val_loss: 1.8440e-04 - val_mae: 0.0086 - val_mse: 1.8440e-04 - 70ms/epoch - 5ms/step
Epoch 218/250
13/13 - 0s - loss: 1.5286e-04 - mae: 0.0089 - mse: 1.5286e-04 - val_loss: 1.7660e-04 - val_mae: 0.0082 - val_mse: 1.7660e-04 - 71ms/epoch - 5ms/step
Epoch 219/250
13/13 - 0s - loss: 1.4516e-04 - mae: 0.0086 - mse: 1.4516e-04 - val_loss: 1.9154e-04 - val_mae: 0.0096 - val_mse: 1.9154e-04 - 38ms/epoch - 3ms/step
Epoch 220/250
13/13 - 0s - loss: 1.5593e-04 - mae: 0.0090 - mse: 1.5593e-04 - val_loss: 1.9936e-04 - val_mae: 0.0082 - val_mse: 1.9936e-04 - 54ms/epoch - 4ms/step
Epoch 221/250
13/13 - 0s - loss: 1.4241e-04 - mae: 0.0086 - mse: 1.4241e-04 - val_loss: 1.8124e-04 - val_mae: 0.0079 - val_mse: 1.8124e-04 - 53ms/epoch - 4ms/step
Epoch 222/250
13/13 - 0s - loss: 1.3787e-04 - mae: 0.0083 - mse: 1.3787e-04 - val_loss: 1.6914e-04 - val_mae: 0.0078 - val_mse: 1.6914e-04 - 55ms/epoch - 4ms/step
Epoch 223/250
13/13 - 0s - loss: 1.3142e-04 - mae: 0.0080 - mse: 1.3142e-04 - val_loss: 1.7019e-04 - val_mae: 0.0077 - val_mse: 1.7019e-04 - 39ms/epoch - 3ms/step
Epoch 224/250
13/13 - 0s - loss: 1.6230e-04 - mae: 0.0094 - mse: 1.6230e-04 - val_loss: 2.5619e-04 - val_mae: 0.0121 - val_mse: 2.5619e-04 - 55ms/epoch - 4ms/step
Epoch 225/250
13/13 - 0s - loss: 1.7668e-04 - mae: 0.0098 - mse: 1.7668e-04 - val_loss: 1.8256e-04 - val_mae: 0.0079 - val_mse: 1.8256e-04 - 55ms/epoch - 4ms/step
Epoch 226/250
13/13 - 0s - loss: 1.5372e-04 - mae: 0.0088 - mse: 1.5372e-04 - val_loss: 1.7612e-04 - val_mae: 0.0093 - val_mse: 1.7612e-04 - 54ms/epoch - 4ms/step
Epoch 227/250
13/13 - 0s - loss: 1.2303e-04 - mae: 0.0077 - mse: 1.2303e-04 - val_loss: 1.5606e-04 - val_mae: 0.0074 - val_mse: 1.5606e-04 - 70ms/epoch - 5ms/step
Epoch 228/250
13/13 - 0s - loss: 1.1977e-04 - mae: 0.0076 - mse: 1.1977e-04 - val_loss: 2.1024e-04 - val_mae: 0.0097 - val_mse: 2.1024e-04 - 53ms/epoch - 4ms/step
Epoch 229/250
13/13 - 0s - loss: 1.3955e-04 - mae: 0.0085 - mse: 1.3955e-04 - val_loss: 1.8234e-04 - val_mae: 0.0085 - val_mse: 1.8234e-04 - 53ms/epoch - 4ms/step
Epoch 230/250
13/13 - 0s - loss: 1.1619e-04 - mae: 0.0075 - mse: 1.1619e-04 - val_loss: 1.4989e-04 - val_mae: 0.0076 - val_mse: 1.4989e-04 - 70ms/epoch - 5ms/step
Epoch 231/250
13/13 - 0s - loss: 1.2244e-04 - mae: 0.0074 - mse: 1.2244e-04 - val_loss: 1.7397e-04 - val_mae: 0.0083 - val_mse: 1.7397e-04 - 54ms/epoch - 4ms/step
Epoch 232/250
13/13 - 0s - loss: 1.3237e-04 - mae: 0.0082 - mse: 1.3237e-04 - val_loss: 1.5474e-04 - val_mae: 0.0084 - val_mse: 1.5474e-04 - 53ms/epoch - 4ms/step
Epoch 233/250
13/13 - 0s - loss: 1.0455e-04 - mae: 0.0071 - mse: 1.0455e-04 - val_loss: 1.4116e-04 - val_mae: 0.0069 - val_mse: 1.4116e-04 - 71ms/epoch - 5ms/step
Epoch 234/250
13/13 - 0s - loss: 1.0839e-04 - mae: 0.0071 - mse: 1.0839e-04 - val_loss: 1.7831e-04 - val_mae: 0.0081 - val_mse: 1.7831e-04 - 39ms/epoch - 3ms/step
Epoch 235/250
13/13 - 0s - loss: 1.1705e-04 - mae: 0.0076 - mse: 1.1705e-04 - val_loss: 1.6653e-04 - val_mae: 0.0089 - val_mse: 1.6653e-04 - 53ms/epoch - 4ms/step
Epoch 236/250
13/13 - 0s - loss: 1.3320e-04 - mae: 0.0082 - mse: 1.3320e-04 - val_loss: 1.6153e-04 - val_mae: 0.0081 - val_mse: 1.6153e-04 - 54ms/epoch - 4ms/step
Epoch 237/250
13/13 - 0s - loss: 1.3198e-04 - mae: 0.0083 - mse: 1.3198e-04 - val_loss: 1.3447e-04 - val_mae: 0.0070 - val_mse: 1.3447e-04 - 71ms/epoch - 5ms/step
Epoch 238/250
13/13 - 0s - loss: 1.5033e-04 - mae: 0.0091 - mse: 1.5033e-04 - val_loss: 1.4827e-04 - val_mae: 0.0077 - val_mse: 1.4827e-04 - 39ms/epoch - 3ms/step
Epoch 239/250
13/13 - 0s - loss: 1.2298e-04 - mae: 0.0080 - mse: 1.2298e-04 - val_loss: 1.6682e-04 - val_mae: 0.0083 - val_mse: 1.6682e-04 - 54ms/epoch - 4ms/step
Epoch 240/250
13/13 - 0s - loss: 1.1479e-04 - mae: 0.0077 - mse: 1.1479e-04 - val_loss: 1.5401e-04 - val_mae: 0.0085 - val_mse: 1.5401e-04 - 39ms/epoch - 3ms/step
Epoch 241/250
13/13 - 0s - loss: 1.0003e-04 - mae: 0.0070 - mse: 1.0003e-04 - val_loss: 1.2933e-04 - val_mae: 0.0067 - val_mse: 1.2933e-04 - 55ms/epoch - 4ms/step
Epoch 242/250
13/13 - 0s - loss: 8.9507e-05 - mae: 0.0065 - mse: 8.9507e-05 - val_loss: 1.6136e-04 - val_mae: 0.0080 - val_mse: 1.6136e-04 - 53ms/epoch - 4ms/step
Epoch 243/250
13/13 - 0s - loss: 9.2020e-05 - mae: 0.0067 - mse: 9.2020e-05 - val_loss: 1.7420e-04 - val_mae: 0.0094 - val_mse: 1.7420e-04 - 53ms/epoch - 4ms/step
Epoch 244/250
13/13 - 0s - loss: 1.1731e-04 - mae: 0.0081 - mse: 1.1731e-04 - val_loss: 2.0812e-04 - val_mae: 0.0099 - val_mse: 2.0812e-04 - 54ms/epoch - 4ms/step
Epoch 245/250
13/13 - 0s - loss: 9.8215e-05 - mae: 0.0069 - mse: 9.8215e-05 - val_loss: 1.5920e-04 - val_mae: 0.0081 - val_mse: 1.5920e-04 - 55ms/epoch - 4ms/step
Epoch 246/250
13/13 - 0s - loss: 1.0135e-04 - mae: 0.0073 - mse: 1.0135e-04 - val_loss: 1.7131e-04 - val_mae: 0.0099 - val_mse: 1.7131e-04 - 54ms/epoch - 4ms/step
Epoch 247/250
13/13 - 0s - loss: 1.0326e-04 - mae: 0.0073 - mse: 1.0326e-04 - val_loss: 1.2767e-04 - val_mae: 0.0070 - val_mse: 1.2767e-04 - 73ms/epoch - 6ms/step
Epoch 248/250
13/13 - 0s - loss: 7.6127e-05 - mae: 0.0061 - mse: 7.6127e-05 - val_loss: 1.2626e-04 - val_mae: 0.0065 - val_mse: 1.2626e-04 - 71ms/epoch - 5ms/step
Epoch 249/250
13/13 - 0s - loss: 8.5141e-05 - mae: 0.0064 - mse: 8.5141e-05 - val_loss: 1.1719e-04 - val_mae: 0.0067 - val_mse: 1.1719e-04 - 72ms/epoch - 6ms/step
Epoch 250/250
13/13 - 0s - loss: 7.8576e-05 - mae: 0.0063 - mse: 7.8576e-05 - val_loss: 1.1986e-04 - val_mae: 0.0069 - val_mse: 1.1986e-04 - 53ms/epoch - 4ms/step
../../../../_images/c77a01c290eedca37e73d82f0bc5f597083bf0aeb21ada40a674ffa0ae59d397.png
# Adding input bounds and variables along with scalers and output variable to kerasSurrogate
xmin, xmax = [7,306], [40,1000]
input_bounds = {input_labels[i]: (xmin[i], xmax[i]) for i in range(len(input_labels))}

keras_surrogate = KerasSurrogate(
    model,
    input_labels=list(input_labels),
    output_labels=list(output_labels),
    input_bounds=input_bounds,
    input_scaler=input_scaler,
    output_scaler=output_scaler,
)
keras_surrogate.save_to_folder("sco2_keras_surr")
INFO:tensorflow:Assets written to: sco2_keras_surr/assets
INFO:tensorflow:Assets written to: sco2_keras_surr/assets

2.3 Visualizing Surrogates#

Now that the surrogate models have been trained, the models can be visualized through scatter, parity and residual plots to confirm their validity in the chosen domain. The training data will be visualized first to confirm the surrogates are fit the data, and then the validation data will be visualized to confirm the surrogates accurately predict new output values.

surrogate_scatter2D(keras_surrogate, data_training)
surrogate_parity(keras_surrogate, data_training)
surrogate_residual(keras_surrogate, data_training)
 1/13 [=>............................] - ETA: 0s

13/13 [==============================] - 0s 1ms/step
../../../../_images/e84ae77b44911c26c907356175c59c67950d2e05b841070d8439bdd1ceb9421a.png ../../../../_images/35c65f02866a00d81d08f48ea1b606de09a1014aa03b96fc26769761ca7d166f.png ../../../../_images/ba7ced83aacd3303f55cfa6f8573d7b2856915c6f32be6da8eda87e445cbe444.png ../../../../_images/0479a44d285f559cfec9649d949ccfce516c4e4a3c7342c4d48d30a5c5dfc599.png
 1/13 [=>............................] - ETA: 0s

13/13 [==============================] - 0s 1ms/step
../../../../_images/0ac57ff963187db258c6a25b738c0b76070c3ec3911478c04281609e2688286a.png ../../../../_images/7c46acd72e5d9ef51470ce8af87808924dce657faf63a68aedc1d7d4453706f4.png
 1/13 [=>............................] - ETA: 0s

13/13 [==============================] - 0s 1ms/step
../../../../_images/036659e907212f8598133af99beb3975236eced5ecf17c800c97c408993173fe.png ../../../../_images/6f6420e422ce164d166a5bdb89054cdc4cce014604e7cff5eb00400b072786d8.png ../../../../_images/831da215ce188bff44d7f25d03119c2bccf5b171d0b5387082036e1818127236.png ../../../../_images/b729c3610aae0d282f181f4b0b5f236f370d5da23ab74eb7d1fbe9ac26141e59.png

2.4 Model Validation#

We check the fit on the validation set to see if the surrogate is fitting well. This step can be used to check for overfitting on the training set.

# visualize with IDAES surrogate plotting tools
surrogate_scatter2D(keras_surrogate, data_validation)
surrogate_parity(keras_surrogate, data_validation)
surrogate_residual(keras_surrogate, data_validation)
1/4 [======>.......................] - ETA: 0s

4/4 [==============================] - 0s 1ms/step
../../../../_images/cba677fefa93824a2eb165e0d4cd3264fe0200a588322a8d2efd1b03ad50de37.png ../../../../_images/59df8e39871e7fb4a6936b1b5b15ce562a99ab39833703b18d4a951662071422.png ../../../../_images/a3be0c2b0a0b664f10dd87434ac35e775dbcbce3eba3e0c255c21f30c276d133.png ../../../../_images/b36d0581561f0aa4de87035336c3640309d3da3f82c2df917393e848dd4c0975.png
1/4 [======>.......................] - ETA: 0s

4/4 [==============================] - 0s 1ms/step
../../../../_images/6a3f32c549e86cdbc3717104122114d20bf3dd1219a6f6289d717e5e8139c942.png ../../../../_images/6a0562bd63a98949788b1b2c20d82b8a2376f144177b6e55d94600576aaf9dfc.png
1/4 [======>.......................] - ETA: 0s

4/4 [==============================] - 0s 1ms/step
../../../../_images/6b3e9f838b0b52314c5a23b6765be7f00aab80fd97e9db8a1eb4278d25fd0af1.png ../../../../_images/01a574df4079fa986fd3148709356db2311ed7bd2fceeb9bd0ed5d44b80154ff.png ../../../../_images/e67fafa0b1d81c492f9d34d983eb1531631c0f5ad42ecf385aa8b16b2613c407.png ../../../../_images/df9dc820f183d10226c68006b6a540410e5e57e82f70ca8a9261627349d16cee.png

Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the surrogate_embedding_doc.ipynb file.