Open In Colab

Installing Dependencies

In [ ]:
import time
import numpy as np
import tensorflow as tf
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
import matplotlib.pyplot as plt
import psutil
import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.svm import SVR
from xgboost import XGBRegressor
from statsmodels.tsa.arima.model import ARIMA
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, GRU, Bidirectional, Dense, Conv1D, Flatten, Input, SimpleRNN, Attention
from tensorflow.keras.models import Model

Data Preprocessing, Data Cleaning and EDA

In [ ]:
# Initialize performance metrics
process = psutil.Process()
start_time = time.time()
initial_cpu_percent = process.cpu_percent(interval=None)
initial_memory_usage = process.memory_info().rss / 1024 / 1024  # Memory in MB

# Load and preprocess data
data = pd.read_csv('temphumid data.csv', header=None, names=['Date', 'Time', 'Temp', 'Humidity'])

# Check for missing values and handle them
print("Initial data shape:", data.shape)
print("Missing values per column:")
print(data.isnull().sum())

# Handle missing values
data = data.dropna()

# Check if data contains duplicate rows
print("Duplicate rows in the dataset:", data.duplicated().sum())
data = data.drop_duplicates()

# Extract temperature and humidity values
data['Temperature'] = data['Temp'].str.extract(r'T=(\d+\.\d+)').astype(float)
data['Humidity'] = data['Humidity'].str.extract(r'H=(\d+\.\d+)').astype(float)

# Check data types
print("Data types of columns:")
print(data.dtypes)

# Check for outliers in Temperature and Humidity
print("Temperature statistics:")
print(data['Temperature'].describe())
print("Humidity statistics:")
print(data['Humidity'].describe())
Initial data shape: (336, 4)
Missing values per column:
Date         0
Time         0
Temp         0
Humidity    16
dtype: int64
Duplicate rows in the dataset: 0
Data types of columns:
Date            object
Time            object
Temp            object
Humidity       float64
Temperature    float64
dtype: object
Temperature statistics:
count    320.000000
mean      21.353125
std        5.047454
min        9.000000
25%       18.000000
50%       20.000000
75%       23.000000
max       37.000000
Name: Temperature, dtype: float64
Humidity statistics:
count    320.000000
mean      21.865625
std        7.625486
min       12.000000
25%       20.000000
50%       21.000000
75%       23.250000
max      140.000000
Name: Humidity, dtype: float64

EDA and Data Completion Checks

In [ ]:
# Plot histograms of Temperature and Humidity
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.hist(data['Temperature'], bins=30, edgecolor='k')
plt.title('Temperature Distribution')
plt.xlabel('Temperature')
plt.ylabel('Frequency')

plt.subplot(1, 2, 2)
plt.hist(data['Humidity'], bins=30, edgecolor='k')
plt.title('Humidity Distribution')
plt.xlabel('Humidity')
plt.ylabel('Frequency')

plt.tight_layout()
plt.show()

# Check for data consistency
data['DateTime'] = pd.to_datetime(data['Date'] + ' ' + data['Time'], errors='coerce')
print("Missing DateTime values:", data['DateTime'].isnull().sum())
data = data.dropna(subset=['DateTime'])

data['Year'] = data['DateTime'].dt.year
data['Month'] = data['DateTime'].dt.month
data['Day'] = data['DateTime'].dt.day
data['Hour'] = data['DateTime'].dt.hour
data['Minute'] = data['DateTime'].dt.minute
data = data[['Year', 'Month', 'Day', 'Hour', 'Minute', 'Temperature', 'Humidity']]


# Plot time series of Temperature and Humidity
plt.figure(figsize=(14, 7))
plt.subplot(2, 1, 1)
#plt.plot(data['DateTime'], data['Temperature'], label='Temperature') #The DateTime column does not exist anymore. Replace with a suitable x-axis variable or a range of values.
plt.plot(range(len(data['Temperature'])), data['Temperature'], label='Temperature') # In this case, using the index as x-axis
plt.title('Temperature over Time')
plt.xlabel('Index') # Changed from 'DateTime' to 'Index'
plt.ylabel('Temperature')
plt.legend()

plt.subplot(2, 1, 2)
#plt.plot(data['DateTime'], data['Humidity'], label='Humidity', color='orange') #The DateTime column does not exist anymore. Replace with a suitable x-axis variable or a range of values.
plt.plot(range(len(data['Humidity'])), data['Humidity'], label='Humidity', color='orange') # In this case, using the index as x-axis
plt.title('Humidity over Time')
plt.xlabel('Index') # Changed from 'DateTime' to 'Index'
plt.ylabel('Humidity')
plt.legend()

plt.tight_layout()
plt.show()
No description has been provided for this image
Missing DateTime values: 0
No description has been provided for this image

Comparison of Different ML Techniques

In [ ]:
# Normalize features
scaler = MinMaxScaler()
data[['Temperature', 'Humidity']] = scaler.fit_transform(data[['Temperature', 'Humidity']])
data[['Year', 'Month', 'Day', 'Hour', 'Minute']] = StandardScaler().fit_transform(data[['Year', 'Month', 'Day', 'Hour', 'Minute']])

# Prepare sequences for time series
def create_sequences(data, seq_length):
    X, y_temp, y_humid = [], [], []
    for i in range(len(data) - seq_length):
        seq = data.iloc[i:i + seq_length]
        X.append(seq[['Year', 'Month', 'Day', 'Hour', 'Minute', 'Temperature', 'Humidity']].values)
        y_temp.append(data.iloc[i + seq_length]['Temperature'])
        y_humid.append(data.iloc[i + seq_length]['Humidity'])
    return np.array(X), np.array(y_temp), np.array(y_humid)

SEQ_LENGTH = 100
X, y_temp, y_humid = create_sequences(data, SEQ_LENGTH)
X_train, X_test, y_train_temp, y_test_temp, y_train_humid, y_test_humid = train_test_split(X, y_temp, y_humid, test_size=0.2, random_state=42)

# Reshape data for non-sequential models
X_train_reshaped = X_train.reshape(X_train.shape[0], -1)
X_test_reshaped = X_test.reshape(X_test.shape[0], -1)

# Confirm the shape of X_test
print(f"Shape of X_test: {X_test.shape}")  # Should output something like (N, 100, 7)

# Define and train the LSTM model for temperature prediction
model_temp = Sequential([
    LSTM(50, activation='relu', input_shape=(SEQ_LENGTH, X.shape[2])),
    Dense(1)
])
model_temp.compile(optimizer='adam', loss='mse')
history_temp = model_temp.fit(X_train, y_train_temp, epochs=50, validation_split=0.2, verbose=1)

# Define and train the LSTM model for humidity prediction
model_humid = Sequential([
    LSTM(50, activation='relu', input_shape=(SEQ_LENGTH, X.shape[2])),
    Dense(1)
])
model_humid.compile(optimizer='adam', loss='mse')
history_humid = model_humid.fit(X_train, y_train_humid, epochs=50, validation_split=0.2, verbose=1)

# Additional Models: GRU, BiLSTM, CNN for Sequence Data, Transformer, SVR, XGBoost, ARIMA, ANN, RNN

# GRU Model
model_gru_temp = Sequential([
    GRU(50, activation='relu', input_shape=(SEQ_LENGTH, X.shape[2])),
    Dense(1)
])
model_gru_temp.compile(optimizer='adam', loss='mse')
history_gru_temp = model_gru_temp.fit(X_train, y_train_temp, epochs=50, validation_split=0.2, verbose=1)

model_gru_humid = Sequential([
    GRU(50, activation='relu', input_shape=(SEQ_LENGTH, X.shape[2])),
    Dense(1)
])
model_gru_humid.compile(optimizer='adam', loss='mse')
history_gru_humid = model_gru_humid.fit(X_train, y_train_humid, epochs=50, validation_split=0.2, verbose=1)

# Bidirectional LSTM Model
model_bilstm_temp = Sequential([
    Bidirectional(LSTM(50, activation='relu'), input_shape=(SEQ_LENGTH, X.shape[2])),
    Dense(1)
])
model_bilstm_temp.compile(optimizer='adam', loss='mse')
history_bilstm_temp = model_bilstm_temp.fit(X_train, y_train_temp, epochs=50, validation_split=0.2, verbose=1)

model_bilstm_humid = Sequential([
    Bidirectional(LSTM(50, activation='relu'), input_shape=(SEQ_LENGTH, X.shape[2])),
    Dense(1)
])
model_bilstm_humid.compile(optimizer='adam', loss='mse')
history_bilstm_humid = model_bilstm_humid.fit(X_train, y_train_humid, epochs=50, validation_split=0.2, verbose=1)

# CNN for Sequence Data
model_cnn_temp = Sequential([
    Conv1D(64, kernel_size=2, activation='relu', input_shape=(SEQ_LENGTH, X.shape[2])),
    Flatten(),
    Dense(1)
])
model_cnn_temp.compile(optimizer='adam', loss='mse')
history_cnn_temp = model_cnn_temp.fit(X_train, y_train_temp, epochs=50, validation_split=0.2, verbose=1)

model_cnn_humid = Sequential([
    Conv1D(64, kernel_size=2, activation='relu', input_shape=(SEQ_LENGTH, X.shape[2])),
    Flatten(),
    Dense(1)
])
model_cnn_humid.compile(optimizer='adam', loss='mse')
history_cnn_humid = model_cnn_humid.fit(X_train, y_train_humid, epochs=50, validation_split=0.2, verbose=1)

# Transformer Model
def transformer_model(input_shape):
    inputs = Input(shape=input_shape)
    x = Attention()([inputs, inputs])
    x = Dense(50, activation='relu')(x)
    x = Flatten()(x)
    outputs = Dense(1)(x)
    model = Model(inputs, outputs)
    return model

model_transformer_temp = transformer_model((SEQ_LENGTH, X.shape[2]))
model_transformer_temp.compile(optimizer='adam', loss='mse')
history_transformer_temp = model_transformer_temp.fit(X_train, y_train_temp, epochs=50, validation_split=0.2, verbose=1)

model_transformer_humid = transformer_model((SEQ_LENGTH, X.shape[2]))
model_transformer_humid.compile(optimizer='adam', loss='mse')
history_transformer_humid = model_transformer_humid.fit(X_train, y_train_humid, epochs=50, validation_split=0.2, verbose=1)

# Simple Artificial Neural Network (ANN)
model_ann_temp = Sequential([
    Dense(64, activation='relu', input_shape=(X_train_reshaped.shape[1],)),
    Dense(32, activation='relu'),
    Dense(1)
])
model_ann_temp.compile(optimizer='adam', loss='mse')
history_ann_temp = model_ann_temp.fit(X_train_reshaped, y_train_temp, epochs=50, validation_split=0.2, verbose=1)

