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


# 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"))


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

• 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()
tf.keras.layers.Dense(
units=n_nodes_per_layer, input_dim=n_inputs, activation=activation
)
)
for i in range(1, n_hidden_layers):

# 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

# 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

 1/13 [=>............................] - ETA: 0s


13/13 [==============================] - 0s 1ms/step

 1/13 [=>............................] - ETA: 0s


13/13 [==============================] - 0s 1ms/step


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

1/4 [======>.......................] - ETA: 0s


4/4 [==============================] - 0s 1ms/step

1/4 [======>.......................] - ETA: 0s


4/4 [==============================] - 0s 1ms/step


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.