model_ann_humid = Sequential([
    Dense(64, activation='relu', input_shape=(X_train_reshaped.shape[1],)),
    Dense(32, activation='relu'),
    Dense(1)
])
model_ann_humid.compile(optimizer='adam', loss='mse')
history_ann_humid = model_ann_humid.fit(X_train_reshaped, y_train_humid, epochs=50, validation_split=0.2, verbose=1)

# Recurrent Neural Network (SimpleRNN)
model_rnn_temp = Sequential([
    SimpleRNN(50, activation='relu', input_shape=(SEQ_LENGTH, X.shape[2])),
    Dense(1)
])
model_rnn_temp.compile(optimizer='adam', loss='mse')
history_rnn_temp = model_rnn_temp.fit(X_train, y_train_temp, epochs=50, validation_split=0.2, verbose=1)

model_rnn_humid = Sequential([
    SimpleRNN(50, activation='relu', input_shape=(SEQ_LENGTH, X.shape[2])),
    Dense(1)
])
model_rnn_humid.compile(optimizer='adam', loss='mse')
history_rnn_humid = model_rnn_humid.fit(X_train, y_train_humid, epochs=50, validation_split=0.2, verbose=1)

# Support Vector Regressor (SVR)
svr_temp = SVR(kernel='rbf')
svr_humid = SVR(kernel='rbf')

svr_temp.fit(X_train_reshaped, y_train_temp)
svr_humid.fit(X_train_reshaped, y_train_humid)

y_pred_temp_svr = svr_temp.predict(X_test_reshaped)
y_pred_humid_svr = svr_humid.predict(X_test_reshaped)

# XGBoost Regressor
xgb_temp = XGBRegressor(n_estimators=100, objective='reg:squarederror')
xgb_humid = XGBRegressor(n_estimators=100, objective='reg:squarederror')

xgb_temp.fit(X_train_reshaped, y_train_temp)
xgb_humid.fit(X_train_reshaped, y_train_humid)

y_pred_temp_xgb = xgb_temp.predict(X_test_reshaped)
y_pred_humid_xgb = xgb_humid.predict(X_test_reshaped)

# ARIMA Model (Univariate for Temperature and Humidity)
def train_arima(y_train, y_test):
    model_arima = ARIMA(y_train, order=(5, 1, 0))
    model_arima_fit = model_arima.fit()
    y_pred_arima = model_arima_fit.forecast(steps=len(y_test))
    return y_pred_arima

y_pred_temp_arima = train_arima(y_train_temp, y_test_temp)
y_pred_humid_arima = train_arima(y_train_humid, y_test_humid)

# Function to calculate additional metrics
def calculate_metrics(y_true, y_pred):
    mse = mean_squared_error(y_true, y_pred)
    rmse = np.sqrt(mse)
    mae = mean_absolute_error(y_true, y_pred)
    r2 = r2_score(y_true, y_pred)
    return mse, rmse, mae, r2

# Evaluate and compare model performance
models = {
    'LSTM': (y_test_temp, model_temp.predict(X_test), y_test_humid, model_humid.predict(X_test)),
    'GRU': (y_test_temp, model_gru_temp.predict(X_test), y_test_humid, model_gru_humid.predict(X_test)),
    'Bidirectional LSTM': (y_test_temp, model_bilstm_temp.predict(X_test), y_test_humid, model_bilstm_humid.predict(X_test)),
    'CNN': (y_test_temp, model_cnn_temp.predict(X_test), y_test_humid, model_cnn_humid.predict(X_test)),
    'Transformer': (y_test_temp, model_transformer_temp.predict(X_test), y_test_humid, model_transformer_humid.predict(X_test)),
    'ANN': (y_test_temp, model_ann_temp.predict(X_test_reshaped), y_test_humid, model_ann_humid.predict(X_test_reshaped)),
    'RNN': (y_test_temp, model_rnn_temp.predict(X_test), y_test_humid, model_rnn_humid.predict(X_test)),
    'SVR': (y_test_temp, y_pred_temp_svr, y_test_humid, y_pred_humid_svr),
    'XGBoost': (y_test_temp, y_pred_temp_xgb, y_test_humid, y_pred_humid_xgb),
    'ARIMA': (y_test_temp, y_pred_temp_arima, y_test_humid, y_pred_humid_arima)
}

for model_name, (y_test_temp, y_pred_temp, y_test_humid, y_pred_humid) in models.items():
    mse_temp, rmse_temp, mae_temp, r2_temp = calculate_metrics(y_test_temp, y_pred_temp)
    mse_humid, rmse_humid, mae_humid, r2_humid = calculate_metrics(y_test_humid, y_pred_humid)

    print(f"\n--- {model_name} Model Performance ---")
    print(f"Temperature MSE: {mse_temp:.4f}, RMSE: {rmse_temp:.4f}, MAE: {mae_temp:.4f}, R2 Score: {r2_temp:.4f}")
    print(f"Humidity MSE: {mse_humid:.4f}, RMSE: {rmse_humid:.4f}, MAE: {mae_humid:.4f}, R2 Score: {r2_humid:.4f}")

# Visualization for all models
plt.figure(figsize=(14, 28))

model_names = ['LSTM', 'GRU', 'Bidirectional LSTM', 'CNN', 'Transformer', 'ANN', 'RNN', 'SVR', 'XGBoost', 'ARIMA']
preds_temp = [
    model_temp.predict(X_test), model_gru_temp.predict(X_test), model_bilstm_temp.predict(X_test),
    model_cnn_temp.predict(X_test), model_transformer_temp.predict(X_test),
    model_ann_temp.predict(X_test_reshaped), model_rnn_temp.predict(X_test),
    y_pred_temp_svr, y_pred_temp_xgb, y_pred_temp_arima
]
preds_humid = [
    model_humid.predict(X_test), model_gru_humid.predict(X_test), model_bilstm_humid.predict(X_test),
    model_cnn_humid.predict(X_test), model_transformer_humid.predict(X_test),
    model_ann_humid.predict(X_test_reshaped), model_rnn_humid.predict(X_test),
    y_pred_humid_svr, y_pred_humid_xgb, y_pred_humid_arima
]

for i, model_name in enumerate(model_names):
    plt.subplot(10, 2, 2*i+1)
    plt.plot(y_test_temp, label='Actual Temperature')
    plt.plot(preds_temp[i], label=f'Predicted Temperature ({model_name})', linestyle=':')
    plt.title(f'Temperature Prediction ({model_name})')
    plt.xlabel('Sample Index')
    plt.ylabel('Temperature (Normalized)')
    plt.legend()

    plt.subplot(10, 2, 2*i+2)
    plt.plot(y_test_humid, label='Actual Humidity')
    plt.plot(preds_humid[i], label=f'Predicted Humidity ({model_name})', linestyle=':')
    plt.title(f'Humidity Prediction ({model_name})')
    plt.xlabel('Sample Index')
    plt.ylabel('Humidity (Normalized)')
    plt.legend()

plt.tight_layout()
plt.show()
Shape of X_test: (44, 100, 7)
/usr/local/lib/python3.10/dist-packages/keras/src/layers/rnn/rnn.py:204: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.
  super().__init__(**kwargs)
Epoch 1/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 2s 110ms/step - loss: 0.2174 - val_loss: 0.1370
Epoch 2/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 42ms/step - loss: 0.1025 - val_loss: 0.0591
Epoch 3/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 54ms/step - loss: 0.0429 - val_loss: 0.0333
Epoch 4/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 67ms/step - loss: 0.0313 - val_loss: 0.0330
Epoch 5/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 66ms/step - loss: 0.0291 - val_loss: 0.0213
Epoch 6/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 71ms/step - loss: 0.0178 - val_loss: 0.0211
Epoch 7/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 79ms/step - loss: 0.0188 - val_loss: 0.0173
Epoch 8/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 68ms/step - loss: 0.0138 - val_loss: 0.0130
Epoch 9/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 74ms/step - loss: 0.0113 - val_loss: 0.0112
Epoch 10/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step - loss: 0.0111 - val_loss: 0.0102
Epoch 11/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step - loss: 0.0084 - val_loss: 0.0095
Epoch 12/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 45ms/step - loss: 0.0087 - val_loss: 0.0090
Epoch 13/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 53ms/step - loss: 0.0078 - val_loss: 0.0081
Epoch 14/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 44ms/step - loss: 0.0070 - val_loss: 0.0076
Epoch 15/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 42ms/step - loss: 0.0060 - val_loss: 0.0073
Epoch 16/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step - loss: 0.0075 - val_loss: 0.0070
Epoch 17/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - loss: 0.0080 - val_loss: 0.0068
Epoch 18/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 42ms/step - loss: 0.0063 - val_loss: 0.0066
Epoch 19/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 42ms/step - loss: 0.0059 - val_loss: 0.0063
Epoch 20/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step - loss: 0.0052 - val_loss: 0.0062
Epoch 21/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 44ms/step - loss: 0.0054 - val_loss: 0.0060
Epoch 22/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 42ms/step - loss: 0.0053 - val_loss: 0.0059
Epoch 23/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 41ms/step - loss: 0.0055 - val_loss: 0.0063
Epoch 24/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 41ms/step - loss: 0.0052 - val_loss: 0.0057
Epoch 25/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 45ms/step - loss: 0.0060 - val_loss: 0.0055
Epoch 26/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 70ms/step - loss: 0.0052 - val_loss: 0.0057
Epoch 27/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 73ms/step - loss: 0.0037 - val_loss: 0.0052
Epoch 28/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 70ms/step - loss: 0.0042 - val_loss: 0.0049
Epoch 29/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 72ms/step - loss: 0.0050 - val_loss: 0.0049
Epoch 30/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 73ms/step - loss: 0.0045 - val_loss: 0.0042
Epoch 31/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 111ms/step - loss: 0.0043 - val_loss: 0.0039
Epoch 32/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 84ms/step - loss: 0.0034 - val_loss: 0.0044
Epoch 33/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 102ms/step - loss: 0.0040 - val_loss: 0.0039
Epoch 34/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 45ms/step - loss: 0.0038 - val_loss: 0.0040
Epoch 35/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 41ms/step - loss: 0.0027 - val_loss: 0.0036
Epoch 36/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 58ms/step - loss: 0.0036 - val_loss: 0.0036
Epoch 37/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 44ms/step - loss: 0.0031 - val_loss: 0.0043
Epoch 38/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 45ms/step - loss: 0.0034 - val_loss: 0.0038
Epoch 39/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - loss: 0.0033 - val_loss: 0.0036
Epoch 40/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - loss: 0.0029 - val_loss: 0.0036
Epoch 41/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step - loss: 0.0031 - val_loss: 0.0033
Epoch 42/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 58ms/step - loss: 0.0028 - val_loss: 0.0031
Epoch 43/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 84ms/step - loss: 765.4301 - val_loss: 0.0033
Epoch 44/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 78ms/step - loss: 0.0027 - val_loss: 0.0036
Epoch 45/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step - loss: 0.0028 - val_loss: 0.0039
Epoch 46/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 57ms/step - loss: 0.0029 - val_loss: 0.0039
Epoch 47/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 46ms/step - loss: 0.0031 - val_loss: 0.0040
Epoch 48/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 44ms/step - loss: 0.0026 - val_loss: 0.0039
Epoch 49/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 44ms/step - loss: 0.0030 - val_loss: 0.0039
Epoch 50/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 47ms/step - loss: 0.0029 - val_loss: 0.0038
Epoch 1/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 7s 565ms/step - loss: 0.0197 - val_loss: 0.0043
Epoch 2/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 77ms/step - loss: 0.0041 - val_loss: 0.0024
Epoch 3/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 97ms/step - loss: 0.0021 - val_loss: 0.0024
Epoch 4/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 44ms/step - loss: 0.0024 - val_loss: 0.0018
Epoch 5/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - loss: 0.0016 - val_loss: 0.0010
Epoch 6/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 42ms/step - loss: 9.2647e-04 - val_loss: 8.7336e-04
Epoch 7/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - loss: 6.9592e-04 - val_loss: 7.5505e-04
Epoch 8/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 44ms/step - loss: 7.5054e-04 - val_loss: 6.2536e-04
Epoch 9/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 60ms/step - loss: 5.5258e-04 - val_loss: 5.7104e-04
Epoch 10/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 46ms/step - loss: 5.1190e-04 - val_loss: 6.7359e-04
Epoch 11/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 67ms/step - loss: 4.1128e-04 - val_loss: 8.4431e-04
Epoch 12/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 82ms/step - loss: 4.7969e-04 - val_loss: 7.3593e-04
Epoch 13/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 45ms/step - loss: 4.2294e-04 - val_loss: 6.6688e-04
Epoch 14/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 79ms/step - loss: 4.2601e-04 - val_loss: 6.6135e-04
Epoch 15/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step - loss: 4.1271e-04 - val_loss: 5.9554e-04
Epoch 16/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step - loss: 3.3592e-04 - val_loss: 5.8639e-04
Epoch 17/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 64ms/step - loss: 4.9727e-04 - val_loss: 6.6255e-04
Epoch 18/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step - loss: 4.0106e-04 - val_loss: 5.9719e-04
Epoch 19/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 45ms/step - loss: 3.7805e-04 - val_loss: 5.8831e-04
Epoch 20/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 51ms/step - loss: 3.7993e-04 - val_loss: 5.6213e-04
Epoch 21/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 55ms/step - loss: 4.0298e-04 - val_loss: 5.8307e-04
Epoch 22/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 52ms/step - loss: 3.9114e-04 - val_loss: 5.9259e-04
Epoch 23/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 54ms/step - loss: 3.6900e-04 - val_loss: 5.6467e-04
Epoch 24/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - loss: 3.8331e-04 - val_loss: 5.7039e-04
Epoch 25/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 52ms/step - loss: 3.2578e-04 - val_loss: 6.4833e-04
Epoch 26/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step - loss: 3.4861e-04 - val_loss: 6.0785e-04
Epoch 27/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 44ms/step - loss: 3.5595e-04 - val_loss: 5.6910e-04
Epoch 28/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - loss: 3.1741e-04 - val_loss: 6.5443e-04
Epoch 29/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 71ms/step - loss: 3.7065e-04 - val_loss: 5.9125e-04
Epoch 30/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 44ms/step - loss: 3.4821e-04 - val_loss: 5.4444e-04
Epoch 31/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 56ms/step - loss: 3.4524e-04 - val_loss: 5.1945e-04
Epoch 32/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 98ms/step - loss: 3.8499e-04 - val_loss: 5.8240e-04
Epoch 33/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 76ms/step - loss: 4.0890e-04 - val_loss: 5.6525e-04
Epoch 34/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 71ms/step - loss: 3.8775e-04 - val_loss: 5.5212e-04
Epoch 35/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 88ms/step - loss: 3.1965e-04 - val_loss: 5.8655e-04
Epoch 36/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 89ms/step - loss: 4.1176e-04 - val_loss: 5.5179e-04
Epoch 37/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 55ms/step - loss: 3.5216e-04 - val_loss: 5.4770e-04
Epoch 38/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - loss: 3.1787e-04 - val_loss: 5.5830e-04
Epoch 39/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - loss: 3.7560e-04 - val_loss: 5.9857e-04
Epoch 40/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 44ms/step - loss: 3.8309e-04 - val_loss: 5.7760e-04
Epoch 41/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 58ms/step - loss: 3.5351e-04 - val_loss: 5.1776e-04
Epoch 42/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 58ms/step - loss: 3.2774e-04 - val_loss: 6.2961e-04
Epoch 43/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step - loss: 3.5911e-04 - val_loss: 6.0126e-04
Epoch 44/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 67ms/step - loss: 2.8423e-04 - val_loss: 5.3386e-04
Epoch 45/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 44ms/step - loss: 3.6795e-04 - val_loss: 6.2375e-04
Epoch 46/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 48ms/step - loss: 3.7571e-04 - val_loss: 6.1244e-04
Epoch 47/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 54ms/step - loss: 3.0814e-04 - val_loss: 5.3247e-04
Epoch 48/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 44ms/step - loss: 3.6056e-04 - val_loss: 6.0977e-04
Epoch 49/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 58ms/step - loss: 3.0234e-04 - val_loss: 5.9378e-04
Epoch 50/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 90ms/step - loss: 3.3805e-04 - val_loss: 5.5064e-04
Epoch 1/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 4s 210ms/step - loss: 0.2286 - val_loss: 0.1758
Epoch 2/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 66ms/step - loss: 0.1470 - val_loss: 0.1227
Epoch 3/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 90ms/step - loss: 0.1056 - val_loss: 0.0859
Epoch 4/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 110ms/step - loss: 0.0832 - val_loss: 0.0648
Epoch 5/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 133ms/step - loss: 0.0483 - val_loss: 0.0571
Epoch 6/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 127ms/step - loss: 0.0514 - val_loss: 0.0537
Epoch 7/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 135ms/step - loss: 0.0477 - val_loss: 0.0481
Epoch 8/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 140ms/step - loss: 0.0432 - val_loss: 0.0424
Epoch 9/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 105ms/step - loss: 0.0407 - val_loss: 0.0381
Epoch 10/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 92ms/step - loss: 0.0327 - val_loss: 0.0350
Epoch 11/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 63ms/step - loss: 0.0334 - val_loss: 0.0321
Epoch 12/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 60ms/step - loss: 0.0283 - val_loss: 0.0293
Epoch 13/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 59ms/step - loss: 0.0237 - val_loss: 0.0266
Epoch 14/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 60ms/step - loss: 0.0239 - val_loss: 0.0234
Epoch 15/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 58ms/step - loss: 0.0178 - val_loss: 0.0205
Epoch 16/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 58ms/step - loss: 0.0173 - val_loss: 0.0182
Epoch 17/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 61ms/step - loss: 0.0141 - val_loss: 0.0155
Epoch 18/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 58ms/step - loss: 0.0093 - val_loss: 0.0133
Epoch 19/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 57ms/step - loss: 0.0084 - val_loss: 0.0115
Epoch 20/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 57ms/step - loss: 0.0079 - val_loss: 0.0100
Epoch 21/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 58ms/step - loss: 0.0072 - val_loss: 0.0093
Epoch 22/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 56ms/step - loss: 0.0061 - val_loss: 0.0083
Epoch 23/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 57ms/step - loss: 0.0066 - val_loss: 0.0075
Epoch 24/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 56ms/step - loss: 0.0051 - val_loss: 0.0070
Epoch 25/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 61ms/step - loss: 0.0047 - val_loss: 0.0065
Epoch 26/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 65ms/step - loss: 0.0049 - val_loss: 0.0060
Epoch 27/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 55ms/step - loss: 0.0048 - val_loss: 0.0057
Epoch 28/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 63ms/step - loss: 0.0047 - val_loss: 0.0053
Epoch 29/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 63ms/step - loss: 0.0042 - val_loss: 0.0050
Epoch 30/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 58ms/step - loss: 0.0044 - val_loss: 0.0049
Epoch 31/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 63ms/step - loss: 0.0037 - val_loss: 0.0047
Epoch 32/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 60ms/step - loss: 0.0036 - val_loss: 0.0048
Epoch 33/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 64ms/step - loss: 0.0038 - val_loss: 0.0046
Epoch 34/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 61ms/step - loss: 0.0038 - val_loss: 0.0045
Epoch 35/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 87ms/step - loss: 0.0031 - val_loss: 0.0043
Epoch 36/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 91ms/step - loss: 0.0033 - val_loss: 0.0040
Epoch 37/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 85ms/step - loss: 0.0031 - val_loss: 0.0039
Epoch 38/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 89ms/step - loss: 0.0030 - val_loss: 0.0039
Epoch 39/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 88ms/step - loss: 0.0031 - val_loss: 0.0036
Epoch 40/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 89ms/step - loss: 0.0033 - val_loss: 0.0035
Epoch 41/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 70ms/step - loss: 0.0027 - val_loss: 0.0034
Epoch 42/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 57ms/step - loss: 0.0029 - val_loss: 0.0035
Epoch 43/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 57ms/step - loss: 0.0028 - val_loss: 0.0036
Epoch 44/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 60ms/step - loss: 0.0029 - val_loss: 0.0035
Epoch 45/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 61ms/step - loss: 0.0030 - val_loss: 0.0034
Epoch 46/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 61ms/step - loss: 0.0029 - val_loss: 0.0034
Epoch 47/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 58ms/step - loss: 0.0025 - val_loss: 0.0032
Epoch 48/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 62ms/step - loss: 0.0024 - val_loss: 0.0031
Epoch 49/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 56ms/step - loss: 0.0023 - val_loss: 0.0034
Epoch 50/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 58ms/step - loss: 0.0031 - val_loss: 0.0032
Epoch 1/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 3s 129ms/step - loss: 0.0097 - val_loss: 0.0023
Epoch 2/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 59ms/step - loss: 0.0019 - val_loss: 0.0012
Epoch 3/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 65ms/step - loss: 0.0011 - val_loss: 0.0012
Epoch 4/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 56ms/step - loss: 0.0012 - val_loss: 7.3132e-04
Epoch 5/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 62ms/step - loss: 8.9586e-04 - val_loss: 5.5832e-04
Epoch 6/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 55ms/step - loss: 6.3542e-04 - val_loss: 3.3891e-04
Epoch 7/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 58ms/step - loss: 6.7030e-04 - val_loss: 3.7915e-04
Epoch 8/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 60ms/step - loss: 5.3575e-04 - val_loss: 4.6083e-04
Epoch 9/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 59ms/step - loss: 4.7418e-04 - val_loss: 5.1554e-04
Epoch 10/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 58ms/step - loss: 4.0566e-04 - val_loss: 4.6008e-04
Epoch 11/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 62ms/step - loss: 4.0425e-04 - val_loss: 5.0065e-04
Epoch 12/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 85ms/step - loss: 4.5933e-04 - val_loss: 5.3334e-04
Epoch 13/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 80ms/step - loss: 3.7626e-04 - val_loss: 4.8068e-04
Epoch 14/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 102ms/step - loss: 3.7827e-04 - val_loss: 5.3000e-04
Epoch 15/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 92ms/step - loss: 3.6887e-04 - val_loss: 5.3902e-04
Epoch 16/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 86ms/step - loss: 4.2376e-04 - val_loss: 4.8741e-04
Epoch 17/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 83ms/step - loss: 4.0194e-04 - val_loss: 5.2577e-04
Epoch 18/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 57ms/step - loss: 3.6639e-04 - val_loss: 5.1680e-04
Epoch 19/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 55ms/step - loss: 3.3778e-04 - val_loss: 5.2618e-04
Epoch 20/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 64ms/step - loss: 3.7698e-04 - val_loss: 5.0672e-04
Epoch 21/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 62ms/step - loss: 3.6510e-04 - val_loss: 6.3779e-04
Epoch 22/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 56ms/step - loss: 3.9091e-04 - val_loss: 4.8827e-04
Epoch 23/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 63ms/step - loss: 4.0840e-04 - val_loss: 6.0910e-04
Epoch 24/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 57ms/step - loss: 2.9982e-04 - val_loss: 5.3923e-04
Epoch 25/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 56ms/step - loss: 3.8770e-04 - val_loss: 5.3016e-04
Epoch 26/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 63ms/step - loss: 2.9571e-04 - val_loss: 6.1871e-04
Epoch 27/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 59ms/step - loss: 2.6946e-04 - val_loss: 5.3642e-04
Epoch 28/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 62ms/step - loss: 3.3434e-04 - val_loss: 5.8954e-04
Epoch 29/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 61ms/step - loss: 3.4915e-04 - val_loss: 5.6770e-04
Epoch 30/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 58ms/step - loss: 3.2833e-04 - val_loss: 5.9943e-04
Epoch 31/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 62ms/step - loss: 3.2903e-04 - val_loss: 5.1574e-04
Epoch 32/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 64ms/step - loss: 3.8013e-04 - val_loss: 5.6834e-04
Epoch 33/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 65ms/step - loss: 3.4723e-04 - val_loss: 5.1962e-04
Epoch 34/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 58ms/step - loss: 3.0699e-04 - val_loss: 6.8539e-04
Epoch 35/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 67ms/step - loss: 3.5827e-04 - val_loss: 4.9922e-04
Epoch 36/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 57ms/step - loss: 3.4312e-04 - val_loss: 6.5161e-04
Epoch 37/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 63ms/step - loss: 3.5067e-04 - val_loss: 5.2721e-04
Epoch 38/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 61ms/step - loss: 3.7089e-04 - val_loss: 6.0619e-04
Epoch 39/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 62ms/step - loss: 3.3841e-04 - val_loss: 6.7682e-04
Epoch 40/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 60ms/step - loss: 3.2378e-04 - val_loss: 6.1151e-04
Epoch 41/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 58ms/step - loss: 3.6945e-04 - val_loss: 5.9251e-04
Epoch 42/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 62ms/step - loss: 2.7138e-04 - val_loss: 6.3632e-04
Epoch 43/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 91ms/step - loss: 2.5070e-04 - val_loss: 6.8907e-04
Epoch 44/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 86ms/step - loss: 2.7608e-04 - val_loss: 6.1547e-04
Epoch 45/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 77ms/step - loss: 3.2581e-04 - val_loss: 5.8252e-04
Epoch 46/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 85ms/step - loss: 2.6949e-04 - val_loss: 6.5230e-04
Epoch 47/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 90ms/step - loss: 3.1181e-04 - val_loss: 5.7784e-04
Epoch 48/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 92ms/step - loss: 2.8253e-04 - val_loss: 6.0751e-04
Epoch 49/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 94ms/step - loss: 3.4354e-04 - val_loss: 6.5129e-04
Epoch 50/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 60ms/step - loss: 3.0260e-04 - val_loss: 5.8269e-04
Epoch 1/50
/usr/local/lib/python3.10/dist-packages/keras/src/layers/rnn/bidirectional.py:107: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.
  super().__init__(**kwargs)
5/5 ━━━━━━━━━━━━━━━━━━━━ 4s 164ms/step - loss: 0.1780 - val_loss: 0.0589
Epoch 2/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 64ms/step - loss: 0.0375 - val_loss: 0.0134
Epoch 3/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 75ms/step - loss: 0.0167 - val_loss: 0.0252
Epoch 4/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 63ms/step - loss: 0.0174 - val_loss: 0.0080
Epoch 5/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 66ms/step - loss: 0.0075 - val_loss: 0.0074
Epoch 6/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 64ms/step - loss: 0.0067 - val_loss: 0.0088
Epoch 7/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 68ms/step - loss: 0.0074 - val_loss: 0.0065
Epoch 8/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 68ms/step - loss: 0.0050 - val_loss: 0.0054
Epoch 9/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 65ms/step - loss: 0.0046 - val_loss: 0.0059
Epoch 10/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 74ms/step - loss: 0.0041 - val_loss: 0.0054
Epoch 11/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 67ms/step - loss: 0.0041 - val_loss: 0.0049
Epoch 12/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 120ms/step - loss: 0.0033 - val_loss: 0.0049
Epoch 13/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 113ms/step - loss: 0.0034 - val_loss: 0.0047
Epoch 14/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 118ms/step - loss: 0.0031 - val_loss: 0.0045
Epoch 15/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 112ms/step - loss: 0.0025 - val_loss: 0.0046
Epoch 16/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 117ms/step - loss: 0.0028 - val_loss: 0.0044
Epoch 17/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 122ms/step - loss: 0.0021 - val_loss: 0.0043
Epoch 18/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 122ms/step - loss: 0.0031 - val_loss: 0.0042
Epoch 19/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 77ms/step - loss: 0.0027 - val_loss: 0.0040
Epoch 20/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 103ms/step - loss: 0.0028 - val_loss: 0.0040
Epoch 21/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 75ms/step - loss: 0.0029 - val_loss: 0.0040
Epoch 22/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 65ms/step - loss: 0.0023 - val_loss: 0.0038
Epoch 23/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 69ms/step - loss: 0.0025 - val_loss: 0.0037
Epoch 24/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 65ms/step - loss: 0.0025 - val_loss: 0.0037
Epoch 25/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 69ms/step - loss: 0.0023 - val_loss: 0.0036
Epoch 26/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 65ms/step - loss: 0.0026 - val_loss: 0.0036
Epoch 27/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 73ms/step - loss: 0.0026 - val_loss: 0.0035
Epoch 28/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 68ms/step - loss: 0.0021 - val_loss: 0.0035
Epoch 29/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 68ms/step - loss: 0.0025 - val_loss: 0.0034
Epoch 30/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 69ms/step - loss: 0.0026 - val_loss: 0.0034
Epoch 31/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 71ms/step - loss: 0.0020 - val_loss: 0.0034
Epoch 32/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 75ms/step - loss: 0.0022 - val_loss: 0.0034
Epoch 33/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 64ms/step - loss: 0.0021 - val_loss: 0.0034
Epoch 34/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 69ms/step - loss: 0.0022 - val_loss: 0.0033
Epoch 35/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 65ms/step - loss: 0.0025 - val_loss: 0.0033
Epoch 36/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 76ms/step - loss: 0.0021 - val_loss: 0.0033
Epoch 37/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 66ms/step - loss: 0.0021 - val_loss: 0.0032
Epoch 38/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 69ms/step - loss: 0.0023 - val_loss: 0.0032
Epoch 39/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 66ms/step - loss: 0.0026 - val_loss: 0.0032
Epoch 40/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 112ms/step - loss: 0.0018 - val_loss: 0.0031
Epoch 41/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 115ms/step - loss: 0.0022 - val_loss: 0.0031
Epoch 42/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 108ms/step - loss: 0.0025 - val_loss: 0.0032
Epoch 43/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 124ms/step - loss: 0.0024 - val_loss: 0.0030
Epoch 44/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 63ms/step - loss: 0.0026 - val_loss: 0.0031
Epoch 45/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 74ms/step - loss: 0.0023 - val_loss: 0.0031
Epoch 46/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 67ms/step - loss: 0.0021 - val_loss: 0.0030
Epoch 47/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 69ms/step - loss: 0.0022 - val_loss: 0.0030
Epoch 48/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 68ms/step - loss: 0.0024 - val_loss: 0.0030
Epoch 49/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 71ms/step - loss: 0.0020 - val_loss: 0.0030
Epoch 50/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 64ms/step - loss: 0.0024 - val_loss: 0.0031
Epoch 1/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 4s 165ms/step - loss: 0.0048 - val_loss: 0.0023
Epoch 2/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 73ms/step - loss: 0.0015 - val_loss: 0.0020
Epoch 3/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 65ms/step - loss: 0.0018 - val_loss: 9.1858e-04
Epoch 4/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 65ms/step - loss: 9.7813e-04 - val_loss: 8.5242e-04
Epoch 5/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 79ms/step - loss: 7.2915e-04 - val_loss: 6.7254e-04
Epoch 6/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 119ms/step - loss: 5.8373e-04 - val_loss: 5.9286e-04
Epoch 7/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 112ms/step - loss: 4.9948e-04 - val_loss: 5.7230e-04
Epoch 8/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 125ms/step - loss: 4.5703e-04 - val_loss: 4.5626e-04
Epoch 9/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 97ms/step - loss: 4.6776e-04 - val_loss: 4.5321e-04
Epoch 10/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 66ms/step - loss: 4.5662e-04 - val_loss: 4.0127e-04
Epoch 11/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 65ms/step - loss: 3.0844e-04 - val_loss: 4.0113e-04
Epoch 12/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 68ms/step - loss: 3.0008e-04 - val_loss: 4.3697e-04
Epoch 13/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 72ms/step - loss: 3.4973e-04 - val_loss: 3.7079e-04
Epoch 14/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 66ms/step - loss: 2.8340e-04 - val_loss: 3.8951e-04
Epoch 15/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 70ms/step - loss: 3.2325e-04 - val_loss: 3.8321e-04
Epoch 16/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 65ms/step - loss: 2.9186e-04 - val_loss: 3.5295e-04
Epoch 17/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 72ms/step - loss: 3.6499e-04 - val_loss: 3.6518e-04
Epoch 18/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 67ms/step - loss: 3.0057e-04 - val_loss: 3.3455e-04
Epoch 19/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 74ms/step - loss: 4.1357e-04 - val_loss: 3.3867e-04
Epoch 20/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 64ms/step - loss: 2.9882e-04 - val_loss: 3.4634e-04
Epoch 21/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 69ms/step - loss: 3.7627e-04 - val_loss: 3.3256e-04
Epoch 22/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 69ms/step - loss: 2.5843e-04 - val_loss: 3.5680e-04
Epoch 23/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 68ms/step - loss: 3.3933e-04 - val_loss: 3.5353e-04
Epoch 24/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 71ms/step - loss: 3.3093e-04 - val_loss: 3.5145e-04
Epoch 25/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 70ms/step - loss: 3.6856e-04 - val_loss: 3.6696e-04
Epoch 26/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 70ms/step - loss: 2.8626e-04 - val_loss: 3.6314e-04
Epoch 27/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 67ms/step - loss: 3.1330e-04 - val_loss: 3.8745e-04
Epoch 28/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 67ms/step - loss: 2.7339e-04 - val_loss: 3.3101e-04
Epoch 29/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 67ms/step - loss: 3.4059e-04 - val_loss: 3.6986e-04
Epoch 30/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 116ms/step - loss: 3.1532e-04 - val_loss: 3.0549e-04
Epoch 31/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 110ms/step - loss: 3.1673e-04 - val_loss: 3.2916e-04
Epoch 32/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 118ms/step - loss: 3.3019e-04 - val_loss: 3.1366e-04
Epoch 33/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 122ms/step - loss: 2.6236e-04 - val_loss: 3.4538e-04
Epoch 34/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 118ms/step - loss: 3.2517e-04 - val_loss: 3.1015e-04
Epoch 35/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 101ms/step - loss: 2.8608e-04 - val_loss: 3.9888e-04
Epoch 36/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 67ms/step - loss: 3.0139e-04 - val_loss: 3.1340e-04
Epoch 37/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 70ms/step - loss: 3.4539e-04 - val_loss: 3.2356e-04
Epoch 38/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 66ms/step - loss: 2.5443e-04 - val_loss: 3.6846e-04
Epoch 39/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 72ms/step - loss: 2.9539e-04 - val_loss: 3.4100e-04
Epoch 40/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 66ms/step - loss: 2.8048e-04 - val_loss: 3.4515e-04
Epoch 41/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 70ms/step - loss: 2.5742e-04 - val_loss: 3.2702e-04
Epoch 42/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 65ms/step - loss: 3.1594e-04 - val_loss: 3.4229e-04
Epoch 43/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 67ms/step - loss: 2.7937e-04 - val_loss: 3.8594e-04
Epoch 44/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 73ms/step - loss: 2.9196e-04 - val_loss: 3.4086e-04
Epoch 45/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 65ms/step - loss: 3.2898e-04 - val_loss: 4.2202e-04
Epoch 46/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 69ms/step - loss: 2.8839e-04 - val_loss: 3.2520e-04
Epoch 47/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 70ms/step - loss: 2.4450e-04 - val_loss: 4.2458e-04
Epoch 48/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 71ms/step - loss: 3.3956e-04 - val_loss: 3.3164e-04
Epoch 49/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 70ms/step - loss: 2.9027e-04 - val_loss: 4.0235e-04
Epoch 50/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 72ms/step - loss: 2.4188e-04 - val_loss: 3.4590e-04
Epoch 1/50
/usr/local/lib/python3.10/dist-packages/keras/src/layers/convolutional/base_conv.py:107: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.
  super().__init__(activity_regularizer=activity_regularizer, **kwargs)
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 48ms/step - loss: 0.2270 - val_loss: 0.0926
Epoch 2/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 0.0767 - val_loss: 0.0769
Epoch 3/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 0.0526 - val_loss: 0.0450
Epoch 4/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.0278 - val_loss: 0.0423
Epoch 5/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 0.0307 - val_loss: 0.0207
Epoch 6/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0130 - val_loss: 0.0164
Epoch 7/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0117 - val_loss: 0.0112
Epoch 8/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0079 - val_loss: 0.0110
Epoch 9/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 0.0061 - val_loss: 0.0089
Epoch 10/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0044 - val_loss: 0.0057
Epoch 11/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 0.0040 - val_loss: 0.0063
Epoch 12/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0033 - val_loss: 0.0072
Epoch 13/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0035 - val_loss: 0.0064
Epoch 14/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 22ms/step - loss: 0.0037 - val_loss: 0.0066
Epoch 15/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0031 - val_loss: 0.0058
Epoch 16/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 0.0028 - val_loss: 0.0049
Epoch 17/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0025 - val_loss: 0.0050
Epoch 18/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 0.0023 - val_loss: 0.0046
Epoch 19/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 21ms/step - loss: 0.0019 - val_loss: 0.0046
Epoch 20/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0017 - val_loss: 0.0043
Epoch 21/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 22ms/step - loss: 0.0018 - val_loss: 0.0043
Epoch 22/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0017 - val_loss: 0.0045
Epoch 23/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 0.0018 - val_loss: 0.0040
Epoch 24/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0018 - val_loss: 0.0051
Epoch 25/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0026 - val_loss: 0.0055
Epoch 26/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0023 - val_loss: 0.0046
Epoch 27/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0016 - val_loss: 0.0053
Epoch 28/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - loss: 0.0020 - val_loss: 0.0056
Epoch 29/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0027 - val_loss: 0.0051
Epoch 30/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0019 - val_loss: 0.0052
Epoch 31/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 0.0021 - val_loss: 0.0039
Epoch 32/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0013 - val_loss: 0.0047
Epoch 33/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0011 - val_loss: 0.0038
Epoch 34/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0012 - val_loss: 0.0038
Epoch 35/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 8.3365e-04 - val_loss: 0.0043
Epoch 36/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 8.4295e-04 - val_loss: 0.0039
Epoch 37/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 7.5557e-04 - val_loss: 0.0039
Epoch 38/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 8.8004e-04 - val_loss: 0.0042
Epoch 39/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 9.2670e-04 - val_loss: 0.0043
Epoch 40/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 7.2197e-04 - val_loss: 0.0039
Epoch 41/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 7.0027e-04 - val_loss: 0.0040
Epoch 42/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 7.8434e-04 - val_loss: 0.0043
Epoch 43/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 7.5543e-04 - val_loss: 0.0041
Epoch 44/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 5.4302e-04 - val_loss: 0.0044
Epoch 45/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 4.9424e-04 - val_loss: 0.0043
Epoch 46/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 6.0492e-04 - val_loss: 0.0043
Epoch 47/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 5.3862e-04 - val_loss: 0.0041
Epoch 48/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 5.5602e-04 - val_loss: 0.0042
Epoch 49/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 4.1688e-04 - val_loss: 0.0040
Epoch 50/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 4.3712e-04 - val_loss: 0.0044
Epoch 1/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 43ms/step - loss: 0.1017 - val_loss: 0.0738
Epoch 2/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0631 - val_loss: 0.0734
Epoch 3/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 0.0481 - val_loss: 0.0239
Epoch 4/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 0.0170 - val_loss: 0.0187
Epoch 5/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 0.0106 - val_loss: 0.0125
Epoch 6/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0115 - val_loss: 0.0084
Epoch 7/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0058 - val_loss: 0.0142
Epoch 8/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0075 - val_loss: 0.0047
Epoch 9/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0034 - val_loss: 0.0058
Epoch 10/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 0.0028 - val_loss: 0.0045
Epoch 11/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0023 - val_loss: 0.0045
Epoch 12/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 21ms/step - loss: 0.0016 - val_loss: 0.0042
Epoch 13/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0013 - val_loss: 0.0040
Epoch 14/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 0.0014 - val_loss: 0.0042
Epoch 15/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 0.0013 - val_loss: 0.0033
Epoch 16/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 9.2146e-04 - val_loss: 0.0035
Epoch 17/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 7.9072e-04 - val_loss: 0.0036
Epoch 18/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 6.8407e-04 - val_loss: 0.0034
Epoch 19/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 6.0997e-04 - val_loss: 0.0035
Epoch 20/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 5.3490e-04 - val_loss: 0.0036
Epoch 21/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 5.0427e-04 - val_loss: 0.0033
Epoch 22/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 4.9029e-04 - val_loss: 0.0032
Epoch 23/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 4.7309e-04 - val_loss: 0.0034
Epoch 24/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 4.1752e-04 - val_loss: 0.0033
Epoch 25/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 3.4328e-04 - val_loss: 0.0036
Epoch 26/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 3.8962e-04 - val_loss: 0.0032
Epoch 27/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 3.2574e-04 - val_loss: 0.0032
Epoch 28/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 3.6312e-04 - val_loss: 0.0032
Epoch 29/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 3.0985e-04 - val_loss: 0.0039
Epoch 30/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 3.6688e-04 - val_loss: 0.0032
Epoch 31/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 3.0324e-04 - val_loss: 0.0032
Epoch 32/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 2.3007e-04 - val_loss: 0.0035
Epoch 33/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 2.5933e-04 - val_loss: 0.0031
Epoch 34/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 2.5943e-04 - val_loss: 0.0031
Epoch 35/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 2.8332e-04 - val_loss: 0.0035
Epoch 36/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 2.6120e-04 - val_loss: 0.0034
Epoch 37/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 2.5375e-04 - val_loss: 0.0032
Epoch 38/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 2.2615e-04 - val_loss: 0.0031
Epoch 39/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 1.8712e-04 - val_loss: 0.0033
Epoch 40/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 1.6540e-04 - val_loss: 0.0030
Epoch 41/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 2.1310e-04 - val_loss: 0.0034
Epoch 42/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 1.4861e-04 - val_loss: 0.0032
Epoch 43/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 1.1967e-04 - val_loss: 0.0030
Epoch 44/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 1.3759e-04 - val_loss: 0.0031
Epoch 45/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 1.2204e-04 - val_loss: 0.0033
Epoch 46/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 1.2269e-04 - val_loss: 0.0033
Epoch 47/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 1.7761e-04 - val_loss: 0.0032
Epoch 48/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 1.5512e-04 - val_loss: 0.0031
Epoch 49/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 1.8741e-04 - val_loss: 0.0030
Epoch 50/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 2.9340e-04 - val_loss: 0.0030
Epoch 1/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 52ms/step - loss: 0.2171 - val_loss: 0.0249
Epoch 2/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0419 - val_loss: 0.0309
Epoch 3/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0454 - val_loss: 0.0177
Epoch 4/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 0.0220 - val_loss: 0.0219
Epoch 5/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0173 - val_loss: 0.0261
Epoch 6/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 0.0181 - val_loss: 0.0183
Epoch 7/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0135 - val_loss: 0.0128
Epoch 8/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 0.0121 - val_loss: 0.0064
Epoch 9/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0064 - val_loss: 0.0048
Epoch 10/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0053 - val_loss: 0.0053
Epoch 11/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0042 - val_loss: 0.0055
Epoch 12/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.0039 - val_loss: 0.0054
Epoch 13/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 21ms/step - loss: 0.0040 - val_loss: 0.0047
Epoch 14/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 22ms/step - loss: 0.0026 - val_loss: 0.0046
Epoch 15/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0031 - val_loss: 0.0045
Epoch 16/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 22ms/step - loss: 0.0027 - val_loss: 0.0047
Epoch 17/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0031 - val_loss: 0.0044
Epoch 18/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 32ms/step - loss: 0.0025 - val_loss: 0.0041
Epoch 19/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 22ms/step - loss: 0.0023 - val_loss: 0.0038
Epoch 20/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 0.0022 - val_loss: 0.0038
Epoch 21/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 21ms/step - loss: 0.0023 - val_loss: 0.0041
Epoch 22/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 21ms/step - loss: 0.0021 - val_loss: 0.0040
Epoch 23/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 21ms/step - loss: 0.0024 - val_loss: 0.0037
Epoch 24/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0022 - val_loss: 0.0037
Epoch 25/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 22ms/step - loss: 0.0021 - val_loss: 0.0037
Epoch 26/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 21ms/step - loss: 0.0017 - val_loss: 0.0041
Epoch 27/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0020 - val_loss: 0.0035
Epoch 28/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 0.0022 - val_loss: 0.0036
Epoch 29/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 0.0020 - val_loss: 0.0038
Epoch 30/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0017 - val_loss: 0.0038
Epoch 31/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0018 - val_loss: 0.0035
Epoch 32/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0019 - val_loss: 0.0034
Epoch 33/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0018 - val_loss: 0.0033
Epoch 34/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 0.0016 - val_loss: 0.0034
Epoch 35/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0016 - val_loss: 0.0034
Epoch 36/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0013 - val_loss: 0.0032
Epoch 37/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 0.0017 - val_loss: 0.0036
Epoch 38/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0015 - val_loss: 0.0032
Epoch 39/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0016 - val_loss: 0.0037
Epoch 40/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0016 - val_loss: 0.0035
Epoch 41/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0015 - val_loss: 0.0033
Epoch 42/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0015 - val_loss: 0.0033
Epoch 43/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0014 - val_loss: 0.0038
Epoch 44/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 0.0017 - val_loss: 0.0034
Epoch 45/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0015 - val_loss: 0.0032
Epoch 46/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0014 - val_loss: 0.0037
Epoch 47/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 0.0014 - val_loss: 0.0033
Epoch 48/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0015 - val_loss: 0.0032
Epoch 49/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0012 - val_loss: 0.0032
Epoch 50/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0012 - val_loss: 0.0033
Epoch 1/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 48ms/step - loss: 0.0444 - val_loss: 0.0212
Epoch 2/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 0.0220 - val_loss: 0.0132
Epoch 3/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.0151 - val_loss: 0.0127
Epoch 4/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0091 - val_loss: 0.0070
Epoch 5/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0058 - val_loss: 0.0062
Epoch 6/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0047 - val_loss: 0.0057
Epoch 7/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.0038 - val_loss: 0.0040
Epoch 8/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0039 - val_loss: 0.0033
Epoch 9/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0023 - val_loss: 0.0043
Epoch 10/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 0.0027 - val_loss: 0.0018
Epoch 11/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 0.0015 - val_loss: 0.0027
Epoch 12/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0014 - val_loss: 0.0021
Epoch 13/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0013 - val_loss: 0.0047
Epoch 14/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0019 - val_loss: 0.0022
Epoch 15/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0011 - val_loss: 0.0027
Epoch 16/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0011 - val_loss: 0.0030
Epoch 17/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 8.9862e-04 - val_loss: 0.0034
Epoch 18/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 9.9630e-04 - val_loss: 0.0020
Epoch 19/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - loss: 7.6646e-04 - val_loss: 0.0021
Epoch 20/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 7.0278e-04 - val_loss: 0.0023
Epoch 21/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 6.4480e-04 - val_loss: 0.0023
Epoch 22/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 5.9669e-04 - val_loss: 0.0027
Epoch 23/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 5.7335e-04 - val_loss: 0.0027
Epoch 24/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 6.3140e-04 - val_loss: 0.0023
Epoch 25/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 5.3928e-04 - val_loss: 0.0018
Epoch 26/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 5.5678e-04 - val_loss: 0.0020
Epoch 27/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - loss: 4.4080e-04 - val_loss: 0.0022
Epoch 28/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 5.5211e-04 - val_loss: 0.0021
Epoch 29/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 8.7456e-04 - val_loss: 0.0022
Epoch 30/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 7.8867e-04 - val_loss: 0.0020
Epoch 31/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 0.0011 - val_loss: 0.0031
Epoch 32/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.0014 - val_loss: 0.0036
Epoch 33/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0011 - val_loss: 0.0032
Epoch 34/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 0.0021 - val_loss: 0.0034
Epoch 35/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 0.0032 - val_loss: 0.0028
Epoch 36/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 0.0026 - val_loss: 0.0041
Epoch 37/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 0.0027 - val_loss: 0.0038
Epoch 38/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 0.0025 - val_loss: 0.0057
Epoch 39/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 0.0022 - val_loss: 0.0043
Epoch 40/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 0.0017 - val_loss: 0.0022
Epoch 41/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 0.0011 - val_loss: 0.0025
Epoch 42/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 0.0014 - val_loss: 0.0030
Epoch 43/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 9.1209e-04 - val_loss: 0.0032
Epoch 44/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 6.8688e-04 - val_loss: 0.0041
Epoch 45/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 6.7994e-04 - val_loss: 0.0032
Epoch 46/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 6.7307e-04 - val_loss: 0.0024
Epoch 47/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 3.7984e-04 - val_loss: 0.0026
Epoch 48/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 2.9605e-04 - val_loss: 0.0025
Epoch 49/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 2.8811e-04 - val_loss: 0.0030
Epoch 50/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 4.8015e-04 - val_loss: 0.0026
Epoch 1/50
/usr/local/lib/python3.10/dist-packages/keras/src/layers/core/dense.py:87: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.
  super().__init__(activity_regularizer=activity_regularizer, **kwargs)
5/5 ━━━━━━━━━━━━━━━━━━━━ 2s 61ms/step - loss: 0.6610 - val_loss: 0.1794
Epoch 2/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.1797 - val_loss: 0.0532
Epoch 3/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.0746 - val_loss: 0.0623
Epoch 4/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0554 - val_loss: 0.0490
Epoch 5/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 0.0334 - val_loss: 0.0272
Epoch 6/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0175 - val_loss: 0.0276
Epoch 7/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 0.0149 - val_loss: 0.0353
Epoch 8/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 0.0121 - val_loss: 0.0303
Epoch 9/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.0077 - val_loss: 0.0225
Epoch 10/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 21ms/step - loss: 0.0063 - val_loss: 0.0225
Epoch 11/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0043 - val_loss: 0.0217
Epoch 12/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - loss: 0.0037 - val_loss: 0.0207
Epoch 13/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 23ms/step - loss: 0.0039 - val_loss: 0.0212
Epoch 14/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0029 - val_loss: 0.0216
Epoch 15/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0027 - val_loss: 0.0214
Epoch 16/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0021 - val_loss: 0.0211
Epoch 17/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0017 - val_loss: 0.0209
Epoch 18/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0015 - val_loss: 0.0204
Epoch 19/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0015 - val_loss: 0.0200
Epoch 20/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0014 - val_loss: 0.0199
Epoch 21/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 0.0010 - val_loss: 0.0198
Epoch 22/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0011 - val_loss: 0.0203
Epoch 23/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 0.0012 - val_loss: 0.0204
Epoch 24/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0011 - val_loss: 0.0201
Epoch 25/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 9.0186e-04 - val_loss: 0.0202
Epoch 26/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 8.3115e-04 - val_loss: 0.0204
Epoch 27/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 9.8379e-04 - val_loss: 0.0200
Epoch 28/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 7.7710e-04 - val_loss: 0.0198
Epoch 29/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 5.7296e-04 - val_loss: 0.0198
Epoch 30/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 5.9020e-04 - val_loss: 0.0198
Epoch 31/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 7.3897e-04 - val_loss: 0.0198
Epoch 32/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 5.1103e-04 - val_loss: 0.0196
Epoch 33/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 5.4716e-04 - val_loss: 0.0197
Epoch 34/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 4.4596e-04 - val_loss: 0.0197
Epoch 35/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 4.2973e-04 - val_loss: 0.0197
Epoch 36/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 4.4015e-04 - val_loss: 0.0197
Epoch 37/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 5.2950e-04 - val_loss: 0.0195
Epoch 38/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 5.0071e-04 - val_loss: 0.0198
Epoch 39/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 4.8294e-04 - val_loss: 0.0198
Epoch 40/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 4.0737e-04 - val_loss: 0.0197
Epoch 41/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 3.7901e-04 - val_loss: 0.0199
Epoch 42/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 4.0296e-04 - val_loss: 0.0200
Epoch 43/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 3.3956e-04 - val_loss: 0.0199
Epoch 44/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 2.4681e-04 - val_loss: 0.0197
Epoch 45/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 2.7650e-04 - val_loss: 0.0195
Epoch 46/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 2.2959e-04 - val_loss: 0.0198
Epoch 47/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 2.4933e-04 - val_loss: 0.0199
Epoch 48/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 2.5094e-04 - val_loss: 0.0199
Epoch 49/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 2.1004e-04 - val_loss: 0.0201
Epoch 50/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 2.0434e-04 - val_loss: 0.0199
Epoch 1/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 1s 42ms/step - loss: 0.1475 - val_loss: 0.0312
Epoch 2/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0588 - val_loss: 0.0221
Epoch 3/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0299 - val_loss: 0.0287
Epoch 4/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0224 - val_loss: 0.0128
Epoch 5/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0124 - val_loss: 0.0081
Epoch 6/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 0.0114 - val_loss: 0.0061
Epoch 7/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0048 - val_loss: 0.0072
Epoch 8/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 0.0043 - val_loss: 0.0064
Epoch 9/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 0.0026 - val_loss: 0.0054
Epoch 10/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 0.0018 - val_loss: 0.0053
Epoch 11/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0014 - val_loss: 0.0052
Epoch 12/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 0.0011 - val_loss: 0.0047
Epoch 13/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 8.5041e-04 - val_loss: 0.0052
Epoch 14/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 6.9990e-04 - val_loss: 0.0054
Epoch 15/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 5.4019e-04 - val_loss: 0.0048
Epoch 16/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 5.0801e-04 - val_loss: 0.0050
Epoch 17/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 3.5608e-04 - val_loss: 0.0051
Epoch 18/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 2.8790e-04 - val_loss: 0.0050
Epoch 19/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 2.5623e-04 - val_loss: 0.0048
Epoch 20/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step - loss: 2.4832e-04 - val_loss: 0.0049
Epoch 21/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 13ms/step - loss: 2.2195e-04 - val_loss: 0.0049
Epoch 22/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 1.7247e-04 - val_loss: 0.0049
Epoch 23/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 1.4855e-04 - val_loss: 0.0050
Epoch 24/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step - loss: 1.3100e-04 - val_loss: 0.0049
Epoch 25/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 1.2019e-04 - val_loss: 0.0049
Epoch 26/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 1.0675e-04 - val_loss: 0.0049
Epoch 27/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 8.3957e-05 - val_loss: 0.0049
Epoch 28/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 8.5094e-05 - val_loss: 0.0050
Epoch 29/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 7.7191e-05 - val_loss: 0.0049
Epoch 30/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 5.6804e-05 - val_loss: 0.0049
Epoch 31/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step - loss: 7.8296e-05 - val_loss: 0.0049
Epoch 32/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 5.6535e-05 - val_loss: 0.0049
Epoch 33/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 6.0680e-05 - val_loss: 0.0050
Epoch 34/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step - loss: 4.4269e-05 - val_loss: 0.0049
Epoch 35/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 3.1694e-05 - val_loss: 0.0050
Epoch 36/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 3.7144e-05 - val_loss: 0.0050
Epoch 37/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 3.1286e-05 - val_loss: 0.0051
Epoch 38/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 3.7118e-05 - val_loss: 0.0050
Epoch 39/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 2.9546e-05 - val_loss: 0.0049
Epoch 40/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 2.8901e-05 - val_loss: 0.0050
Epoch 41/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 17ms/step - loss: 2.1354e-05 - val_loss: 0.0049
Epoch 42/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 2.7530e-05 - val_loss: 0.0051
Epoch 43/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 2.8451e-05 - val_loss: 0.0049
Epoch 44/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 1.9078e-05 - val_loss: 0.0049
Epoch 45/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 1.6847e-05 - val_loss: 0.0049
Epoch 46/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 2.3632e-05 - val_loss: 0.0050
Epoch 47/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 1.8036e-05 - val_loss: 0.0050
Epoch 48/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 1.3934e-05 - val_loss: 0.0050
Epoch 49/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 1.2589e-05 - val_loss: 0.0050
Epoch 50/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 1.8497e-05 - val_loss: 0.0049
Epoch 1/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 2s 131ms/step - loss: 0.2011 - val_loss: 0.0956
Epoch 2/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step - loss: 0.0715 - val_loss: 0.0486
Epoch 3/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 42ms/step - loss: 0.0464 - val_loss: 0.0344
Epoch 4/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 47ms/step - loss: 0.0292 - val_loss: 0.0261
Epoch 5/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 45ms/step - loss: 0.0238 - val_loss: 0.0221
Epoch 6/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 36ms/step - loss: 0.0210 - val_loss: 0.0180
Epoch 7/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0150 - val_loss: 0.0144
Epoch 8/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - loss: 0.0106 - val_loss: 0.0134
Epoch 9/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 28ms/step - loss: 0.0082 - val_loss: 0.0108
Epoch 10/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0067 - val_loss: 0.0088
Epoch 11/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0055 - val_loss: 0.0076
Epoch 12/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - loss: 0.0055 - val_loss: 0.0067
Epoch 13/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 28ms/step - loss: 0.0038 - val_loss: 0.0058
Epoch 14/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0034 - val_loss: 0.0053
Epoch 15/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 0.0038 - val_loss: 0.0048
Epoch 16/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0035 - val_loss: 0.0045
Epoch 17/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 0.0025 - val_loss: 0.0046
Epoch 18/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 28ms/step - loss: 0.0027 - val_loss: 0.0047
Epoch 19/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 0.0024 - val_loss: 0.0044
Epoch 20/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 0.0023 - val_loss: 0.0042
Epoch 21/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 0.0022 - val_loss: 0.0042
Epoch 22/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0024 - val_loss: 0.0042
Epoch 23/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 31ms/step - loss: 0.0023 - val_loss: 0.0040
Epoch 24/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0020 - val_loss: 0.0039
Epoch 25/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 28ms/step - loss: 0.0020 - val_loss: 0.0039
Epoch 26/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - loss: 0.0018 - val_loss: 0.0039
Epoch 27/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 0.0019 - val_loss: 0.0035
Epoch 28/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0021 - val_loss: 0.0034
Epoch 29/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - loss: 0.0019 - val_loss: 0.0034
Epoch 30/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0018 - val_loss: 0.0032
Epoch 31/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - loss: 0.0017 - val_loss: 0.0031
Epoch 32/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 0.0016 - val_loss: 0.0031
Epoch 33/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0016 - val_loss: 0.0031
Epoch 34/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 0.0016 - val_loss: 0.0030
Epoch 35/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - loss: 0.0018 - val_loss: 0.0030
Epoch 36/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0014 - val_loss: 0.0029
Epoch 37/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - loss: 0.0016 - val_loss: 0.0030
Epoch 38/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 0.0016 - val_loss: 0.0029
Epoch 39/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0014 - val_loss: 0.0030
Epoch 40/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 0.0013 - val_loss: 0.0030
Epoch 41/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 28ms/step - loss: 0.0012 - val_loss: 0.0030
Epoch 42/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0014 - val_loss: 0.0029
Epoch 43/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - loss: 0.0015 - val_loss: 0.0029
Epoch 44/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 0.0013 - val_loss: 0.0029
Epoch 45/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - loss: 0.0014 - val_loss: 0.0029
Epoch 46/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 32ms/step - loss: 0.0012 - val_loss: 0.0029
Epoch 47/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - loss: 0.0010 - val_loss: 0.0028
Epoch 48/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 26ms/step - loss: 0.0014 - val_loss: 0.0028
Epoch 49/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 0.0013 - val_loss: 0.0029
Epoch 50/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 28ms/step - loss: 0.0012 - val_loss: 0.0029
Epoch 1/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 2s 105ms/step - loss: 0.0566 - val_loss: 0.0328
Epoch 2/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 44ms/step - loss: 0.0278 - val_loss: 0.0203
Epoch 3/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 40ms/step - loss: 0.0146 - val_loss: 0.0133
Epoch 4/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step - loss: 0.0066 - val_loss: 0.0091
Epoch 5/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 49ms/step - loss: 0.0035 - val_loss: 0.0076
Epoch 6/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 44ms/step - loss: 0.0028 - val_loss: 0.0072
Epoch 7/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 41ms/step - loss: 0.0024 - val_loss: 0.0068
Epoch 8/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step - loss: 0.0018 - val_loss: 0.0065
Epoch 9/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 46ms/step - loss: 0.0014 - val_loss: 0.0061
Epoch 10/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 45ms/step - loss: 0.0012 - val_loss: 0.0056
Epoch 11/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 47ms/step - loss: 0.0011 - val_loss: 0.0051
Epoch 12/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 46ms/step - loss: 8.8872e-04 - val_loss: 0.0048
Epoch 13/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 8.3822e-04 - val_loss: 0.0047
Epoch 14/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 7.6649e-04 - val_loss: 0.0045
Epoch 15/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 7.1898e-04 - val_loss: 0.0044
Epoch 16/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - loss: 7.9470e-04 - val_loss: 0.0045
Epoch 17/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 31ms/step - loss: 7.5968e-04 - val_loss: 0.0042
Epoch 18/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 6.3461e-04 - val_loss: 0.0041
Epoch 19/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 6.2430e-04 - val_loss: 0.0041
Epoch 20/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 5.8142e-04 - val_loss: 0.0039
Epoch 21/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 28ms/step - loss: 5.1831e-04 - val_loss: 0.0039
Epoch 22/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 28ms/step - loss: 5.4782e-04 - val_loss: 0.0038
Epoch 23/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 27ms/step - loss: 5.0897e-04 - val_loss: 0.0038
Epoch 24/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 4.9939e-04 - val_loss: 0.0038
Epoch 25/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 4.6567e-04 - val_loss: 0.0038
Epoch 26/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - loss: 4.4506e-04 - val_loss: 0.0037
Epoch 27/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 4.3628e-04 - val_loss: 0.0038
Epoch 28/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 26ms/step - loss: 4.6819e-04 - val_loss: 0.0037
Epoch 29/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 26ms/step - loss: 4.1473e-04 - val_loss: 0.0038
Epoch 30/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 4.3574e-04 - val_loss: 0.0036
Epoch 31/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 4.0611e-04 - val_loss: 0.0037
Epoch 32/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 26ms/step - loss: 4.0890e-04 - val_loss: 0.0036
Epoch 33/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 3.5014e-04 - val_loss: 0.0038
Epoch 34/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 3.5743e-04 - val_loss: 0.0038
Epoch 35/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 28ms/step - loss: 3.4902e-04 - val_loss: 0.0037
Epoch 36/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - loss: 4.1168e-04 - val_loss: 0.0037
Epoch 37/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 3.8281e-04 - val_loss: 0.0037
Epoch 38/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 3.6232e-04 - val_loss: 0.0037
Epoch 39/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 3.3370e-04 - val_loss: 0.0037
Epoch 40/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 3.6855e-04 - val_loss: 0.0037
Epoch 41/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - loss: 3.2658e-04 - val_loss: 0.0037
Epoch 42/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - loss: 3.1498e-04 - val_loss: 0.0037
Epoch 43/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 3.1839e-04 - val_loss: 0.0037
Epoch 44/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 2.7585e-04 - val_loss: 0.0037
Epoch 45/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 3.4662e-04 - val_loss: 0.0037
Epoch 46/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 2.9255e-04 - val_loss: 0.0038
Epoch 47/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 31ms/step - loss: 3.2340e-04 - val_loss: 0.0036
Epoch 48/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 29ms/step - loss: 2.8702e-04 - val_loss: 0.0037
Epoch 49/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 25ms/step - loss: 2.8504e-04 - val_loss: 0.0037
Epoch 50/50
5/5 ━━━━━━━━━━━━━━━━━━━━ 0s 24ms/step - loss: 2.4736e-04 - val_loss: 0.0036
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 158ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 157ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 287ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 1s 297ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 1s 474ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 2s 2s/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 50ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 47ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 47ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 43ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 42ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 145ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 144ms/step

--- LSTM Model Performance ---
Temperature MSE: 0.0036, RMSE: 0.0599, MAE: 0.0412, R2 Score: 0.8834
Humidity MSE: 0.0004, RMSE: 0.0206, MAE: 0.0161, R2 Score: 0.4629

--- GRU Model Performance ---
Temperature MSE: 0.0029, RMSE: 0.0535, MAE: 0.0399, R2 Score: 0.9067
Humidity MSE: 0.0004, RMSE: 0.0201, MAE: 0.0161, R2 Score: 0.4897

--- Bidirectional LSTM Model Performance ---
Temperature MSE: 0.0045, RMSE: 0.0671, MAE: 0.0467, R2 Score: 0.8535
Humidity MSE: 0.0005, RMSE: 0.0214, MAE: 0.0163, R2 Score: 0.4213

--- CNN Model Performance ---
Temperature MSE: 0.0056, RMSE: 0.0745, MAE: 0.0532, R2 Score: 0.8193
Humidity MSE: 0.0015, RMSE: 0.0392, MAE: 0.0313, R2 Score: -0.9440

--- Transformer Model Performance ---
Temperature MSE: 0.0072, RMSE: 0.0851, MAE: 0.0651, R2 Score: 0.7641
Humidity MSE: 0.0014, RMSE: 0.0374, MAE: 0.0283, R2 Score: -0.7759

--- ANN Model Performance ---
Temperature MSE: 0.0169, RMSE: 0.1300, MAE: 0.1047, R2 Score: 0.4498
Humidity MSE: 0.0075, RMSE: 0.0865, MAE: 0.0632, R2 Score: -8.4925

--- RNN Model Performance ---
Temperature MSE: 0.0037, RMSE: 0.0608, MAE: 0.0471, R2 Score: 0.8797
Humidity MSE: 0.0009, RMSE: 0.0296, MAE: 0.0242, R2 Score: -0.1106

--- SVR Model Performance ---
Temperature MSE: 0.0081, RMSE: 0.0898, MAE: 0.0689, R2 Score: 0.7373
Humidity MSE: 0.0014, RMSE: 0.0370, MAE: 0.0312, R2 Score: -0.7392

--- XGBoost Model Performance ---
Temperature MSE: 0.0022, RMSE: 0.0473, MAE: 0.0283, R2 Score: 0.9271
Humidity MSE: 0.0005, RMSE: 0.0226, MAE: 0.0162, R2 Score: 0.3520

--- ARIMA Model Performance ---
Temperature MSE: 0.0318, RMSE: 0.1782, MAE: 0.1308, R2 Score: -0.0335
Humidity MSE: 0.0008, RMSE: 0.0288, MAE: 0.0236, R2 Score: -0.0528
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 15ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 18ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step 
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step 
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step 
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 11ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 16ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 18ms/step
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step 
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step 
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step 
2/2 ━━━━━━━━━━━━━━━━━━━━ 0s 12ms/step
No description has been provided for this image

Plotting Results of ML Models to Choose a Suitable Model for Prediction

In [ ]:
# Additional Graphs for Model Comparison

# Collect metrics for each model
model_metrics = {
    'Model': [],
    'MSE (Temp)': [],
    'RMSE (Temp)': [],
    'MAE (Temp)': [],
    'R2 (Temp)': [],
    'MSE (Humid)': [],
    'RMSE (Humid)': [],
    'MAE (Humid)': [],
    'R2 (Humid)': []
}

# Gather data for plotting
for model_name, (y_test_temp, y_pred_temp, y_test_humid, y_pred_humid) in models.items():
    mse_temp, rmse_temp, mae_temp, r2_temp = calculate_metrics(y_test_temp, y_pred_temp)
    mse_humid, rmse_humid, mae_humid, r2_humid = calculate_metrics(y_test_humid, y_pred_humid)

    model_metrics['Model'].append(model_name)
    model_metrics['MSE (Temp)'].append(mse_temp)
    model_metrics['RMSE (Temp)'].append(rmse_temp)
    model_metrics['MAE (Temp)'].append(mae_temp)
    model_metrics['R2 (Temp)'].append(r2_temp)
    model_metrics['MSE (Humid)'].append(mse_humid)
    model_metrics['RMSE (Humid)'].append(rmse_humid)
    model_metrics['MAE (Humid)'].append(mae_humid)
    model_metrics['R2 (Humid)'].append(r2_humid)

# Convert to DataFrame for easier plotting
metrics_df = pd.DataFrame(model_metrics)

# Plotting the metrics
plt.figure(figsize=(15, 10))

# MSE for Temperature
plt.subplot(2, 2, 1)
plt.bar(metrics_df['Model'], metrics_df['MSE (Temp)'], color='skyblue')
plt.title('MSE for Temperature Prediction')
plt.xticks(rotation=45)
plt.ylabel('MSE')

# RMSE for Temperature
plt.subplot(2, 2, 2)
plt.bar(metrics_df['Model'], metrics_df['RMSE (Temp)'], color='orange')
plt.title('RMSE for Temperature Prediction')
plt.xticks(rotation=45)
plt.ylabel('RMSE')

# MSE for Humidity
plt.subplot(2, 2, 3)
plt.bar(metrics_df['Model'], metrics_df['MSE (Humid)'], color='lightgreen')
plt.title('MSE for Humidity Prediction')
plt.xticks(rotation=45)
plt.ylabel('MSE')

# RMSE for Humidity
plt.subplot(2, 2, 4)
plt.bar(metrics_df['Model'], metrics_df['RMSE (Humid)'], color='salmon')
plt.title('RMSE for Humidity Prediction')
plt.xticks(rotation=45)
plt.ylabel('RMSE')

plt.tight_layout()
plt.show()

# Plotting MAE and R2 for further comparison
plt.figure(figsize=(15, 10))

# MAE for Temperature
plt.subplot(2, 2, 1)
plt.bar(metrics_df['Model'], metrics_df['MAE (Temp)'], color='purple')
plt.title('MAE for Temperature Prediction')
plt.xticks(rotation=45)
plt.ylabel('MAE')

# R2 Score for Temperature
plt.subplot(2, 2, 2)
plt.bar(metrics_df['Model'], metrics_df['R2 (Temp)'], color='cyan')
plt.title('R2 Score for Temperature Prediction')
plt.xticks(rotation=45)
plt.ylabel('R2 Score')

# MAE for Humidity
plt.subplot(2, 2, 3)
plt.bar(metrics_df['Model'], metrics_df['MAE (Humid)'], color='darkred')
plt.title('MAE for Humidity Prediction')
plt.xticks(rotation=45)
plt.ylabel('MAE')

# R2 Score for Humidity
plt.subplot(2, 2, 4)
plt.bar(metrics_df['Model'], metrics_df['R2 (Humid)'], color='lime')
plt.title('R2 Score for Humidity Prediction')
plt.xticks(rotation=45)
plt.ylabel('R2 Score')

plt.tight_layout()
plt.show()
No description has been provided for this image
No description has been provided for this image

LSTM (Long Short-Term Memory): Temperature: This model does a good job predicting temperature, with low average errors and a high score indicating it explains most of the variability in the data. Humidity: It also performs well with small average errors, but it doesn’t explain humidity data as effectively as temperature.

GRU (Gated Recurrent Unit): Temperature: GRU is even better at predicting temperature than LSTM, with slightly lower errors and a higher score indicating better performance. Humidity: It’s similar to LSTM in terms of average errors but explains humidity data a bit better.

Bidirectional LSTM: Temperature: This model’s temperature predictions are less accurate than LSTM, with higher errors and a lower performance score. Humidity: It performs similarly to LSTM in terms of errors, but the score is lower, meaning it explains less of the variability in humidity data.

CNN (Convolutional Neural Network): Temperature: CNN has the highest errors for temperature predictions and a lower performance score, indicating it’s not as good at this task. Humidity: It has very high errors for humidity predictions and a very poor score, meaning it performs badly here.

Transformer: Temperature: Transformers have higher errors and a lower score for temperature, indicating they’re less effective. Humidity: They also perform poorly for humidity with higher errors and a negative score, suggesting they’re not suitable.

ANN (Artificial Neural Network): Temperature: ANN has the highest errors and the lowest score, showing it’s not effective for temperature predictions. Humidity: It performs even worse for humidity, with very high errors and a very low score.

RNN (Recurrent Neural Network): Temperature: RNN is slightly worse than LSTM, with higher errors and a slightly lower score. Humidity: RNN has higher errors and a very poor performance score for humidity. SVR (Support Vector Regression): Temperature: SVR has higher errors and a lower score compared to the better models, indicating it's not as accurate. Humidity: It performs similarly to LSTM for humidity with moderate errors but a negative score, suggesting poor overall performance.

XGBoost: Temperature: XGBoost performs very well for temperature with the lowest errors and the highest score, making it the best for this task. Humidity: It also does well for humidity with low errors, but its performance score is lower than LSTM for this task.

ARIMA (AutoRegressive Integrated Moving Average): Temperature: ARIMA performs the worst for temperature with the highest errors and a very low score. Humidity: It performs reasonably well for humidity, with low errors but a lower score.

Why Choose LSTM:

Temperature: LSTM is a strong performer, but GRU and XGBoost are slightly better for temperature prediction. However, LSTM is still a robust choice, especially if you need a model with long-term memory capabilities.

Humidity: LSTM performs well with low errors, though GRU is a bit better. The LSTM model strikes a good balance between accuracy and performance for humidity.

Reasons to Choose LSTM:

  1. Balanced Performance: LSTM provides a good balance between accuracy and explaining variance for temperature, which is crucial if both temperature and humidity predictions are important.

  2. Consistency: LSTM offers stable performance across different types of data (temperature and humidity), which can be beneficial in a real-world scenario where consistency is key.

  3. Long-Term Dependencies: LSTM’s strength is in capturing long-term dependencies and sequential data patterns, which can be advantageous if your data has temporal aspects or requires understanding patterns over time.

  4. Versatility: LSTM is more versatile and can handle various types of sequential data, making it a reliable choice if your data involves time series or sequential dependencies.