Can LSTM Networks Beat the Market? A Deep Learning Approach to S&P 500 Prediction

Dec 30, 2024 | python data-science machine-learning lstm finance forecasting tensorflow keras pandas


A comparative study of neural network models (LSTM, CNN-LSTM) for S&P 500 index prediction. The analysis evaluates multiple architectures against baseline strategies like buy-and-hold and naive forecasting, finding that while specialized models like LSTM with Batch Normalization and Regularization improve technical error metrics (MSE, MAE). However, when tested with a simulated trading, beating market returns remains a significant challenge requiring further architectural and strategy refinement.

Abstract

The goal for this project is to explore whether neural network models could outperform baseline strategies in predicting S&P 500 performance and generate better returns. Using 24 years of historical data (2001-2024) from Yahoo Finance, we developed and tested multiple LSTM-based architectures, comparing them against two baseline strategies, buy-and-hold (which yielded 360.30% return from 2001 or 62.74% from the test period) and naive forecasting (achieving MSE of 701.13, MAE of 16.10, and MAPE of 0.008).

We built three main model variants. Model A was a simple LSTM architecture. Model A3 improved on this by adding batch normalization and L2 regularization, which helped make the predictions more consistent across multiple training runs. Models B and C attempted more complex approaches with CNN-LSTM combinations and temporal feature engineering, but these did not perform as expected.

In terms of technical metrics, all our neural network models easily beat naive forecasting on MSE and MAE. Model A3 was the best performer with MSE of 0.024, MAE of 0.135, and MAPE of 6.91. However, we found that beating the technical metrics did not translate to beating market returns. When we tested Model A3 with a simple trading strategy, it could not surpass the 62.74% return from just buying and holding during the test period.

The more complex models (B and C) struggled for several reasons. By transforming price data into differences ((TtTt1/Tt1)(T_{t} - T_{t-1} / T_{t-1} )), the dataset started to look more like random noise. The small magnitude of daily changes (mostly less than 0.02) made it difficult for the model to produce meaningful predictions. We also realized that we should have tested individual components before combining them, and that we needed better systematic planning for hyperparameter tuning.

The main takeaway from this project is that there is a critical gap between prediction accuracy and actual trading profitability. Even when a model can predict prices more accurately than naive forecasting, it does not guarantee that you can beat the market. For future work, we plan to explore binary classification approaches (buy/sell signals) instead of continuous price prediction, which might be more directly useful for trading decisions.

Importing Libraries

# Importing the libraries
import numpy as np  
import matplotlib.pyplot as plt 
import pandas as pd
import os
import random
from datetime import datetime
import pydot
import tensorflow as tf
from tensorflow import keras
from keras.models import Sequential 
from keras.layers import Dense, LSTM, Input, BatchNormalization
from keras import regularizers
import yfinance

# Obtain the S&P 500 index data from Yahoo Finance using yfinance
# The data is from 2001-01-01 to 2024-12-31
dataset = yfinance.download('^GSPC', start='2001-01-01', end='2024-12-31')
dataset
YF.download() has changed argument auto_adjust default to True
[*********************100%***********************]  1 of 1 completed
Price Close High Low Open Volume
Ticker ^GSPC ^GSPC ^GSPC ^GSPC ^GSPC
Date
2001-01-02 1283.270020 1320.280029 1276.050049 1320.280029 1129400000
2001-01-03 1347.560059 1347.760010 1274.619995 1283.270020 1880700000
2001-01-04 1333.339966 1350.239990 1329.140015 1347.560059 2131000000
2001-01-05 1298.349976 1334.770020 1294.949951 1333.339966 1430800000
2001-01-08 1295.859985 1298.349976 1276.290039 1298.349976 1115500000
... ... ... ... ... ...
2024-12-23 5974.069824 5978.250000 5902.569824 5940.250000 3593280000
2024-12-24 6040.040039 6040.100098 5981.439941 5984.629883 1757720000
2024-12-26 6037.589844 6049.750000 6007.370117 6024.970215 2904530000
2024-12-27 5970.839844 6006.169922 5932.950195 6006.169922 3159610000
2024-12-30 5906.939941 5940.790039 5869.160156 5920.669922 3433250000
# Checking the columns 
dataset.columns
MultiIndex([( 'Close', '^GSPC'),
            (  'High', '^GSPC'),
            (   'Low', '^GSPC'),
            (  'Open', '^GSPC'),
            ('Volume', '^GSPC')],
           names=['Price', 'Ticker'])
# Checking close price 
dataset['Close']
Ticker ^GSPC
Date
2001-01-02 1283.270020
2001-01-03 1347.560059
2001-01-04 1333.339966
2001-01-05 1298.349976
2001-01-08 1295.859985
... ...
2024-12-23 5974.069824
2024-12-24 6040.040039
2024-12-26 6037.589844
2024-12-27 5970.839844
2024-12-30 5906.939941
dataset['Close'].plot()
<Axes: xlabel='Date'>
Visualization

Baseline Performance

Not only do we have to consider the technicalities of the model performance such as accuracy, training loss, validation loss, etc. We should also look into the use of the model in a trading / investement perspective, where if we were to use the model, could we generate a return more than the market and / or simple strategies. Hence, the following are some strategies that the model should try to outperform.

Buy and Hold

Holding from the start of the dataset

The simplest strategy is the buy and hold. Assuming that we have invested any amount, and no other action or strategy has been done, what would the return be?

latest_sell_date = dataset['Close']['^GSPC'].iloc[-1]
buy_date = dataset['Close']['^GSPC'].iloc[0]

buy_date, latest_sell_date
(1283.27001953125, 5906.93994140625)
# Calculate the return on investment
roi = (latest_sell_date - buy_date) / buy_date * 100
print(f"Return on investment: {roi:.2f}%")
Return on investment: 360.30%

So if anyone who have invested $1 in the S&P500 in 2001, they would have $3.6 today.

Holding from the start of the testing data

However, because for the we will be splitting the data into training, validation and test set later on, we can also calculate the test sets returns, since will be using most of the data to train the model, and that the model only has the timeframe of the test data for validating its performance.

# Calculate the return on investment on the test data 
latest_sell_date = dataset['Close']['^GSPC'].iloc[-1]
buy_date = dataset['Close']['^GSPC'].iloc[-1029]

roi = (latest_sell_date - buy_date) / buy_date * 100
print(f"Return on investment: {roi:.2f}%")
Return on investment: 62.74%

Therefore, even if if an individual were to start investing in the S&P 500, at the period of the test data, they would make $0.62 for every $1 invested.

Naive Forecasting (Yesterday is Tomorrow's Guess)

The simplest and most common way to validate if our proposed models would be better, is to also compare it to Naive Forecasting, which takes the previous observation has the prediction. The following are the result in returns and accuracy.

# Create DataFrame
naive_forecast = pd.DataFrame()

# Fill in values 
naive_forecast['T0'] = dataset['Close']
naive_forecast['T-1'] = dataset['Close'].shift()
naive_forecast['Error'] = naive_forecast['T0'] - naive_forecast['T-1']
naive_forecast['Error_Squared'] = naive_forecast['Error']**2

# Remove the top row, as there are no values due to the .shift()
naive_forecast = naive_forecast.tail(-1)

naive_forecast
T0 T-1 Error Error_Squared
Date
2001-01-03 1347.560059 1283.270020 64.290039 4133.209123
2001-01-04 1333.339966 1347.560059 -14.220093 202.211038
2001-01-05 1298.349976 1333.339966 -34.989990 1224.299417
2001-01-08 1295.859985 1298.349976 -2.489990 6.200051
2001-01-09 1300.800049 1295.859985 4.940063 24.404227
... ... ... ... ...
2024-12-23 5974.069824 5930.850098 43.219727 1867.944764
2024-12-24 6040.040039 5974.069824 65.970215 4352.069247
2024-12-26 6037.589844 6040.040039 -2.450195 6.003457
2024-12-27 5970.839844 6037.589844 -66.750000 4455.562500
2024-12-30 5906.939941 5970.839844 -63.899902 4083.197520
# Calculating Mean Squared Error  

baseline_mse = naive_forecast['Error_Squared'].sum()/len(naive_forecast)
print("mse:", baseline_mse)
mse: 701.1348725872078
# Calculating Mean Absolute Error 

baseline_mae = abs(naive_forecast['Error']).sum()/len(naive_forecast)
print("mae:", baseline_mae)
mae: 16.097478494588856
# Calculating Mean Absolute Percentage Error 

baseline_mape = abs((naive_forecast['Error']/naive_forecast['T0'])).sum()/len(naive_forecast)
print("mape:", baseline_mape)
mape: 0.007994124547031602

Other than the above measures, we can also implement a simple trading strategy that uses the naive forecasting to make the trading decision of buying, holding or selling. The strategy will only:

  • buy or sell the stock whenever it detects a percentage change
  • it can only enter the market one at a time, only holding one position or no position at all.

We will set the strategy to look for 2% positive change for a buy signal, and -3% for a sell signal.

def using_naive_forecasting_trading(positive_percentage, negative_percentage, dataset):

    desired_return = positive_percentage
    risk_tolerance = negative_percentage
    holding = False 
    capital = 1
    last_price = None

    trading_activity = []
    trading_history = []

    for t in range(len(dataset)):

        price_today = dataset['T0'].iloc[t]
        price_yesterday = dataset['T-1'].iloc[t]
        price_change = dataset['Error'].iloc[t]

        percentage_change = price_change / price_yesterday

        # If percentage change is more than desired return 
        if percentage_change >= desired_return: 
            if not(holding):
                holding = True
                last_price = price_today
                trading_history.append(capital)
                trading_activity.append(1)
                print(f"Time {t}: BUY at {price_today:.2f}")
            else: 
                trading_history.append(capital)
                trading_activity.append(0)

        # If percentage change is less than risk tolerance
        elif percentage_change <= risk_tolerance: 
            if holding: 
                holding = False
                trade_return = 1 + ((price_today - last_price) / last_price)
                capital *= trade_return
                trading_history.append(capital)
                trading_activity.append(-1)
                print(f"Time {t}: SELL at {price_today:.2f} | New Capital: {capital:.2f}")
            else: 
                trading_history.append(capital)
                trading_activity.append(0)
        else: 
            if t == len(dataset)-1:
                if holding:
                    trade_return = 1 + ((price_today - last_price) / last_price)
                    capital *= trade_return
                    trading_history.append(capital)
                    trading_activity.append(-1)
                    print(f"Time {t}: SELL at {price_today:.2f} | New Capital: {capital:.2f}")
                else:
                    trading_history.append(capital)
                    trading_activity.append(0)
            else:
                trading_history.append(capital)
                trading_activity.append(0)

    x = [x for x in range(len(dataset))]

    plt.figure(figsize=(12, 10))
    plt.plot(x, trading_history)
    plt.show()

    plt.figure(figsize=(12, 10))
    plt.plot(dataset['T0'].values,alpha=0.3)
    for no, activity in enumerate(trading_activity): 
        
        if activity == 1: 
            y_plot = dataset['T0'].iloc[no]
            plt.scatter(no, y_plot, color='green')
        elif activity == -1:     
            y_plot = dataset['T0'].iloc[no]
            plt.scatter(no, y_plot, color='red', marker='x')

using_naive_forecasting_trading(0.02, -0.03, naive_forecast)
Time 0: BUY at 1347.56
Time 46: SELL at 1180.16 | New Capital: 0.88
Time 57: BUY at 1182.17
Time 62: SELL at 1106.46 | New Capital: 0.82
Time 64: BUY at 1151.44
Time 173: SELL at 1038.77 | New Capital: 0.74
Time 178: BUY at 1003.45
Time 377: SELL at 920.47 | New Capital: 0.68
Time 387: BUY at 843.43
Time 395: SELL at 834.60 | New Capital: 0.67
Time 396: BUY at 859.57
Time 415: SELL at 878.02 | New Capital: 0.69
Time 431: BUY at 839.66
Time 433: SELL at 827.37 | New Capital: 0.68
Time 435: BUY at 847.91
Time 554: SELL at 864.23 | New Capital: 0.69
Time 561: BUY at 880.90
Time 1543: SELL at 1399.04 | New Capital: 1.09
Time 1654: BUY at 1467.67
Time 1780: SELL at 1336.64 | New Capital: 1.00
Time 1804: BUY at 1320.65
Time 1865: SELL at 1360.68 | New Capital: 1.03
Time 1892: BUY at 1245.36
Time 1930: SELL at 1224.51 | New Capital: 1.01
Time 1937: BUY at 1206.51
Time 1939: SELL at 1207.09 | New Capital: 1.01
Time 1945: BUY at 1166.36
Time 1947: SELL at 1114.28 | New Capital: 0.96
Time 1954: BUY at 1003.35
Time 1956: SELL at 907.84 | New Capital: 0.87
Time 1957: BUY at 946.43
Time 1960: SELL at 955.05 | New Capital: 0.88
Time 1965: BUY at 940.51
Time 1971: SELL at 952.77 | New Capital: 0.89
Time 1973: BUY at 930.99
Time 1976: SELL at 852.30 | New Capital: 0.82
Time 1977: BUY at 911.29
Time 1978: SELL at 873.29 | New Capital: 0.78
Time 1983: BUY at 800.03
Time 1988: SELL at 816.21 | New Capital: 0.80
Time 1989: BUY at 848.81
Time 2013: SELL at 906.65 | New Capital: 0.85
Time 2022: BUY at 840.24
Time 2028: SELL at 845.14 | New Capital: 0.86
Time 2034: BUY at 868.60
Time 2036: SELL at 827.16 | New Capital: 0.82
Time 2045: BUY at 773.14
Time 2049: SELL at 700.82 | New Capital: 0.74
Time 2051: BUY at 712.87
Time 2052: SELL at 682.55 | New Capital: 0.71
Time 2055: BUY at 719.60
Time 2069: SELL at 787.53 | New Capital: 0.78
Time 2072: BUY at 834.38
Time 2083: SELL at 832.39 | New Capital: 0.77
Time 2084: BUY at 850.08
Time 2127: SELL at 893.04 | New Capital: 0.81
Time 2130: BUY at 920.26
Time 2284: SELL at 1063.11 | New Capital: 0.94
Time 2349: BUY at 1159.73
Time 2357: SELL at 1071.59 | New Capital: 0.87
Time 2362: BUY at 1103.06
Time 2367: SELL at 1064.88 | New Capital: 0.84
Time 2371: BUY at 1086.84
Time 2384: SELL at 1041.24 | New Capital: 0.80
Time 2389: BUY at 1060.27
Time 2662: SELL at 1200.07 | New Capital: 0.91
Time 2665: BUY at 1172.53
Time 2666: SELL at 1120.76 | New Capital: 0.87
Time 2667: BUY at 1172.64
Time 2672: SELL at 1140.65 | New Capital: 0.84
Time 2675: BUY at 1162.35
Time 2696: SELL at 1129.56 | New Capital: 0.82
Time 2698: BUY at 1162.95
Time 2730: SELL at 1229.10 | New Capital: 0.87
Time 2742: BUY at 1192.55
Time 3680: SELL at 1970.89 | New Capital: 1.43
Time 3683: BUY at 1940.51
Time 3892: SELL at 2037.41 | New Capital: 1.51
Time 3986: BUY at 2131.52
Time 4298: SELL at 2648.94 | New Capital: 1.87
Time 4332: BUY at 2658.55
Time 4470: SELL at 2785.68 | New Capital: 1.96
Time 4474: BUY at 2809.92
Time 4480: SELL at 2656.10 | New Capital: 1.85
Time 4490: BUY at 2813.89
Time 4508: SELL at 2700.06 | New Capital: 1.78
Time 4522: BUY at 2467.70
Time 4813: SELL at 3225.89 | New Capital: 2.32
Time 4818: BUY at 3090.23
Time 4821: SELL at 3023.94 | New Capital: 2.27
Time 4824: BUY at 2882.23
Time 4825: SELL at 2741.38 | New Capital: 2.16
Time 4827: BUY at 2711.02
Time 4828: SELL at 2386.13 | New Capital: 1.90
Time 4829: BUY at 2529.19
Time 4830: SELL at 2398.10 | New Capital: 1.81
Time 4834: BUY at 2447.33
Time 4837: SELL at 2541.47 | New Capital: 1.88
Time 4838: BUY at 2626.65
Time 4840: SELL at 2470.50 | New Capital: 1.76
Time 4841: BUY at 2526.90
Time 4853: SELL at 2736.56 | New Capital: 1.91
Time 4854: BUY at 2799.31
Time 4889: SELL at 3002.10 | New Capital: 2.05
Time 4951: BUY at 3398.96
Time 4986: SELL at 3271.03 | New Capital: 1.97
Time 4991: BUY at 3443.44
Time 5364: SELL at 4131.93 | New Capital: 2.37
Time 5367: BUY at 4300.17
Time 5368: SELL at 4146.87 | New Capital: 2.28
Time 5374: BUY at 4023.89
Time 5377: SELL at 3923.68 | New Capital: 2.22
Time 5384: BUY at 4158.24
Time 5394: SELL at 3749.63 | New Capital: 2.01
Time 5399: BUY at 3764.79
Time 5446: SELL at 4057.66 | New Capital: 2.16
Time 5471: BUY at 3678.43
Time 6034: SELL at 5906.94 | New Capital: 3.47

Visualization
Visualization

And just like that, we have about a 347% return. It does not beat the buy and hold. Since there is only two variable for this simple strategy, we can use brute force our way to find if there is strategy that can churn out a higher return. We will loop through the possibilities of using 0.01 to 0.15 for both the buy and sell signal

def find_best_signal_naive_forecasting_trading(dataset):
    naive_forecast_results = []

    for i in np.arange(0.01, 0.15, 0.005): 
        for j in np.arange(0.01, 0.15, 0.005): 

            holding = False 
            capital = 1
            desired_return = i
            risk_tolerance = -j
            last_price = None

            for t in range(len(dataset)):

                price_today = dataset['T0'].iloc[t]
                price_yesterday = dataset['T-1'].iloc[t]
                price_change = dataset['Error'].iloc[t]

                percentage_change = price_change / price_yesterday

                # If percentage change is more than desired return 
                if percentage_change >= desired_return: 
                    if not(holding):
                        holding = True
                        last_price = price_today
                        
                # If percentage change is less than risk tolerance
                elif percentage_change <= risk_tolerance: 
                    if holding: 
                        holding = False
                        trade_return = 1 + ((price_today - last_price) / last_price)
                        capital *= trade_return

                else: 
                    if t == len(dataset)-1:
                        if holding:
                            trade_return = 1 + ((price_today - last_price) / last_price)
                            capital *= trade_return
                
            naive_forecast_results.append((i,j,capital))
    return naive_forecast_results

naive_forecast_results = find_best_signal_naive_forecasting_trading(naive_forecast)
naive_forecast_results = pd.DataFrame(naive_forecast_results, columns=["buy signal", "sell signal", "return"])
naive_forecast_results.sort_values("return", ascending=False)
buy signal sell signal return
265 0.055 0.075 8.081776
264 0.055 0.070 8.081776
266 0.055 0.080 7.299304
267 0.055 0.085 7.299304
274 0.055 0.120 7.003474
... ... ... ...
113 0.030 0.015 0.538641
56 0.020 0.010 0.529145
86 0.025 0.020 0.521114
112 0.030 0.010 0.507245
84 0.025 0.010 0.462794
using_naive_forecasting_trading(0.055, -0.075, naive_forecast)
Time 387: BUY at 843.43
Time 1944: SELL at 1106.42 | New Capital: 1.31
Time 1954: BUY at 1003.35
Time 1956: SELL at 907.84 | New Capital: 1.19
Time 1965: BUY at 940.51
Time 1988: SELL at 816.21 | New Capital: 1.03
Time 2055: BUY at 719.60
Time 4823: SELL at 2746.56 | New Capital: 3.93
Time 4827: BUY at 2711.02
Time 4828: SELL at 2386.13 | New Capital: 3.46
Time 4829: BUY at 2529.19
Time 6034: SELL at 5906.94 | New Capital: 8.08
Visualization
Visualization

Therefore, with a simple strategy above, we can see that it has the potential to generate a higher return than than "buy and hold". Now lets get the performance if we were to within the test data time range and see what our machine learning model will have to beat.

naive_forecast_results_2 = find_best_signal_naive_forecasting_trading(naive_forecast[-1029:])
naive_forecast_results_2 = pd.DataFrame(naive_forecast_results_2, columns=["buy signal", "sell signal", "return"])
naive_forecast_results_2.sort_values("return", ascending=False)
buy signal sell signal return
6 0.010 0.040 1.684003
5 0.010 0.035 1.649813
32 0.015 0.030 1.643330
4 0.010 0.030 1.638266
34 0.015 0.040 1.634288
... ... ... ...
84 0.025 0.010 0.957374
86 0.025 0.020 0.952347
112 0.030 0.010 0.947572
114 0.030 0.020 0.923589
113 0.030 0.015 0.921037
using_naive_forecasting_trading(0.01, -0.04, naive_forecast[-1029:])
Time 3: BUY at 3662.45
Time 371: SELL at 3923.68 | New Capital: 1.07
Time 374: BUY at 3973.75
Time 451: SELL at 3932.69 | New Capital: 1.06
Time 462: BUY at 3719.04
Time 1028: SELL at 5906.94 | New Capital: 1.68
Visualization
Visualization
percentageDiff = dataset['Close'].pct_change()
percentageDiff.describe()
Ticker ^GSPC
count 6035.000000
mean 0.000327
std 0.012131
min -0.119841
25% -0.004588
50% 0.000669
75% 0.005846
max 0.115800

If a strategy is able to buy and sell at every time step, and constantly predict to generate positive returns, the maximum potential of a model would be as follows.

percentage_change = naive_forecast['Error'] / naive_forecast['T-1']
positive_percentage_change = percentage_change[percentage_change > 0]
positive_percentage_change
Date
2001-01-03    0.050099
2001-01-09    0.003812
2001-01-10    0.009586
2001-01-11    0.010318
2001-01-16    0.006143
                ...   
2024-12-11    0.008166
2024-12-16    0.003799
2024-12-20    0.010869
2024-12-23    0.007287
2024-12-24    0.011043
Length: 3249, dtype: float64
maximum_potential_return = 1 

for percentage_change in positive_percentage_change: 
    maximum_potential_return *= (1 + percentage_change)

maximum_potential_return
63358453982.29017

This return is a ridiculous number as we are assuming the trading strategy involving using the full capital at every given trade. The more positive entries it makes, the higher the chances for it to compound the interest or every return from the trade, making it grow exponentially. At a certain absolute amount of capital, the market will react differently based on each the trade made. These simple model does not capture various factors such as the affect of volume and the ability to sell the stock at a certain price. The model also does not include various slippage and fees, which contributes to the easy exponential return of the test and models that we will be using today

Prepping Dataset

closePrice = dataset['Close']
closePrice.plot() 
print(closePrice)
Ticker            ^GSPC
Date                   
2001-01-02  1283.270020
2001-01-03  1347.560059
2001-01-04  1333.339966
2001-01-05  1298.349976
2001-01-08  1295.859985
...                 ...
2024-12-23  5974.069824
2024-12-24  6040.040039
2024-12-26  6037.589844
2024-12-27  5970.839844
2024-12-30  5906.939941

[6036 rows x 1 columns]
Visualization
# Standardizing the data
standardizedClosePrice = (closePrice - closePrice.mean()) / closePrice.std()
standardizedClosePrice.plot()
<Axes: xlabel='Date'>
Visualization
standardizedClosePrice
Ticker ^GSPC
Date
2001-01-02 -0.679889
2001-01-03 -0.628868
2001-01-04 -0.640153
2001-01-05 -0.667921
2001-01-08 -0.669897
... ...
2024-12-23 3.042753
2024-12-24 3.095107
2024-12-26 3.093162
2024-12-27 3.040189
2024-12-30 2.989478

Picking standardisation rather than normalisation, because there is no maximum potential for price movement. By normalizing the data, we are setting an arbitrary ceiling to the price. While it can also be argued that the mean of the data is dependant on the timeframe that is used, as it sets the potential range of values.

standardizedClosePrice.reset_index(drop=True, inplace=True)
standardizedClosePrice['^GSPC'][:100]
0    -0.679889
1    -0.628868
2    -0.640153
3    -0.667921
4    -0.669897
        ...   
95   -0.672992
96   -0.656430
97   -0.659168
98   -0.675302
99   -0.672032
Name: ^GSPC, Length: 100, dtype: float64
def create_sequences(data, lookback):
    input = []
    output = []
    for i in range(len(data) - lookback):
        input.append(data[i:i+lookback])
        output.append(data[i+lookback])
    return np.array(input), np.array(output)

def reshape_input(data):
    return data.reshape((data.shape[0], data.shape[1], 1))

def train_valid_test_split(data, train_size, valid_size):
    x_train = data[:train_size]
    x_valid = data[train_size:train_size+valid_size]
    x_test = data[train_size+valid_size:]
    return x_train, x_valid, x_test

def ysplit(data, train_size, valid_size):
    y_train = data[:train_size]
    y_valid = data[train_size:train_size+valid_size]
    y_test = data[train_size+valid_size:]
    return y_train, y_valid, y_test
modelA_input, modelA_output = create_sequences(standardizedClosePrice['^GSPC'], 7)
modelA_input.shape, modelA_output.shape
((6029, 7), (6029,))
x_trainA, x_validA, x_testA = train_valid_test_split(modelA_input, 4000, 1000)
y_trainA, y_validA, y_testA = ysplit(modelA_output, 4000, 1000)

x_trainA.shape, x_validA.shape, x_testA.shape, y_trainA.shape, y_validA.shape, y_testA.shape
((4000, 7), (1000, 7), (1029, 7), (4000,), (1000,), (1029,))
x_trainA = reshape_input(x_trainA)
x_validA = reshape_input(x_validA)
x_testA = reshape_input(x_testA)

x_trainA.shape, x_validA.shape, x_testA.shape
((4000, 7, 1), (1000, 7, 1), (1029, 7, 1))

Model A - Simple LSTM

inputs = keras.Input(shape=(7,1))
lstm = LSTM(7, activation='relu')
x = lstm(inputs)
outputs = Dense(1)(x)

modelA = keras.Model(inputs = inputs, outputs = outputs, name = "modelA" )
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1742204477.638106     903 cuda_executor.cc:1001] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
I0000 00:00:1742204477.755017     903 cuda_executor.cc:1001] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
I0000 00:00:1742204477.755068     903 cuda_executor.cc:1001] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
I0000 00:00:1742204477.758163     903 cuda_executor.cc:1001] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
I0000 00:00:1742204477.758223     903 cuda_executor.cc:1001] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
I0000 00:00:1742204477.758241     903 cuda_executor.cc:1001] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
I0000 00:00:1742204477.943126     903 cuda_executor.cc:1001] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
I0000 00:00:1742204477.943202     903 cuda_executor.cc:1001] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
2025-03-17 17:41:17.943211: I tensorflow/core/common_runtime/gpu/gpu_device.cc:2112] Could not identify NUMA node of platform GPU id 0, defaulting to 0.  Your kernel may not have been built with NUMA support.
I0000 00:00:1742204477.943244     903 cuda_executor.cc:1001] could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node
Your kernel may have been built without NUMA support.
2025-03-17 17:41:17.943262: I tensorflow/core/common_runtime/gpu/gpu_device.cc:2021] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 9706 MB memory:  -> device: 0, name: NVIDIA GeForce RTX 3060, pci bus id: 0000:01:00.0, compute capability: 8.6
keras.utils.plot_model(modelA, "modelA.png", show_shapes=True)
Visualization
modelA.summary()
Model: "modelA"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ input_layer (InputLayer)        │ (None, 7, 1)           │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ lstm (LSTM)                     │ (None, 7)              │           252 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense (Dense)                   │ (None, 1)              │             8 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
Total params: 260 (1.02 KB)
Trainable params: 260 (1.02 KB)
Non-trainable params: 0 (0.00 B)
modelA.compile(
    optimizer='adam', 
    loss='mse', 
    metrics=['mae', 'mse', 'mape']
    )
historyA = modelA.fit(
    x_trainA, y_trainA, 
    epochs=100, batch_size=32, 
    validation_data=(x_validA, y_validA)
)
Epoch 1/100
I0000 00:00:1742204479.775629    1373 service.cc:146] XLA service 0x7f08c80ee7d0 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:
I0000 00:00:1742204479.775657    1373 service.cc:154]   StreamExecutor device (0): NVIDIA GeForce RTX 3060, Compute Capability 8.6
2025-03-17 17:41:19.809809: I tensorflow/compiler/mlir/tensorflow/utils/dump_mlir_util.cc:268] disabling MLIR crash reproducer, set env var `MLIR_CRASH_REPRODUCER_DIRECTORY` to enable.
2025-03-17 17:41:19.914596: I external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:531] Loaded cuDNN version 90101
64/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.3942 - mae: 0.5604 - mape: 94.1343 - mse: 0.3938
I0000 00:00:1742204480.420951    1373 device_compiler.h:188] Compiled cluster using XLA!  This line is logged at most once for the lifetime of the process.
125/125 ━━━━━━━━━━━━━━━━━━━━ 2s 8ms/step - loss: 0.3632 - mae: 0.5359 - mape: 101.1663 - mse: 0.3632 - val_loss: 0.1406 - val_mae: 0.3448 - val_mape: 68.9184 - val_mse: 0.1406
Epoch 2/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0198 - mae: 0.0901 - mape: 43.8049 - mse: 0.0198 - val_loss: 0.0367 - val_mae: 0.1637 - val_mape: 28.8398 - val_mse: 0.0367
Epoch 3/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 3.6988e-04 - mae: 0.0140 - mape: 11.1931 - mse: 3.6988e-04 - val_loss: 0.0330 - val_mae: 0.1562 - val_mape: 27.8314 - val_mse: 0.0330
Epoch 4/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 3.2640e-04 - mae: 0.0132 - mape: 8.9893 - mse: 3.2640e-04 - val_loss: 0.0316 - val_mae: 0.1526 - val_mape: 27.1243 - val_mse: 0.0316
Epoch 5/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 3.0643e-04 - mae: 0.0125 - mape: 8.8617 - mse: 3.0643e-04 - val_loss: 0.0296 - val_mae: 0.1464 - val_mape: 25.6651 - val_mse: 0.0296
Epoch 6/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 3.0874e-04 - mae: 0.0125 - mape: 13.7168 - mse: 3.0874e-04 - val_loss: 0.0309 - val_mae: 0.1505 - val_mape: 26.7545 - val_mse: 0.0309
Epoch 7/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.6099e-04 - mae: 0.0119 - mape: 8.7288 - mse: 2.6099e-04 - val_loss: 0.0278 - val_mae: 0.1408 - val_mape: 24.4500 - val_mse: 0.0278
Epoch 8/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.8369e-04 - mae: 0.0121 - mape: 7.6383 - mse: 2.8369e-04 - val_loss: 0.0314 - val_mae: 0.1497 - val_mape: 26.0536 - val_mse: 0.0314
Epoch 9/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.5677e-04 - mae: 0.0117 - mape: 11.3455 - mse: 2.5677e-04 - val_loss: 0.0326 - val_mae: 0.1523 - val_mape: 26.4645 - val_mse: 0.0326
Epoch 10/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.5009e-04 - mae: 0.0115 - mape: 11.5759 - mse: 2.5009e-04 - val_loss: 0.0313 - val_mae: 0.1470 - val_mape: 25.0054 - val_mse: 0.0313
Epoch 11/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 2.2923e-04 - mae: 0.0111 - mape: 14.3213 - mse: 2.2923e-04 - val_loss: 0.0318 - val_mae: 0.1475 - val_mape: 24.9442 - val_mse: 0.0318
Epoch 12/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.3355e-04 - mae: 0.0112 - mape: 9.8309 - mse: 2.3355e-04 - val_loss: 0.0372 - val_mae: 0.1607 - val_mape: 27.5657 - val_mse: 0.0372
Epoch 13/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.1054e-04 - mae: 0.0108 - mape: 8.9084 - mse: 2.1054e-04 - val_loss: 0.0367 - val_mae: 0.1585 - val_mape: 26.8683 - val_mse: 0.0367
Epoch 14/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.2359e-04 - mae: 0.0108 - mape: 9.8844 - mse: 2.2359e-04 - val_loss: 0.0366 - val_mae: 0.1571 - val_mape: 26.3522 - val_mse: 0.0366
Epoch 15/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 2.1668e-04 - mae: 0.0106 - mape: 10.1921 - mse: 2.1668e-04 - val_loss: 0.0428 - val_mae: 0.1716 - val_mape: 29.1817 - val_mse: 0.0428
Epoch 16/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.1427e-04 - mae: 0.0106 - mape: 8.1839 - mse: 2.1427e-04 - val_loss: 0.0429 - val_mae: 0.1703 - val_mape: 28.5508 - val_mse: 0.0429
Epoch 17/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.0500e-04 - mae: 0.0106 - mape: 8.6467 - mse: 2.0500e-04 - val_loss: 0.0417 - val_mae: 0.1672 - val_mape: 27.8914 - val_mse: 0.0417
Epoch 18/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.9875e-04 - mae: 0.0103 - mape: 8.1259 - mse: 1.9875e-04 - val_loss: 0.0474 - val_mae: 0.1797 - val_mape: 30.3412 - val_mse: 0.0474
Epoch 19/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.0802e-04 - mae: 0.0106 - mape: 10.1440 - mse: 2.0802e-04 - val_loss: 0.0447 - val_mae: 0.1732 - val_mape: 28.9233 - val_mse: 0.0447
Epoch 20/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.0065e-04 - mae: 0.0103 - mape: 11.4495 - mse: 2.0065e-04 - val_loss: 0.0425 - val_mae: 0.1676 - val_mape: 27.6592 - val_mse: 0.0425
Epoch 21/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.0212e-04 - mae: 0.0105 - mape: 14.9791 - mse: 2.0212e-04 - val_loss: 0.0452 - val_mae: 0.1735 - val_mape: 28.8111 - val_mse: 0.0452
Epoch 22/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.8986e-04 - mae: 0.0101 - mape: 8.0155 - mse: 1.8986e-04 - val_loss: 0.0481 - val_mae: 0.1809 - val_mape: 30.5743 - val_mse: 0.0481
Epoch 23/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.0011e-04 - mae: 0.0103 - mape: 7.4294 - mse: 2.0011e-04 - val_loss: 0.0483 - val_mae: 0.1813 - val_mape: 30.6342 - val_mse: 0.0483
Epoch 24/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.9834e-04 - mae: 0.0102 - mape: 9.7079 - mse: 1.9834e-04 - val_loss: 0.0453 - val_mae: 0.1741 - val_mape: 29.0193 - val_mse: 0.0453
Epoch 25/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.8685e-04 - mae: 0.0100 - mape: 7.8714 - mse: 1.8685e-04 - val_loss: 0.0470 - val_mae: 0.1785 - val_mape: 30.0774 - val_mse: 0.0470
Epoch 26/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.8815e-04 - mae: 0.0101 - mape: 9.2030 - mse: 1.8815e-04 - val_loss: 0.0441 - val_mae: 0.1723 - val_mape: 28.9224 - val_mse: 0.0441
Epoch 27/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.1075e-04 - mae: 0.0104 - mape: 9.6695 - mse: 2.1075e-04 - val_loss: 0.0458 - val_mae: 0.1765 - val_mape: 29.8569 - val_mse: 0.0458
Epoch 28/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.8782e-04 - mae: 0.0100 - mape: 7.4165 - mse: 1.8782e-04 - val_loss: 0.0417 - val_mae: 0.1668 - val_mape: 27.7428 - val_mse: 0.0417
Epoch 29/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.8189e-04 - mae: 0.0099 - mape: 9.8779 - mse: 1.8189e-04 - val_loss: 0.0442 - val_mae: 0.1741 - val_mape: 29.6551 - val_mse: 0.0442
Epoch 30/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.7970e-04 - mae: 0.0101 - mape: 10.5901 - mse: 1.7970e-04 - val_loss: 0.0433 - val_mae: 0.1714 - val_mape: 28.9005 - val_mse: 0.0433
Epoch 31/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.9861e-04 - mae: 0.0103 - mape: 14.1156 - mse: 1.9861e-04 - val_loss: 0.0433 - val_mae: 0.1729 - val_mape: 29.6227 - val_mse: 0.0433
Epoch 32/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.8994e-04 - mae: 0.0100 - mape: 18.8355 - mse: 1.8994e-04 - val_loss: 0.0439 - val_mae: 0.1743 - val_mape: 29.9106 - val_mse: 0.0439
Epoch 33/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.9609e-04 - mae: 0.0101 - mape: 14.4837 - mse: 1.9609e-04 - val_loss: 0.0394 - val_mae: 0.1642 - val_mape: 27.8744 - val_mse: 0.0394
Epoch 34/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.8189e-04 - mae: 0.0099 - mape: 9.1949 - mse: 1.8189e-04 - val_loss: 0.0372 - val_mae: 0.1584 - val_mape: 26.5633 - val_mse: 0.0372
Epoch 35/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.8501e-04 - mae: 0.0096 - mape: 13.8572 - mse: 1.8501e-04 - val_loss: 0.0381 - val_mae: 0.1612 - val_mape: 27.3267 - val_mse: 0.0381
Epoch 36/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.7906e-04 - mae: 0.0098 - mape: 8.0146 - mse: 1.7906e-04 - val_loss: 0.0348 - val_mae: 0.1528 - val_mape: 25.5436 - val_mse: 0.0348
Epoch 37/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.8610e-04 - mae: 0.0097 - mape: 9.0425 - mse: 1.8610e-04 - val_loss: 0.0351 - val_mae: 0.1545 - val_mape: 26.0959 - val_mse: 0.0351
Epoch 38/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.7540e-04 - mae: 0.0097 - mape: 10.1207 - mse: 1.7540e-04 - val_loss: 0.0343 - val_mae: 0.1529 - val_mape: 25.9087 - val_mse: 0.0343
Epoch 39/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.7392e-04 - mae: 0.0096 - mape: 6.9124 - mse: 1.7392e-04 - val_loss: 0.0365 - val_mae: 0.1596 - val_mape: 27.5641 - val_mse: 0.0365
Epoch 40/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.7107e-04 - mae: 0.0095 - mape: 7.4215 - mse: 1.7107e-04 - val_loss: 0.0302 - val_mae: 0.1428 - val_mape: 24.1046 - val_mse: 0.0302
Epoch 41/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.7748e-04 - mae: 0.0098 - mape: 8.4147 - mse: 1.7748e-04 - val_loss: 0.0306 - val_mae: 0.1446 - val_mape: 24.5798 - val_mse: 0.0306
Epoch 42/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.7389e-04 - mae: 0.0096 - mape: 8.3501 - mse: 1.7389e-04 - val_loss: 0.0318 - val_mae: 0.1483 - val_mape: 25.4926 - val_mse: 0.0318
Epoch 43/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.8515e-04 - mae: 0.0097 - mape: 13.9136 - mse: 1.8515e-04 - val_loss: 0.0269 - val_mae: 0.1345 - val_mape: 22.6307 - val_mse: 0.0269
Epoch 44/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.8008e-04 - mae: 0.0098 - mape: 7.9337 - mse: 1.8008e-04 - val_loss: 0.0310 - val_mae: 0.1469 - val_mape: 25.3194 - val_mse: 0.0310
Epoch 45/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6890e-04 - mae: 0.0096 - mape: 8.1213 - mse: 1.6890e-04 - val_loss: 0.0232 - val_mae: 0.1243 - val_mape: 20.7417 - val_mse: 0.0232
Epoch 46/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6826e-04 - mae: 0.0093 - mape: 7.5206 - mse: 1.6826e-04 - val_loss: 0.0219 - val_mae: 0.1210 - val_mape: 20.3038 - val_mse: 0.0219
Epoch 47/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.7858e-04 - mae: 0.0096 - mape: 7.5892 - mse: 1.7858e-04 - val_loss: 0.0230 - val_mae: 0.1249 - val_mape: 21.1085 - val_mse: 0.0230
Epoch 48/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5905e-04 - mae: 0.0092 - mape: 8.5035 - mse: 1.5905e-04 - val_loss: 0.0220 - val_mae: 0.1222 - val_mape: 20.7235 - val_mse: 0.0220
Epoch 49/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6879e-04 - mae: 0.0095 - mape: 7.5527 - mse: 1.6879e-04 - val_loss: 0.0210 - val_mae: 0.1191 - val_mape: 20.1451 - val_mse: 0.0210
Epoch 50/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.6633e-04 - mae: 0.0093 - mape: 6.9592 - mse: 1.6633e-04 - val_loss: 0.0205 - val_mae: 0.1179 - val_mape: 20.0132 - val_mse: 0.0205
Epoch 51/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.7661e-04 - mae: 0.0096 - mape: 8.5810 - mse: 1.7661e-04 - val_loss: 0.0197 - val_mae: 0.1163 - val_mape: 19.9255 - val_mse: 0.0197
Epoch 52/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.7022e-04 - mae: 0.0095 - mape: 7.1535 - mse: 1.7022e-04 - val_loss: 0.0188 - val_mae: 0.1134 - val_mape: 19.3636 - val_mse: 0.0188
Epoch 53/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.6343e-04 - mae: 0.0092 - mape: 9.6616 - mse: 1.6343e-04 - val_loss: 0.0164 - val_mae: 0.1050 - val_mape: 17.8114 - val_mse: 0.0164
Epoch 54/100
125/125 ━━━━━━━━━━━━━━━━━━━━ -0s -2981us/step - loss: 1.6917e-04 - mae: 0.0094 - mape: 10.2886 - mse: 1.6917e-04 - val_loss: 0.0144 - val_mae: 0.0979 - val_mape: 16.5359 - val_mse: 0.0144
Epoch 55/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.7133e-04 - mae: 0.0094 - mape: 11.5238 - mse: 1.7133e-04 - val_loss: 0.0168 - val_mae: 0.1081 - val_mape: 18.7902 - val_mse: 0.0168
Epoch 56/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5812e-04 - mae: 0.0091 - mape: 9.9822 - mse: 1.5812e-04 - val_loss: 0.0127 - val_mae: 0.0918 - val_mape: 15.5005 - val_mse: 0.0127
Epoch 57/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6665e-04 - mae: 0.0094 - mape: 6.2161 - mse: 1.6665e-04 - val_loss: 0.0137 - val_mae: 0.0970 - val_mape: 16.7594 - val_mse: 0.0137
Epoch 58/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5801e-04 - mae: 0.0092 - mape: 9.6384 - mse: 1.5801e-04 - val_loss: 0.0127 - val_mae: 0.0930 - val_mape: 15.9837 - val_mse: 0.0127
Epoch 59/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.7382e-04 - mae: 0.0095 - mape: 9.7539 - mse: 1.7382e-04 - val_loss: 0.0137 - val_mae: 0.0970 - val_mape: 16.7869 - val_mse: 0.0137
Epoch 60/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5778e-04 - mae: 0.0092 - mape: 7.7377 - mse: 1.5778e-04 - val_loss: 0.0105 - val_mae: 0.0834 - val_mape: 14.1690 - val_mse: 0.0105
Epoch 61/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.7900e-04 - mae: 0.0099 - mape: 6.7528 - mse: 1.7900e-04 - val_loss: 0.0116 - val_mae: 0.0894 - val_mape: 15.5674 - val_mse: 0.0116
Epoch 62/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5937e-04 - mae: 0.0092 - mape: 8.4486 - mse: 1.5937e-04 - val_loss: 0.0116 - val_mae: 0.0896 - val_mape: 15.6808 - val_mse: 0.0116
Epoch 63/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5792e-04 - mae: 0.0091 - mape: 7.2318 - mse: 1.5792e-04 - val_loss: 0.0107 - val_mae: 0.0855 - val_mape: 14.8737 - val_mse: 0.0107
Epoch 64/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5309e-04 - mae: 0.0090 - mape: 9.6968 - mse: 1.5309e-04 - val_loss: 0.0089 - val_mae: 0.0777 - val_mape: 13.6099 - val_mse: 0.0089
Epoch 65/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5726e-04 - mae: 0.0089 - mape: 8.4310 - mse: 1.5726e-04 - val_loss: 0.0087 - val_mae: 0.0770 - val_mape: 13.4431 - val_mse: 0.0087
Epoch 66/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6287e-04 - mae: 0.0093 - mape: 10.1330 - mse: 1.6287e-04 - val_loss: 0.0082 - val_mae: 0.0741 - val_mape: 12.8818 - val_mse: 0.0082
Epoch 67/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6702e-04 - mae: 0.0095 - mape: 12.8640 - mse: 1.6702e-04 - val_loss: 0.0084 - val_mae: 0.0753 - val_mape: 13.1596 - val_mse: 0.0084
Epoch 68/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5402e-04 - mae: 0.0089 - mape: 6.2266 - mse: 1.5402e-04 - val_loss: 0.0060 - val_mae: 0.0625 - val_mape: 10.8200 - val_mse: 0.0060
Epoch 69/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6674e-04 - mae: 0.0094 - mape: 7.9374 - mse: 1.6674e-04 - val_loss: 0.0071 - val_mae: 0.0699 - val_mape: 12.5614 - val_mse: 0.0071
Epoch 70/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5815e-04 - mae: 0.0091 - mape: 5.4534 - mse: 1.5815e-04 - val_loss: 0.0051 - val_mae: 0.0575 - val_mape: 10.0411 - val_mse: 0.0051
Epoch 71/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6189e-04 - mae: 0.0091 - mape: 9.0190 - mse: 1.6189e-04 - val_loss: 0.0079 - val_mae: 0.0737 - val_mape: 13.1620 - val_mse: 0.0079
Epoch 72/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5436e-04 - mae: 0.0090 - mape: 7.4473 - mse: 1.5436e-04 - val_loss: 0.0058 - val_mae: 0.0612 - val_mape: 10.6030 - val_mse: 0.0058
Epoch 73/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.7188e-04 - mae: 0.0095 - mape: 8.1603 - mse: 1.7188e-04 - val_loss: 0.0060 - val_mae: 0.0635 - val_mape: 11.1955 - val_mse: 0.0060
Epoch 74/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5844e-04 - mae: 0.0092 - mape: 8.2647 - mse: 1.5844e-04 - val_loss: 0.0044 - val_mae: 0.0531 - val_mape: 9.2673 - val_mse: 0.0044
Epoch 75/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.6308e-04 - mae: 0.0095 - mape: 5.2189 - mse: 1.6308e-04 - val_loss: 0.0061 - val_mae: 0.0646 - val_mape: 11.6217 - val_mse: 0.0061
Epoch 76/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5079e-04 - mae: 0.0086 - mape: 5.9463 - mse: 1.5079e-04 - val_loss: 0.0057 - val_mae: 0.0621 - val_mape: 11.1197 - val_mse: 0.0057
Epoch 77/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.6763e-04 - mae: 0.0094 - mape: 6.5305 - mse: 1.6763e-04 - val_loss: 0.0044 - val_mae: 0.0536 - val_mape: 9.5260 - val_mse: 0.0044
Epoch 78/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5029e-04 - mae: 0.0087 - mape: 8.1382 - mse: 1.5029e-04 - val_loss: 0.0051 - val_mae: 0.0584 - val_mape: 10.4689 - val_mse: 0.0051
Epoch 79/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.6030e-04 - mae: 0.0094 - mape: 11.8809 - mse: 1.6030e-04 - val_loss: 0.0047 - val_mae: 0.0567 - val_mape: 10.4147 - val_mse: 0.0047
Epoch 80/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.6140e-04 - mae: 0.0092 - mape: 9.7594 - mse: 1.6140e-04 - val_loss: 0.0035 - val_mae: 0.0468 - val_mape: 8.3994 - val_mse: 0.0035
Epoch 81/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.6172e-04 - mae: 0.0092 - mape: 7.7242 - mse: 1.6172e-04 - val_loss: 0.0034 - val_mae: 0.0468 - val_mape: 8.4871 - val_mse: 0.0034
Epoch 82/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5489e-04 - mae: 0.0089 - mape: 8.8454 - mse: 1.5489e-04 - val_loss: 0.0033 - val_mae: 0.0457 - val_mape: 8.1950 - val_mse: 0.0033
Epoch 83/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.7392e-04 - mae: 0.0094 - mape: 11.3039 - mse: 1.7392e-04 - val_loss: 0.0037 - val_mae: 0.0493 - val_mape: 8.9827 - val_mse: 0.0037
Epoch 84/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.6465e-04 - mae: 0.0091 - mape: 7.5747 - mse: 1.6465e-04 - val_loss: 0.0036 - val_mae: 0.0488 - val_mape: 8.9208 - val_mse: 0.0036
Epoch 85/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.7299e-04 - mae: 0.0094 - mape: 10.1985 - mse: 1.7299e-04 - val_loss: 0.0031 - val_mae: 0.0453 - val_mape: 8.4646 - val_mse: 0.0031
Epoch 86/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4902e-04 - mae: 0.0088 - mape: 7.2525 - mse: 1.4902e-04 - val_loss: 0.0025 - val_mae: 0.0386 - val_mape: 7.0158 - val_mse: 0.0025
Epoch 87/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5177e-04 - mae: 0.0089 - mape: 8.0670 - mse: 1.5177e-04 - val_loss: 0.0023 - val_mae: 0.0371 - val_mape: 6.7976 - val_mse: 0.0023
Epoch 88/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4585e-04 - mae: 0.0087 - mape: 7.2573 - mse: 1.4585e-04 - val_loss: 0.0022 - val_mae: 0.0362 - val_mape: 6.7958 - val_mse: 0.0022
Epoch 89/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6279e-04 - mae: 0.0094 - mape: 6.8223 - mse: 1.6279e-04 - val_loss: 0.0029 - val_mae: 0.0431 - val_mape: 8.0900 - val_mse: 0.0029
Epoch 90/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.4762e-04 - mae: 0.0089 - mape: 9.9982 - mse: 1.4762e-04 - val_loss: 0.0029 - val_mae: 0.0431 - val_mape: 8.0465 - val_mse: 0.0029
Epoch 91/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5136e-04 - mae: 0.0088 - mape: 5.7285 - mse: 1.5136e-04 - val_loss: 0.0032 - val_mae: 0.0455 - val_mape: 8.6173 - val_mse: 0.0032
Epoch 92/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6395e-04 - mae: 0.0094 - mape: 8.0336 - mse: 1.6395e-04 - val_loss: 0.0026 - val_mae: 0.0395 - val_mape: 7.1911 - val_mse: 0.0026
Epoch 93/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4510e-04 - mae: 0.0087 - mape: 9.6793 - mse: 1.4510e-04 - val_loss: 0.0023 - val_mae: 0.0374 - val_mape: 6.9282 - val_mse: 0.0023
Epoch 94/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5013e-04 - mae: 0.0087 - mape: 8.7075 - mse: 1.5013e-04 - val_loss: 0.0018 - val_mae: 0.0313 - val_mape: 5.8834 - val_mse: 0.0018
Epoch 95/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4662e-04 - mae: 0.0088 - mape: 11.4223 - mse: 1.4662e-04 - val_loss: 0.0022 - val_mae: 0.0359 - val_mape: 6.7815 - val_mse: 0.0022
Epoch 96/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4952e-04 - mae: 0.0088 - mape: 7.3833 - mse: 1.4952e-04 - val_loss: 0.0031 - val_mae: 0.0442 - val_mape: 8.3393 - val_mse: 0.0031
Epoch 97/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.3208e-04 - mae: 0.0083 - mape: 5.8230 - mse: 1.3208e-04 - val_loss: 0.0019 - val_mae: 0.0325 - val_mape: 6.0412 - val_mse: 0.0019
Epoch 98/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4994e-04 - mae: 0.0087 - mape: 7.5545 - mse: 1.4994e-04 - val_loss: 0.0022 - val_mae: 0.0350 - val_mape: 6.4244 - val_mse: 0.0022
Epoch 99/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5008e-04 - mae: 0.0089 - mape: 13.9167 - mse: 1.5008e-04 - val_loss: 0.0022 - val_mae: 0.0352 - val_mape: 6.5351 - val_mse: 0.0022
Epoch 100/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5374e-04 - mae: 0.0089 - mape: 7.3485 - mse: 1.5374e-04 - val_loss: 0.0031 - val_mae: 0.0440 - val_mape: 8.3100 - val_mse: 0.0031

model_results = pd.DataFrame(columns=['Model', 'loss', 'mae', 'mape', 'mse'])
model_results
Model loss mae mape mse
prediction = modelA.evaluate(x_testA, y_testA, return_dict=True)
prediction
33/33 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 0.0976 - mae: 0.2818 - mape: 16.5300 - mse: 0.0976
{'loss': 0.20889300107955933,
 'mae': 0.3941859006881714,
 'mape': 19.527624130249023,
 'mse': 0.20889300107955933}
prediction['Model'] = 'modelA'
prediction
{'loss': 0.20889300107955933,
 'mae': 0.3941859006881714,
 'mape': 19.527624130249023,
 'mse': 0.20889300107955933,
 'Model': 'modelA'}
model_results.loc[len(model_results)+1] = prediction
model_results
Model loss mae mape mse
1 modelA 0.208893 0.394186 19.527624 0.208893
prediction = modelA(x_testA)
prediction
<tf.Tensor: shape=(1029, 1), dtype=float32, numpy=
array([[1.0645993],
       [1.0602218],
       [1.0624932],
       ...,
       [2.164799 ],
       [2.1283467],
       [2.0294127]], dtype=float32)>
def plot_performance(history, metric):

    # Set plot size
    plt.figure(figsize=(12, 7))

    # Store thmetric into string
    metric_string = metric 

    # Get the metric and validation metric
    metric = history.history[metric_string]
    val_metric = history.history[f'val_{metric_string}']

    # Get the epoch range
    epochs = range(1, len(metric) + 1)

    # Plot the training metric 
    plt.plot(epochs, metric, label=f'Train_{metric_string}')
    plt.plot(epochs, metric, 'C0o')

    # Plot the validation metric
    plt.plot(epochs, val_metric, label=f'Validation_{metric_string}')
    plt.plot(epochs, val_metric, 'C1o')

    # Plot thing extras
    plt.title(f'{metric_string} vs epochs')
    plt.xlabel('Epochs')
    plt.ylabel(metric_string)
    plt.minorticks_on()
    plt.grid(which='minor', alpha=0.2)
    plt.grid(which='major', alpha=0.5)
    plt.legend()
    plt.show()
plot_performance(historyA, 'loss')
plot_performance(historyA, 'mae')
plot_performance(historyA, 'mse')
plot_performance(historyA, 'mape')
Visualization
Visualization
Visualization
Visualization
def plot_prediction_full(prediction):
    # Plot size
    plt.figure(figsize=(10, 6))

    # Plot the training data 
    standardizedClosePrice['^GSPC'][:5000].plot()

    # Plot the testing data
    plt.plot(
        [x for x in range(5000, 5000+len(prediction))], 
        standardizedClosePrice['^GSPC'][5000:5000+len(prediction)], 
        color = 'C0', ls='--', alpha=0.8, 
        label='Testing Data')

    # Plot the prediction
    plt.plot([x for x in range(5000, 5000+len(prediction))], prediction.numpy(), label='Prediction')

    # Plotting extras
    plt.minorticks_on()
    plt.grid(which='minor', alpha=0.2)
    plt.grid(which='major', alpha=0.5)
    plt.legend()
plot_prediction_full(prediction)
Visualization
def plot_prediction(prediction):
    # Plot size
    plt.figure(figsize=(10, 6))

    # Plot the testing data
    plt.plot([x for x in range(5000, 5000+len(prediction))], standardizedClosePrice['^GSPC'][5000:5000+len(prediction)], color = 'C0', ls='--', alpha=0.8, label='Testing Data')

    # Plot the prediction
    plt.plot([x for x in range(5000, 5000+len(prediction))], prediction.numpy(), color = 'C1', label='Prediction')

    # Plotting extras
    plt.minorticks_on()
    plt.grid(which='minor', alpha=0.2)
    plt.grid(which='major', alpha=0.5)
    plt.legend()
plot_prediction(prediction)
Visualization

There are several rounds of training, noticed that the results can be inconsistent due to the random initializations of weights, as shown in the following screenshots taken for few of the trainings attempted.

We will now include some batch normalization and regularization, to see if it helps with the consistency, before moving on. We will also increase the epochs, in case the models requires more for training, due to the added process.

inputs = keras.Input(shape=(7,1))
lstm = LSTM(7, activation='relu')

x = lstm(inputs)
x = BatchNormalization()(x)
outputs = Dense(1)(x)

modelA2 = keras.Model(inputs = inputs, outputs = outputs, name = "modelA2" )
modelA2.summary()
Model: "modelA2"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ input_layer_1 (InputLayer)      │ (None, 7, 1)           │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ lstm_1 (LSTM)                   │ (None, 7)              │           252 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization             │ (None, 7)              │            28 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_1 (Dense)                 │ (None, 1)              │             8 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
Total params: 288 (1.12 KB)
Trainable params: 274 (1.07 KB)
Non-trainable params: 14 (56.00 B)
keras.utils.plot_model(modelA2, "modelA2.png", show_shapes=True) 
Visualization
modelA2.compile(
    optimizer='adam', 
    loss='mse', 
    metrics=['mae', 'mse', 'mape']
    )

historyA2 = modelA2.fit(
    x_trainA, y_trainA, 
    epochs=130, batch_size=32, 
    validation_data=(x_validA, y_validA)
)
Epoch 1/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 3s 9ms/step - loss: 0.2304 - mae: 0.4544 - mape: 352.2364 - mse: 0.2304 - val_loss: 0.9811 - val_mae: 0.9513 - val_mape: 211.8312 - val_mse: 0.9811
Epoch 2/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0064 - mae: 0.0632 - mape: 83.7934 - mse: 0.0064 - val_loss: 0.7590 - val_mae: 0.8346 - val_mape: 184.9805 - val_mse: 0.7590
Epoch 3/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0045 - mae: 0.0517 - mape: 73.5184 - mse: 0.0045 - val_loss: 0.4591 - val_mae: 0.6425 - val_mape: 139.2684 - val_mse: 0.4591
Epoch 4/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0043 - mae: 0.0508 - mape: 58.6341 - mse: 0.0043 - val_loss: 0.2491 - val_mae: 0.4813 - val_mape: 109.0611 - val_mse: 0.2491
Epoch 5/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0047 - mae: 0.0544 - mape: 177.0303 - mse: 0.0047 - val_loss: 0.0101 - val_mae: 0.0840 - val_mape: 27.5090 - val_mse: 0.0101
Epoch 6/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0034 - mae: 0.0465 - mape: 46.0566 - mse: 0.0034 - val_loss: 0.0384 - val_mae: 0.1831 - val_mape: 42.6269 - val_mse: 0.0384
Epoch 7/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0033 - mae: 0.0452 - mape: 62.1597 - mse: 0.0033 - val_loss: 0.0177 - val_mae: 0.1100 - val_mape: 22.0832 - val_mse: 0.0177
Epoch 8/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0023 - mae: 0.0381 - mape: 45.9182 - mse: 0.0023 - val_loss: 0.4109 - val_mae: 0.5592 - val_mape: 105.9230 - val_mse: 0.4109
Epoch 9/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0030 - mae: 0.0424 - mape: 58.0186 - mse: 0.0030 - val_loss: 0.0742 - val_mae: 0.2345 - val_mape: 43.8981 - val_mse: 0.0742
Epoch 10/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0025 - mae: 0.0394 - mape: 57.1976 - mse: 0.0025 - val_loss: 0.0840 - val_mae: 0.2619 - val_mape: 52.2828 - val_mse: 0.0840
Epoch 11/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0025 - mae: 0.0379 - mape: 40.0301 - mse: 0.0025 - val_loss: 0.0263 - val_mae: 0.1458 - val_mape: 28.7920 - val_mse: 0.0263
Epoch 12/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0032 - mae: 0.0445 - mape: 35.9333 - mse: 0.0032 - val_loss: 0.0828 - val_mae: 0.2223 - val_mape: 37.4769 - val_mse: 0.0828
Epoch 13/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0029 - mae: 0.0444 - mape: 44.7017 - mse: 0.0029 - val_loss: 0.1148 - val_mae: 0.2597 - val_mape: 42.8526 - val_mse: 0.1148
Epoch 14/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0031 - mae: 0.0431 - mape: 60.4832 - mse: 0.0031 - val_loss: 0.1304 - val_mae: 0.2800 - val_mape: 47.1294 - val_mse: 0.1304
Epoch 15/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0035 - mae: 0.0477 - mape: 47.9999 - mse: 0.0035 - val_loss: 0.1421 - val_mae: 0.2780 - val_mape: 43.4093 - val_mse: 0.1421
Epoch 16/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0033 - mae: 0.0456 - mape: 41.0600 - mse: 0.0033 - val_loss: 0.0334 - val_mae: 0.1160 - val_mape: 17.9260 - val_mse: 0.0334
Epoch 17/130
125/125 ━━━━━━━━━━━━━━━━━━━━ -0s -3010us/step - loss: 0.0034 - mae: 0.0455 - mape: 42.6381 - mse: 0.0034 - val_loss: 0.1358 - val_mae: 0.2912 - val_mape: 50.4662 - val_mse: 0.1358
Epoch 18/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0028 - mae: 0.0409 - mape: 66.9674 - mse: 0.0028 - val_loss: 0.0389 - val_mae: 0.1258 - val_mape: 21.2429 - val_mse: 0.0389
Epoch 19/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0033 - mae: 0.0469 - mape: 34.4760 - mse: 0.0033 - val_loss: 0.0914 - val_mae: 0.2238 - val_mape: 36.8276 - val_mse: 0.0914
Epoch 20/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0033 - mae: 0.0428 - mape: 71.1296 - mse: 0.0033 - val_loss: 0.0408 - val_mae: 0.1272 - val_mape: 20.8273 - val_mse: 0.0408
Epoch 21/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0031 - mae: 0.0466 - mape: 56.6182 - mse: 0.0031 - val_loss: 0.0891 - val_mae: 0.2109 - val_mape: 32.4950 - val_mse: 0.0891
Epoch 22/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0027 - mae: 0.0416 - mape: 45.1067 - mse: 0.0027 - val_loss: 0.1478 - val_mae: 0.2767 - val_mape: 42.4896 - val_mse: 0.1478
Epoch 23/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0028 - mae: 0.0443 - mape: 37.0416 - mse: 0.0028 - val_loss: 0.0560 - val_mae: 0.1607 - val_mape: 25.4486 - val_mse: 0.0560
Epoch 24/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0039 - mae: 0.0493 - mape: 41.6440 - mse: 0.0039 - val_loss: 0.2014 - val_mae: 0.3221 - val_mape: 48.7050 - val_mse: 0.2014
Epoch 25/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0027 - mae: 0.0417 - mape: 43.4345 - mse: 0.0027 - val_loss: 0.2024 - val_mae: 0.3271 - val_mape: 50.9957 - val_mse: 0.2024
Epoch 26/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0042 - mae: 0.0516 - mape: 40.2373 - mse: 0.0042 - val_loss: 0.1387 - val_mae: 0.2459 - val_mape: 35.9346 - val_mse: 0.1387
Epoch 27/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0026 - mae: 0.0401 - mape: 49.2123 - mse: 0.0026 - val_loss: 0.3388 - val_mae: 0.4183 - val_mape: 62.7527 - val_mse: 0.3388
Epoch 28/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0031 - mae: 0.0464 - mape: 44.1288 - mse: 0.0031 - val_loss: 0.1944 - val_mae: 0.2945 - val_mape: 43.7039 - val_mse: 0.1944
Epoch 29/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0037 - mae: 0.0511 - mape: 44.3325 - mse: 0.0037 - val_loss: 0.1274 - val_mae: 0.2271 - val_mape: 33.9642 - val_mse: 0.1274
Epoch 30/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0031 - mae: 0.0440 - mape: 61.5560 - mse: 0.0031 - val_loss: 0.2496 - val_mae: 0.3482 - val_mape: 51.2524 - val_mse: 0.2496
Epoch 31/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0030 - mae: 0.0445 - mape: 57.2148 - mse: 0.0030 - val_loss: 0.2043 - val_mae: 0.3010 - val_mape: 43.0755 - val_mse: 0.2043
Epoch 32/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0031 - mae: 0.0445 - mape: 31.6314 - mse: 0.0031 - val_loss: 0.2777 - val_mae: 0.3595 - val_mape: 52.2669 - val_mse: 0.2777
Epoch 33/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0020 - mae: 0.0357 - mape: 47.5298 - mse: 0.0020 - val_loss: 0.5629 - val_mae: 0.5722 - val_mape: 93.0629 - val_mse: 0.5629
Epoch 34/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0028 - mae: 0.0403 - mape: 45.3275 - mse: 0.0028 - val_loss: 0.3985 - val_mae: 0.4408 - val_mape: 64.7148 - val_mse: 0.3985
Epoch 35/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0024 - mae: 0.0395 - mape: 41.7900 - mse: 0.0024 - val_loss: 0.4370 - val_mae: 0.4602 - val_mape: 67.4517 - val_mse: 0.4370
Epoch 36/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0041 - mae: 0.0495 - mape: 57.2930 - mse: 0.0041 - val_loss: 0.3648 - val_mae: 0.4167 - val_mape: 60.3908 - val_mse: 0.3648
Epoch 37/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0038 - mae: 0.0491 - mape: 43.7929 - mse: 0.0038 - val_loss: 0.3375 - val_mae: 0.3991 - val_mape: 57.6205 - val_mse: 0.3375
Epoch 38/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0032 - mae: 0.0445 - mape: 44.9346 - mse: 0.0032 - val_loss: 0.2231 - val_mae: 0.3069 - val_mape: 43.2822 - val_mse: 0.2231
Epoch 39/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0033 - mae: 0.0443 - mape: 60.4043 - mse: 0.0033 - val_loss: 0.2939 - val_mae: 0.3666 - val_mape: 52.6707 - val_mse: 0.2939
Epoch 40/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0027 - mae: 0.0422 - mape: 33.4670 - mse: 0.0027 - val_loss: 0.1672 - val_mae: 0.2549 - val_mape: 40.7515 - val_mse: 0.1672
Epoch 41/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0027 - mae: 0.0427 - mape: 43.7689 - mse: 0.0027 - val_loss: 0.2764 - val_mae: 0.3447 - val_mape: 49.2519 - val_mse: 0.2764
Epoch 42/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0036 - mae: 0.0495 - mape: 87.4417 - mse: 0.0036 - val_loss: 0.5176 - val_mae: 0.5312 - val_mape: 84.5509 - val_mse: 0.5176
Epoch 43/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0027 - mae: 0.0417 - mape: 37.9827 - mse: 0.0027 - val_loss: 0.2909 - val_mae: 0.3490 - val_mape: 49.8802 - val_mse: 0.2909
Epoch 44/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0036 - mae: 0.0490 - mape: 55.5642 - mse: 0.0036 - val_loss: 0.4364 - val_mae: 0.4516 - val_mape: 64.8427 - val_mse: 0.4364
Epoch 45/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0039 - mae: 0.0495 - mape: 62.8055 - mse: 0.0039 - val_loss: 0.4360 - val_mae: 0.4446 - val_mape: 63.2533 - val_mse: 0.4360
Epoch 46/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0030 - mae: 0.0431 - mape: 43.1273 - mse: 0.0030 - val_loss: 0.4814 - val_mae: 0.4727 - val_mape: 67.6207 - val_mse: 0.4814
Epoch 47/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0036 - mae: 0.0485 - mape: 66.7488 - mse: 0.0036 - val_loss: 0.4339 - val_mae: 0.4408 - val_mape: 62.4789 - val_mse: 0.4339
Epoch 48/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0026 - mae: 0.0403 - mape: 57.5595 - mse: 0.0026 - val_loss: 0.4633 - val_mae: 0.4609 - val_mape: 65.6655 - val_mse: 0.4633
Epoch 49/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0029 - mae: 0.0418 - mape: 47.6672 - mse: 0.0029 - val_loss: 0.4838 - val_mae: 0.4684 - val_mape: 66.6059 - val_mse: 0.4838
Epoch 50/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0023 - mae: 0.0377 - mape: 41.5892 - mse: 0.0023 - val_loss: 0.4052 - val_mae: 0.4133 - val_mape: 58.7382 - val_mse: 0.4052
Epoch 51/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0023 - mae: 0.0407 - mape: 59.3693 - mse: 0.0023 - val_loss: 0.7599 - val_mae: 0.6045 - val_mape: 87.8671 - val_mse: 0.7599
Epoch 52/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0038 - mae: 0.0506 - mape: 101.0241 - mse: 0.0038 - val_loss: 0.6846 - val_mae: 0.5897 - val_mape: 88.8934 - val_mse: 0.6846
Epoch 53/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0033 - mae: 0.0460 - mape: 43.9866 - mse: 0.0033 - val_loss: 0.8149 - val_mae: 0.6553 - val_mape: 100.7044 - val_mse: 0.8149
Epoch 54/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0023 - mae: 0.0390 - mape: 55.9869 - mse: 0.0023 - val_loss: 0.7039 - val_mae: 0.5946 - val_mape: 88.7071 - val_mse: 0.7039
Epoch 55/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0025 - mae: 0.0396 - mape: 32.4613 - mse: 0.0025 - val_loss: 0.6748 - val_mae: 0.5761 - val_mape: 84.7350 - val_mse: 0.6748
Epoch 56/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0035 - mae: 0.0478 - mape: 40.2754 - mse: 0.0035 - val_loss: 0.7842 - val_mae: 0.6331 - val_mape: 95.5768 - val_mse: 0.7842
Epoch 57/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0026 - mae: 0.0414 - mape: 36.1480 - mse: 0.0026 - val_loss: 0.8687 - val_mae: 0.6775 - val_mape: 104.4692 - val_mse: 0.8687
Epoch 58/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0036 - mae: 0.0497 - mape: 55.8671 - mse: 0.0036 - val_loss: 0.8319 - val_mae: 0.6604 - val_mape: 101.6698 - val_mse: 0.8319
Epoch 59/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0038 - mae: 0.0500 - mape: 67.2191 - mse: 0.0038 - val_loss: 0.8210 - val_mae: 0.6451 - val_mape: 96.3792 - val_mse: 0.8210
Epoch 60/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0037 - mae: 0.0490 - mape: 49.0463 - mse: 0.0037 - val_loss: 0.7499 - val_mae: 0.6070 - val_mape: 88.8749 - val_mse: 0.7499
Epoch 61/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0030 - mae: 0.0437 - mape: 46.7219 - mse: 0.0030 - val_loss: 0.8090 - val_mae: 0.6497 - val_mape: 99.2613 - val_mse: 0.8090
Epoch 62/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0028 - mae: 0.0408 - mape: 47.6703 - mse: 0.0028 - val_loss: 0.6583 - val_mae: 0.5702 - val_mape: 84.6285 - val_mse: 0.6583
Epoch 63/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0035 - mae: 0.0484 - mape: 47.8627 - mse: 0.0035 - val_loss: 0.6683 - val_mae: 0.5672 - val_mape: 82.5977 - val_mse: 0.6683
Epoch 64/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0020 - mae: 0.0360 - mape: 31.4699 - mse: 0.0020 - val_loss: 0.8201 - val_mae: 0.6576 - val_mape: 101.2133 - val_mse: 0.8201
Epoch 65/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0025 - mae: 0.0393 - mape: 34.8977 - mse: 0.0025 - val_loss: 0.6004 - val_mae: 0.5428 - val_mape: 80.5765 - val_mse: 0.6004
Epoch 66/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0038 - mae: 0.0515 - mape: 45.7479 - mse: 0.0038 - val_loss: 0.6711 - val_mae: 0.5845 - val_mape: 88.2431 - val_mse: 0.6711
Epoch 67/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0027 - mae: 0.0419 - mape: 45.1449 - mse: 0.0027 - val_loss: 0.6948 - val_mae: 0.5919 - val_mape: 88.4750 - val_mse: 0.6948
Epoch 68/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0038 - mae: 0.0517 - mape: 49.6325 - mse: 0.0038 - val_loss: 0.7849 - val_mae: 0.6365 - val_mape: 96.2572 - val_mse: 0.7849
Epoch 69/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0026 - mae: 0.0414 - mape: 55.9731 - mse: 0.0026 - val_loss: 0.5702 - val_mae: 0.5231 - val_mape: 76.1960 - val_mse: 0.5702
Epoch 70/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0022 - mae: 0.0370 - mape: 47.4017 - mse: 0.0022 - val_loss: 0.5415 - val_mae: 0.5143 - val_mape: 76.3899 - val_mse: 0.5415
Epoch 71/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0034 - mae: 0.0457 - mape: 56.0010 - mse: 0.0034 - val_loss: 0.5594 - val_mae: 0.5111 - val_mape: 73.3745 - val_mse: 0.5594
Epoch 72/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0029 - mae: 0.0430 - mape: 56.3494 - mse: 0.0029 - val_loss: 0.6304 - val_mae: 0.5631 - val_mape: 84.6448 - val_mse: 0.6304
Epoch 73/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0036 - mae: 0.0490 - mape: 47.9762 - mse: 0.0036 - val_loss: 0.6883 - val_mae: 0.5955 - val_mape: 90.6318 - val_mse: 0.6883
Epoch 74/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0042 - mae: 0.0534 - mape: 51.7393 - mse: 0.0042 - val_loss: 0.6799 - val_mae: 0.5881 - val_mape: 88.9240 - val_mse: 0.6799
Epoch 75/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0030 - mae: 0.0425 - mape: 49.2033 - mse: 0.0030 - val_loss: 0.7354 - val_mae: 0.6151 - val_mape: 93.1346 - val_mse: 0.7354
Epoch 76/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0029 - mae: 0.0439 - mape: 39.4095 - mse: 0.0029 - val_loss: 0.5991 - val_mae: 0.5297 - val_mape: 76.1728 - val_mse: 0.5991
Epoch 77/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0029 - mae: 0.0437 - mape: 63.1187 - mse: 0.0029 - val_loss: 0.5106 - val_mae: 0.5014 - val_mape: 75.4646 - val_mse: 0.5106
Epoch 78/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0034 - mae: 0.0474 - mape: 46.9874 - mse: 0.0034 - val_loss: 0.5672 - val_mae: 0.5195 - val_mape: 75.2369 - val_mse: 0.5672
Epoch 79/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0034 - mae: 0.0468 - mape: 47.7685 - mse: 0.0034 - val_loss: 0.6210 - val_mae: 0.5586 - val_mape: 83.7798 - val_mse: 0.6210
Epoch 80/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0026 - mae: 0.0401 - mape: 40.9689 - mse: 0.0026 - val_loss: 0.6946 - val_mae: 0.5945 - val_mape: 89.5703 - val_mse: 0.6946
Epoch 81/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0031 - mae: 0.0445 - mape: 68.3848 - mse: 0.0031 - val_loss: 0.5987 - val_mae: 0.5471 - val_mape: 81.8349 - val_mse: 0.5987
Epoch 82/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0027 - mae: 0.0406 - mape: 42.8361 - mse: 0.0027 - val_loss: 0.3802 - val_mae: 0.3955 - val_mape: 58.6502 - val_mse: 0.3802
Epoch 83/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0034 - mae: 0.0452 - mape: 41.3756 - mse: 0.0034 - val_loss: 0.2971 - val_mae: 0.3415 - val_mape: 53.6447 - val_mse: 0.2971
Epoch 84/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0030 - mae: 0.0458 - mape: 45.0989 - mse: 0.0030 - val_loss: 0.2838 - val_mae: 0.3346 - val_mape: 56.4175 - val_mse: 0.2838
Epoch 85/130
125/125 ━━━━━━━━━━━━━━━━━━━━ -0s -3253us/step - loss: 0.0026 - mae: 0.0395 - mape: 40.2938 - mse: 0.0026 - val_loss: 0.3854 - val_mae: 0.3983 - val_mape: 58.7225 - val_mse: 0.3854
Epoch 86/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0032 - mae: 0.0456 - mape: 40.5118 - mse: 0.0032 - val_loss: 0.2610 - val_mae: 0.3176 - val_mape: 49.5595 - val_mse: 0.2610
Epoch 87/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0029 - mae: 0.0415 - mape: 48.2254 - mse: 0.0029 - val_loss: 0.3179 - val_mae: 0.3570 - val_mape: 55.7678 - val_mse: 0.3179
Epoch 88/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0026 - mae: 0.0411 - mape: 51.2456 - mse: 0.0026 - val_loss: 0.2933 - val_mae: 0.3419 - val_mape: 55.1959 - val_mse: 0.2933
Epoch 89/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0028 - mae: 0.0430 - mape: 83.9977 - mse: 0.0028 - val_loss: 0.2896 - val_mae: 0.3388 - val_mape: 52.8570 - val_mse: 0.2896
Epoch 90/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0039 - mae: 0.0502 - mape: 46.0864 - mse: 0.0039 - val_loss: 0.2034 - val_mae: 0.2843 - val_mape: 51.1682 - val_mse: 0.2034
Epoch 91/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0036 - mae: 0.0486 - mape: 64.4319 - mse: 0.0036 - val_loss: 0.2520 - val_mae: 0.3170 - val_mape: 53.4395 - val_mse: 0.2520
Epoch 92/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0033 - mae: 0.0460 - mape: 61.5319 - mse: 0.0033 - val_loss: 0.2256 - val_mae: 0.2955 - val_mape: 47.2326 - val_mse: 0.2256
Epoch 93/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0028 - mae: 0.0422 - mape: 54.1636 - mse: 0.0028 - val_loss: 0.2485 - val_mae: 0.3121 - val_mape: 49.1539 - val_mse: 0.2485
Epoch 94/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0020 - mae: 0.0349 - mape: 24.4975 - mse: 0.0020 - val_loss: 0.2195 - val_mae: 0.2907 - val_mape: 46.2166 - val_mse: 0.2195
Epoch 95/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0036 - mae: 0.0504 - mape: 49.0116 - mse: 0.0036 - val_loss: 0.2612 - val_mae: 0.3223 - val_mape: 52.0804 - val_mse: 0.2612
Epoch 96/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0030 - mae: 0.0439 - mape: 43.7031 - mse: 0.0030 - val_loss: 0.2596 - val_mae: 0.3197 - val_mape: 49.4866 - val_mse: 0.2596
Epoch 97/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0027 - mae: 0.0421 - mape: 42.7104 - mse: 0.0027 - val_loss: 0.2060 - val_mae: 0.2830 - val_mape: 48.1890 - val_mse: 0.2060
Epoch 98/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0024 - mae: 0.0390 - mape: 33.2170 - mse: 0.0024 - val_loss: 0.2339 - val_mae: 0.3036 - val_mape: 50.9996 - val_mse: 0.2339
Epoch 99/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0031 - mae: 0.0445 - mape: 40.9995 - mse: 0.0031 - val_loss: 0.2922 - val_mae: 0.3429 - val_mape: 53.3323 - val_mse: 0.2922
Epoch 100/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0029 - mae: 0.0437 - mape: 29.9261 - mse: 0.0029 - val_loss: 0.3175 - val_mae: 0.3601 - val_mape: 55.5133 - val_mse: 0.3175
Epoch 101/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0024 - mae: 0.0380 - mape: 53.2874 - mse: 0.0024 - val_loss: 0.2978 - val_mae: 0.3456 - val_mape: 53.8614 - val_mse: 0.2978
Epoch 102/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0026 - mae: 0.0420 - mape: 69.8530 - mse: 0.0026 - val_loss: 0.2558 - val_mae: 0.3164 - val_mape: 50.1524 - val_mse: 0.2558
Epoch 103/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0029 - mae: 0.0444 - mape: 79.3188 - mse: 0.0029 - val_loss: 0.3346 - val_mae: 0.3696 - val_mape: 57.3568 - val_mse: 0.3346
Epoch 104/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0026 - mae: 0.0415 - mape: 43.8547 - mse: 0.0026 - val_loss: 0.2893 - val_mae: 0.3403 - val_mape: 53.6254 - val_mse: 0.2893
Epoch 105/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0027 - mae: 0.0424 - mape: 33.5049 - mse: 0.0027 - val_loss: 0.2628 - val_mae: 0.3219 - val_mape: 50.9076 - val_mse: 0.2628
Epoch 106/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0030 - mae: 0.0432 - mape: 91.0828 - mse: 0.0030 - val_loss: 0.3227 - val_mae: 0.3632 - val_mape: 55.2859 - val_mse: 0.3227
Epoch 107/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0037 - mae: 0.0474 - mape: 45.5424 - mse: 0.0037 - val_loss: 0.2560 - val_mae: 0.3178 - val_mape: 51.3289 - val_mse: 0.2560
Epoch 108/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0034 - mae: 0.0472 - mape: 47.7095 - mse: 0.0034 - val_loss: 0.2153 - val_mae: 0.2888 - val_mape: 47.5662 - val_mse: 0.2153
Epoch 109/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0037 - mae: 0.0492 - mape: 51.6068 - mse: 0.0037 - val_loss: 0.3032 - val_mae: 0.3512 - val_mape: 51.6492 - val_mse: 0.3032
Epoch 110/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0033 - mae: 0.0455 - mape: 35.8657 - mse: 0.0033 - val_loss: 0.2961 - val_mae: 0.3459 - val_mape: 52.3906 - val_mse: 0.2961
Epoch 111/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0025 - mae: 0.0400 - mape: 31.8927 - mse: 0.0025 - val_loss: 0.2108 - val_mae: 0.2876 - val_mape: 48.5814 - val_mse: 0.2108
Epoch 112/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0027 - mae: 0.0406 - mape: 36.7855 - mse: 0.0027 - val_loss: 0.2534 - val_mae: 0.3174 - val_mape: 51.3475 - val_mse: 0.2534
Epoch 113/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0034 - mae: 0.0449 - mape: 37.0247 - mse: 0.0034 - val_loss: 0.2209 - val_mae: 0.2960 - val_mape: 50.7764 - val_mse: 0.2209
Epoch 114/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0032 - mae: 0.0453 - mape: 37.8341 - mse: 0.0032 - val_loss: 0.2557 - val_mae: 0.3199 - val_mape: 48.6546 - val_mse: 0.2557
Epoch 115/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0026 - mae: 0.0419 - mape: 43.8844 - mse: 0.0026 - val_loss: 0.2530 - val_mae: 0.3180 - val_mape: 48.4230 - val_mse: 0.2530
Epoch 116/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0029 - mae: 0.0416 - mape: 42.8126 - mse: 0.0029 - val_loss: 0.2177 - val_mae: 0.2918 - val_mape: 45.2717 - val_mse: 0.2177
Epoch 117/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0032 - mae: 0.0452 - mape: 59.9688 - mse: 0.0032 - val_loss: 0.1774 - val_mae: 0.2634 - val_mape: 45.3460 - val_mse: 0.1774
Epoch 118/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0029 - mae: 0.0447 - mape: 34.8085 - mse: 0.0029 - val_loss: 0.2027 - val_mae: 0.2814 - val_mape: 44.8779 - val_mse: 0.2027
Epoch 119/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0038 - mae: 0.0499 - mape: 77.7299 - mse: 0.0038 - val_loss: 0.1905 - val_mae: 0.2733 - val_mape: 45.5056 - val_mse: 0.1905
Epoch 120/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0036 - mae: 0.0481 - mape: 46.6346 - mse: 0.0036 - val_loss: 0.1823 - val_mae: 0.2677 - val_mape: 45.8408 - val_mse: 0.1823
Epoch 121/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0032 - mae: 0.0457 - mape: 60.6342 - mse: 0.0032 - val_loss: 0.2412 - val_mae: 0.3112 - val_mape: 48.8355 - val_mse: 0.2412
Epoch 122/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0028 - mae: 0.0428 - mape: 38.9446 - mse: 0.0028 - val_loss: 0.1775 - val_mae: 0.2656 - val_mape: 46.0252 - val_mse: 0.1775
Epoch 123/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0029 - mae: 0.0438 - mape: 43.1140 - mse: 0.0029 - val_loss: 0.1552 - val_mae: 0.2477 - val_mape: 43.8748 - val_mse: 0.1552
Epoch 124/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0024 - mae: 0.0371 - mape: 45.6156 - mse: 0.0024 - val_loss: 0.1983 - val_mae: 0.2806 - val_mape: 43.1813 - val_mse: 0.1983
Epoch 125/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0022 - mae: 0.0366 - mape: 31.3084 - mse: 0.0022 - val_loss: 0.1504 - val_mae: 0.2421 - val_mape: 40.9204 - val_mse: 0.1504
Epoch 126/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0026 - mae: 0.0414 - mape: 48.6847 - mse: 0.0026 - val_loss: 0.1742 - val_mae: 0.2605 - val_mape: 39.7990 - val_mse: 0.1742
Epoch 127/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0034 - mae: 0.0466 - mape: 73.8032 - mse: 0.0034 - val_loss: 0.1493 - val_mae: 0.2419 - val_mape: 41.8865 - val_mse: 0.1493
Epoch 128/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0029 - mae: 0.0439 - mape: 36.6659 - mse: 0.0029 - val_loss: 0.1063 - val_mae: 0.2022 - val_mape: 36.0337 - val_mse: 0.1063
Epoch 129/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0026 - mae: 0.0404 - mape: 66.0346 - mse: 0.0026 - val_loss: 0.1270 - val_mae: 0.2227 - val_mape: 39.4934 - val_mse: 0.1270
Epoch 130/130
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0028 - mae: 0.0403 - mape: 43.4676 - mse: 0.0028 - val_loss: 0.1541 - val_mae: 0.2459 - val_mape: 42.5709 - val_mse: 0.1541

prediction2 = modelA2.evaluate(x_testA, y_testA, return_dict=True)
33/33 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 18.5097 - mae: 3.8191 - mape: 222.4371 - mse: 18.5097
prediction2['Model'] = 'modelA2'
prediction2
{'loss': 43.72416687011719,
 'mae': 5.551799297332764,
 'mape': 271.3902893066406,
 'mse': 43.72416687011719,
 'Model': 'modelA2'}
model_results.loc[len(model_results)+1] = prediction2
model_results
Model loss mae mape mse
1 modelA 0.208893 0.394186 19.527624 0.208893
2 modelA2 43.724167 5.551799 271.390289 43.724167
prediction2 = modelA2(x_testA)
prediction2
<tf.Tensor: shape=(1029, 1), dtype=float32, numpy=
array([[ 2.776224 ],
       [ 2.763103 ],
       [ 2.8028638],
       ...,
       [18.89101  ],
       [18.835876 ],
       [18.358309 ]], dtype=float32)>
plot_performance(historyA2, 'loss')
plot_performance(historyA2, 'mae')
plot_performance(historyA2, 'mse')
plot_performance(historyA2, 'mape')
Visualization
Visualization
Visualization
Visualization
plot_prediction_full(prediction2)
Visualization

It is actually consistently worse now. We will try to add regularization and see will that help.

inputs = keras.Input(shape=(7,1))
lstm = LSTM(7, activation='relu', kernel_regularizer=regularizers.L2(l2=0.01))

x = lstm(inputs)
x = BatchNormalization(
    beta_regularizer=regularizers.L2(l2=0.01),
    gamma_regularizer = regularizers.L2(l2=0.01)
)(x)
outputs = Dense(1)(x)

modelA3 = keras.Model(inputs = inputs, outputs = outputs, name = "modelA3" )
modelA3.summary()
Model: "modelA3"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ input_layer_2 (InputLayer)      │ (None, 7, 1)           │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ lstm_2 (LSTM)                   │ (None, 7)              │           252 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_1           │ (None, 7)              │            28 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_2 (Dense)                 │ (None, 1)              │             8 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
Total params: 288 (1.12 KB)
Trainable params: 274 (1.07 KB)
Non-trainable params: 14 (56.00 B)
modelA3.compile(
    optimizer='adam', 
    loss='mse', 
    metrics=['mae', 'mse', 'mape']
    )

historyA3 = modelA3.fit(
    x_trainA, y_trainA, 
    epochs=160, batch_size=32, 
    validation_data=(x_validA, y_validA)
)
Epoch 1/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 3s 10ms/step - loss: 1.0498 - mae: 0.8043 - mape: 653.6310 - mse: 0.9587 - val_loss: 0.6229 - val_mae: 0.7141 - val_mape: 162.0030 - val_mse: 0.5412
Epoch 2/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0904 - mae: 0.0851 - mape: 84.6231 - mse: 0.0113 - val_loss: 0.4940 - val_mae: 0.6406 - val_mape: 152.9168 - val_mse: 0.4225
Epoch 3/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0732 - mae: 0.0471 - mape: 84.2208 - mse: 0.0040 - val_loss: 0.1558 - val_mae: 0.3005 - val_mape: 81.1876 - val_mse: 0.0927
Epoch 4/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0650 - mae: 0.0466 - mape: 57.5958 - mse: 0.0038 - val_loss: 0.1138 - val_mae: 0.1837 - val_mape: 35.8126 - val_mse: 0.0574
Epoch 5/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0581 - mae: 0.0439 - mape: 135.6928 - mse: 0.0033 - val_loss: 0.5481 - val_mae: 0.5989 - val_mape: 104.3145 - val_mse: 0.4974
Epoch 6/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0530 - mae: 0.0461 - mape: 83.7243 - mse: 0.0035 - val_loss: 0.8260 - val_mae: 0.7507 - val_mape: 130.7701 - val_mse: 0.7799
Epoch 7/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0497 - mae: 0.0496 - mape: 99.5757 - mse: 0.0047 - val_loss: 0.9147 - val_mae: 0.7983 - val_mape: 141.4312 - val_mse: 0.8724
Epoch 8/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0451 - mae: 0.0471 - mape: 100.4103 - mse: 0.0038 - val_loss: 0.6815 - val_mae: 0.6718 - val_mape: 117.4341 - val_mse: 0.6427
Epoch 9/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0410 - mae: 0.0431 - mape: 67.4183 - mse: 0.0029 - val_loss: 0.4593 - val_mae: 0.5293 - val_mape: 90.6974 - val_mse: 0.4233
Epoch 10/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0384 - mae: 0.0440 - mape: 66.8353 - mse: 0.0031 - val_loss: 0.3549 - val_mae: 0.4561 - val_mape: 79.6397 - val_mse: 0.3215
Epoch 11/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0366 - mae: 0.0473 - mape: 86.9255 - mse: 0.0038 - val_loss: 0.1791 - val_mae: 0.2748 - val_mape: 43.1588 - val_mse: 0.1480
Epoch 12/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0338 - mae: 0.0434 - mape: 59.0678 - mse: 0.0032 - val_loss: 0.1331 - val_mae: 0.2225 - val_mape: 35.5826 - val_mse: 0.1039
Epoch 13/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0325 - mae: 0.0502 - mape: 51.8934 - mse: 0.0038 - val_loss: 0.1057 - val_mae: 0.1869 - val_mape: 30.2783 - val_mse: 0.0784
Epoch 14/160
125/125 ━━━━━━━━━━━━━━━━━━━━ -0s -3044us/step - loss: 0.0296 - mae: 0.0414 - mape: 42.7220 - mse: 0.0028 - val_loss: 0.0713 - val_mae: 0.1215 - val_mape: 17.8704 - val_mse: 0.0457
Epoch 15/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0275 - mae: 0.0383 - mape: 65.1849 - mse: 0.0023 - val_loss: 0.0558 - val_mae: 0.0960 - val_mape: 14.3415 - val_mse: 0.0318
Epoch 16/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0262 - mae: 0.0409 - mape: 42.4006 - mse: 0.0027 - val_loss: 0.0440 - val_mae: 0.0744 - val_mape: 11.0187 - val_mse: 0.0216
Epoch 17/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0250 - mae: 0.0439 - mape: 60.8823 - mse: 0.0030 - val_loss: 0.0419 - val_mae: 0.0896 - val_mape: 16.0613 - val_mse: 0.0210
Epoch 18/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0230 - mae: 0.0411 - mape: 42.8468 - mse: 0.0024 - val_loss: 0.0357 - val_mae: 0.0839 - val_mape: 16.1426 - val_mse: 0.0162
Epoch 19/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0236 - mae: 0.0524 - mape: 55.6483 - mse: 0.0045 - val_loss: 0.0289 - val_mae: 0.0641 - val_mape: 11.6370 - val_mse: 0.0107
Epoch 20/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0202 - mae: 0.0396 - mape: 37.0174 - mse: 0.0024 - val_loss: 0.0214 - val_mae: 0.0339 - val_mape: 5.9899 - val_mse: 0.0045
Epoch 21/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0192 - mae: 0.0393 - mape: 63.0002 - mse: 0.0026 - val_loss: 0.0219 - val_mae: 0.0569 - val_mape: 10.8915 - val_mse: 0.0063
Epoch 22/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0189 - mae: 0.0477 - mape: 59.1209 - mse: 0.0036 - val_loss: 0.0199 - val_mae: 0.0588 - val_mape: 11.9761 - val_mse: 0.0056
Epoch 23/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0173 - mae: 0.0442 - mape: 54.0596 - mse: 0.0032 - val_loss: 0.0152 - val_mae: 0.0283 - val_mape: 5.9488 - val_mse: 0.0019
Epoch 24/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0171 - mae: 0.0531 - mape: 81.0931 - mse: 0.0042 - val_loss: 0.0158 - val_mae: 0.0465 - val_mape: 9.3043 - val_mse: 0.0037
Epoch 25/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0146 - mae: 0.0415 - mape: 53.2679 - mse: 0.0028 - val_loss: 0.0171 - val_mae: 0.0629 - val_mape: 12.3064 - val_mse: 0.0061
Epoch 26/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0136 - mae: 0.0437 - mape: 48.8425 - mse: 0.0029 - val_loss: 0.0113 - val_mae: 0.0261 - val_mape: 7.2710 - val_mse: 0.0014
Epoch 27/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0129 - mae: 0.0450 - mape: 46.6386 - mse: 0.0032 - val_loss: 0.0105 - val_mae: 0.0306 - val_mape: 8.5097 - val_mse: 0.0015
Epoch 28/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0115 - mae: 0.0412 - mape: 50.9085 - mse: 0.0027 - val_loss: 0.0136 - val_mae: 0.0598 - val_mape: 11.9926 - val_mse: 0.0055
Epoch 29/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0105 - mae: 0.0430 - mape: 70.5977 - mse: 0.0026 - val_loss: 0.0085 - val_mae: 0.0242 - val_mape: 6.4932 - val_mse: 0.0013
Epoch 30/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0096 - mae: 0.0410 - mape: 34.7886 - mse: 0.0026 - val_loss: 0.0083 - val_mae: 0.0280 - val_mape: 6.1629 - val_mse: 0.0019
Epoch 31/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0091 - mae: 0.0431 - mape: 48.0157 - mse: 0.0029 - val_loss: 0.0075 - val_mae: 0.0269 - val_mape: 5.8273 - val_mse: 0.0018
Epoch 32/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0084 - mae: 0.0426 - mape: 52.9981 - mse: 0.0029 - val_loss: 0.0071 - val_mae: 0.0305 - val_mape: 6.5017 - val_mse: 0.0021
Epoch 33/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0089 - mae: 0.0503 - mape: 48.2062 - mse: 0.0040 - val_loss: 0.0067 - val_mae: 0.0319 - val_mape: 6.7305 - val_mse: 0.0022
Epoch 34/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0079 - mae: 0.0480 - mape: 67.1204 - mse: 0.0036 - val_loss: 0.0051 - val_mae: 0.0216 - val_mape: 5.2349 - val_mse: 0.0012
Epoch 35/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0065 - mae: 0.0414 - mape: 32.9744 - mse: 0.0027 - val_loss: 0.0070 - val_mae: 0.0457 - val_mape: 9.5987 - val_mse: 0.0036
Epoch 36/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0066 - mae: 0.0446 - mape: 48.2754 - mse: 0.0032 - val_loss: 0.0049 - val_mae: 0.0277 - val_mape: 6.1271 - val_mse: 0.0018
Epoch 37/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0059 - mae: 0.0425 - mape: 74.4970 - mse: 0.0029 - val_loss: 0.0049 - val_mae: 0.0328 - val_mape: 7.5765 - val_mse: 0.0022
Epoch 38/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0064 - mae: 0.0500 - mape: 61.4095 - mse: 0.0037 - val_loss: 0.0053 - val_mae: 0.0404 - val_mape: 9.5929 - val_mse: 0.0028
Epoch 39/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0056 - mae: 0.0428 - mape: 33.4461 - mse: 0.0032 - val_loss: 0.0073 - val_mae: 0.0622 - val_mape: 15.7991 - val_mse: 0.0051
Epoch 40/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0060 - mae: 0.0476 - mape: 38.8509 - mse: 0.0038 - val_loss: 0.0036 - val_mae: 0.0250 - val_mape: 6.5576 - val_mse: 0.0015
Epoch 41/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0047 - mae: 0.0411 - mape: 64.0420 - mse: 0.0027 - val_loss: 0.0033 - val_mae: 0.0249 - val_mape: 6.8046 - val_mse: 0.0015
Epoch 42/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0055 - mae: 0.0453 - mape: 46.6236 - mse: 0.0036 - val_loss: 0.0036 - val_mae: 0.0309 - val_mape: 6.4888 - val_mse: 0.0019
Epoch 43/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0045 - mae: 0.0439 - mape: 56.2786 - mse: 0.0028 - val_loss: 0.0033 - val_mae: 0.0290 - val_mape: 8.5270 - val_mse: 0.0017
Epoch 44/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0042 - mae: 0.0385 - mape: 45.1735 - mse: 0.0026 - val_loss: 0.0036 - val_mae: 0.0330 - val_mape: 7.5972 - val_mse: 0.0021
Epoch 45/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0050 - mae: 0.0440 - mape: 39.6346 - mse: 0.0035 - val_loss: 0.0057 - val_mae: 0.0500 - val_mape: 9.3501 - val_mse: 0.0042
Epoch 46/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0038 - mae: 0.0386 - mape: 67.4499 - mse: 0.0023 - val_loss: 0.0129 - val_mae: 0.0910 - val_mape: 16.8778 - val_mse: 0.0115
Epoch 47/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0052 - mae: 0.0498 - mape: 58.3064 - mse: 0.0038 - val_loss: 0.0037 - val_mae: 0.0367 - val_mape: 10.2311 - val_mse: 0.0023
Epoch 48/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0047 - mae: 0.0479 - mape: 59.7022 - mse: 0.0034 - val_loss: 0.0060 - val_mae: 0.0527 - val_mape: 10.5641 - val_mse: 0.0047
Epoch 49/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0051 - mae: 0.0472 - mape: 38.1709 - mse: 0.0038 - val_loss: 0.0129 - val_mae: 0.0901 - val_mape: 16.1780 - val_mse: 0.0116
Epoch 50/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0042 - mae: 0.0440 - mape: 65.5934 - mse: 0.0030 - val_loss: 0.0112 - val_mae: 0.0805 - val_mape: 14.0435 - val_mse: 0.0100
Epoch 51/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0044 - mae: 0.0441 - mape: 69.1114 - mse: 0.0032 - val_loss: 0.0081 - val_mae: 0.0641 - val_mape: 12.0614 - val_mse: 0.0069
Epoch 52/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0038 - mae: 0.0392 - mape: 36.0448 - mse: 0.0026 - val_loss: 0.0085 - val_mae: 0.0661 - val_mape: 12.5206 - val_mse: 0.0074
Epoch 53/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0042 - mae: 0.0424 - mape: 51.0839 - mse: 0.0031 - val_loss: 0.0191 - val_mae: 0.1114 - val_mape: 19.4700 - val_mse: 0.0180
Epoch 54/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0052 - mae: 0.0512 - mape: 61.6841 - mse: 0.0041 - val_loss: 0.0087 - val_mae: 0.0666 - val_mape: 12.6030 - val_mse: 0.0076
Epoch 55/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0038 - mae: 0.0411 - mape: 59.9402 - mse: 0.0027 - val_loss: 0.0143 - val_mae: 0.0907 - val_mape: 15.4773 - val_mse: 0.0132
Epoch 56/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0058 - mae: 0.0553 - mape: 67.8310 - mse: 0.0048 - val_loss: 0.0163 - val_mae: 0.0990 - val_mape: 16.8331 - val_mse: 0.0152
Epoch 57/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0038 - mae: 0.0416 - mape: 37.9677 - mse: 0.0027 - val_loss: 0.0134 - val_mae: 0.0869 - val_mape: 14.9575 - val_mse: 0.0123
Epoch 58/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0049 - mae: 0.0483 - mape: 53.1525 - mse: 0.0038 - val_loss: 0.0070 - val_mae: 0.0586 - val_mape: 12.2024 - val_mse: 0.0059
Epoch 59/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0046 - mae: 0.0475 - mape: 66.1681 - mse: 0.0036 - val_loss: 0.0055 - val_mae: 0.0518 - val_mape: 13.4702 - val_mse: 0.0045
Epoch 60/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0039 - mae: 0.0425 - mape: 78.7632 - mse: 0.0029 - val_loss: 0.0061 - val_mae: 0.0547 - val_mape: 13.1617 - val_mse: 0.0051
Epoch 61/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0044 - mae: 0.0438 - mape: 47.6757 - mse: 0.0034 - val_loss: 0.0098 - val_mae: 0.0712 - val_mape: 13.3116 - val_mse: 0.0088
Epoch 62/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0052 - mae: 0.0521 - mape: 50.8476 - mse: 0.0042 - val_loss: 0.0088 - val_mae: 0.0670 - val_mape: 12.0871 - val_mse: 0.0078
Epoch 63/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0039 - mae: 0.0423 - mape: 63.5494 - mse: 0.0029 - val_loss: 0.0101 - val_mae: 0.0729 - val_mape: 13.1873 - val_mse: 0.0092
Epoch 64/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0043 - mae: 0.0461 - mape: 52.9926 - mse: 0.0034 - val_loss: 0.0244 - val_mae: 0.1323 - val_mape: 25.0669 - val_mse: 0.0235
Epoch 65/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0042 - mae: 0.0463 - mape: 100.6497 - mse: 0.0033 - val_loss: 0.0058 - val_mae: 0.0526 - val_mape: 12.0098 - val_mse: 0.0049
Epoch 66/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0042 - mae: 0.0463 - mape: 46.5771 - mse: 0.0033 - val_loss: 0.0086 - val_mae: 0.0655 - val_mape: 12.4378 - val_mse: 0.0077
Epoch 67/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0043 - mae: 0.0484 - mape: 67.6209 - mse: 0.0034 - val_loss: 0.0049 - val_mae: 0.0499 - val_mape: 15.3564 - val_mse: 0.0039
Epoch 68/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0044 - mae: 0.0478 - mape: 60.8184 - mse: 0.0035 - val_loss: 0.0097 - val_mae: 0.0694 - val_mape: 11.7734 - val_mse: 0.0088
Epoch 69/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0049 - mae: 0.0513 - mape: 76.1174 - mse: 0.0040 - val_loss: 0.0112 - val_mae: 0.0774 - val_mape: 13.2692 - val_mse: 0.0103
Epoch 70/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0044 - mae: 0.0480 - mape: 79.1377 - mse: 0.0035 - val_loss: 0.0050 - val_mae: 0.0477 - val_mape: 11.5387 - val_mse: 0.0041
Epoch 71/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0039 - mae: 0.0422 - mape: 46.2355 - mse: 0.0030 - val_loss: 0.0143 - val_mae: 0.0940 - val_mape: 17.7505 - val_mse: 0.0134
Epoch 72/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0040 - mae: 0.0445 - mape: 50.8184 - mse: 0.0031 - val_loss: 0.0147 - val_mae: 0.0949 - val_mape: 17.8496 - val_mse: 0.0138
Epoch 73/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0053 - mae: 0.0535 - mape: 64.2374 - mse: 0.0044 - val_loss: 0.0039 - val_mae: 0.0389 - val_mape: 9.0169 - val_mse: 0.0030
Epoch 74/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0038 - mae: 0.0445 - mape: 68.0081 - mse: 0.0030 - val_loss: 0.0038 - val_mae: 0.0357 - val_mape: 7.2810 - val_mse: 0.0030
Epoch 75/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0042 - mae: 0.0468 - mape: 51.1945 - mse: 0.0033 - val_loss: 0.0161 - val_mae: 0.1114 - val_mape: 25.1640 - val_mse: 0.0153
Epoch 76/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0046 - mae: 0.0460 - mape: 73.0212 - mse: 0.0038 - val_loss: 0.0047 - val_mae: 0.0424 - val_mape: 7.9880 - val_mse: 0.0040
Epoch 77/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0038 - mae: 0.0412 - mape: 52.1783 - mse: 0.0030 - val_loss: 0.0049 - val_mae: 0.0441 - val_mape: 8.5903 - val_mse: 0.0041
Epoch 78/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0043 - mae: 0.0471 - mape: 145.0358 - mse: 0.0035 - val_loss: 0.0038 - val_mae: 0.0402 - val_mape: 9.7243 - val_mse: 0.0030
Epoch 79/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0037 - mae: 0.0428 - mape: 38.2621 - mse: 0.0029 - val_loss: 0.0028 - val_mae: 0.0288 - val_mape: 6.8699 - val_mse: 0.0020
Epoch 80/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0038 - mae: 0.0437 - mape: 54.5851 - mse: 0.0030 - val_loss: 0.0030 - val_mae: 0.0312 - val_mape: 7.2586 - val_mse: 0.0022
Epoch 81/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0051 - mae: 0.0514 - mape: 75.3528 - mse: 0.0043 - val_loss: 0.0038 - val_mae: 0.0445 - val_mape: 11.2342 - val_mse: 0.0030
Epoch 82/160
125/125 ━━━━━━━━━━━━━━━━━━━━ -0s -3690us/step - loss: 0.0048 - mae: 0.0506 - mape: 55.8222 - mse: 0.0040 - val_loss: 0.0025 - val_mae: 0.0265 - val_mape: 6.2022 - val_mse: 0.0017
Epoch 83/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0048 - mae: 0.0500 - mape: 110.2879 - mse: 0.0040 - val_loss: 0.0039 - val_mae: 0.0398 - val_mape: 8.8901 - val_mse: 0.0031
Epoch 84/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0046 - mae: 0.0486 - mape: 70.2473 - mse: 0.0038 - val_loss: 0.0028 - val_mae: 0.0343 - val_mape: 8.4034 - val_mse: 0.0021
Epoch 85/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0048 - mae: 0.0510 - mape: 67.1185 - mse: 0.0040 - val_loss: 0.0135 - val_mae: 0.1009 - val_mape: 22.7241 - val_mse: 0.0127
Epoch 86/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0041 - mae: 0.0454 - mape: 44.0051 - mse: 0.0033 - val_loss: 0.0035 - val_mae: 0.0356 - val_mape: 7.8460 - val_mse: 0.0028
Epoch 87/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0044 - mae: 0.0503 - mape: 86.8435 - mse: 0.0036 - val_loss: 0.0045 - val_mae: 0.0459 - val_mape: 10.4123 - val_mse: 0.0037
Epoch 88/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0050 - mae: 0.0521 - mape: 50.5819 - mse: 0.0042 - val_loss: 0.0023 - val_mae: 0.0242 - val_mape: 5.7299 - val_mse: 0.0016
Epoch 89/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0034 - mae: 0.0396 - mape: 81.1890 - mse: 0.0026 - val_loss: 0.0099 - val_mae: 0.0854 - val_mape: 20.7380 - val_mse: 0.0092
Epoch 90/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0040 - mae: 0.0444 - mape: 68.0147 - mse: 0.0033 - val_loss: 0.0025 - val_mae: 0.0284 - val_mape: 7.2774 - val_mse: 0.0017
Epoch 91/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0045 - mae: 0.0488 - mape: 47.9863 - mse: 0.0037 - val_loss: 0.0054 - val_mae: 0.0546 - val_mape: 12.6382 - val_mse: 0.0047
Epoch 92/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0046 - mae: 0.0513 - mape: 85.7968 - mse: 0.0039 - val_loss: 0.0033 - val_mae: 0.0327 - val_mape: 7.1082 - val_mse: 0.0026
Epoch 93/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0036 - mae: 0.0424 - mape: 79.6546 - mse: 0.0029 - val_loss: 0.0026 - val_mae: 0.0276 - val_mape: 6.9838 - val_mse: 0.0019
Epoch 94/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0040 - mae: 0.0456 - mape: 50.0488 - mse: 0.0033 - val_loss: 0.0043 - val_mae: 0.0525 - val_mape: 13.5184 - val_mse: 0.0036
Epoch 95/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0043 - mae: 0.0478 - mape: 89.1687 - mse: 0.0036 - val_loss: 0.0045 - val_mae: 0.0462 - val_mape: 10.2563 - val_mse: 0.0038
Epoch 96/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0035 - mae: 0.0417 - mape: 79.5820 - mse: 0.0028 - val_loss: 0.0024 - val_mae: 0.0251 - val_mape: 6.0534 - val_mse: 0.0017
Epoch 97/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0043 - mae: 0.0464 - mape: 50.9789 - mse: 0.0036 - val_loss: 0.0046 - val_mae: 0.0461 - val_mape: 10.0402 - val_mse: 0.0039
Epoch 98/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0033 - mae: 0.0417 - mape: 55.8244 - mse: 0.0026 - val_loss: 0.0029 - val_mae: 0.0290 - val_mape: 6.5198 - val_mse: 0.0022
Epoch 99/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0041 - mae: 0.0448 - mape: 46.9389 - mse: 0.0034 - val_loss: 0.0192 - val_mae: 0.1239 - val_mape: 27.7901 - val_mse: 0.0185
Epoch 100/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0042 - mae: 0.0473 - mape: 50.5627 - mse: 0.0036 - val_loss: 0.0028 - val_mae: 0.0362 - val_mape: 10.3796 - val_mse: 0.0022
Epoch 101/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0036 - mae: 0.0448 - mape: 94.6218 - mse: 0.0030 - val_loss: 0.0076 - val_mae: 0.0776 - val_mape: 20.4389 - val_mse: 0.0069
Epoch 102/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0040 - mae: 0.0469 - mape: 61.6267 - mse: 0.0033 - val_loss: 0.0049 - val_mae: 0.0549 - val_mape: 14.7766 - val_mse: 0.0043
Epoch 103/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0046 - mae: 0.0501 - mape: 55.7870 - mse: 0.0039 - val_loss: 0.0038 - val_mae: 0.0416 - val_mape: 9.8360 - val_mse: 0.0031
Epoch 104/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0040 - mae: 0.0464 - mape: 58.1208 - mse: 0.0033 - val_loss: 0.0040 - val_mae: 0.0416 - val_mape: 9.1595 - val_mse: 0.0033
Epoch 105/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0040 - mae: 0.0452 - mape: 53.3565 - mse: 0.0034 - val_loss: 0.0086 - val_mae: 0.0790 - val_mape: 19.0281 - val_mse: 0.0080
Epoch 106/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0048 - mae: 0.0478 - mape: 48.5966 - mse: 0.0041 - val_loss: 0.0100 - val_mae: 0.0850 - val_mape: 19.5143 - val_mse: 0.0093
Epoch 107/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0044 - mae: 0.0494 - mape: 58.8663 - mse: 0.0037 - val_loss: 0.0166 - val_mae: 0.1219 - val_mape: 32.8823 - val_mse: 0.0159
Epoch 108/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0046 - mae: 0.0474 - mape: 85.6603 - mse: 0.0039 - val_loss: 0.0036 - val_mae: 0.0472 - val_mape: 12.7007 - val_mse: 0.0030
Epoch 109/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0037 - mae: 0.0431 - mape: 52.0439 - mse: 0.0031 - val_loss: 0.0025 - val_mae: 0.0332 - val_mape: 9.0552 - val_mse: 0.0019
Epoch 110/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0039 - mae: 0.0470 - mape: 74.8207 - mse: 0.0033 - val_loss: 0.0027 - val_mae: 0.0362 - val_mape: 9.4385 - val_mse: 0.0021
Epoch 111/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0039 - mae: 0.0444 - mape: 35.9789 - mse: 0.0033 - val_loss: 0.0040 - val_mae: 0.0422 - val_mape: 9.1800 - val_mse: 0.0033
Epoch 112/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0032 - mae: 0.0408 - mape: 50.4948 - mse: 0.0026 - val_loss: 0.0034 - val_mae: 0.0359 - val_mape: 7.5902 - val_mse: 0.0028
Epoch 113/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0043 - mae: 0.0487 - mape: 42.9310 - mse: 0.0037 - val_loss: 0.0024 - val_mae: 0.0313 - val_mape: 7.6284 - val_mse: 0.0017
Epoch 114/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0035 - mae: 0.0425 - mape: 57.1698 - mse: 0.0029 - val_loss: 0.0032 - val_mae: 0.0436 - val_mape: 11.2863 - val_mse: 0.0026
Epoch 115/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0038 - mae: 0.0453 - mape: 56.6466 - mse: 0.0032 - val_loss: 0.0024 - val_mae: 0.0259 - val_mape: 6.2715 - val_mse: 0.0018
Epoch 116/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0048 - mae: 0.0518 - mape: 68.6606 - mse: 0.0042 - val_loss: 0.0023 - val_mae: 0.0251 - val_mape: 5.9615 - val_mse: 0.0017
Epoch 117/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0054 - mae: 0.0529 - mape: 66.3690 - mse: 0.0048 - val_loss: 0.0026 - val_mae: 0.0288 - val_mape: 6.9227 - val_mse: 0.0020
Epoch 118/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0035 - mae: 0.0423 - mape: 65.5677 - mse: 0.0029 - val_loss: 0.0023 - val_mae: 0.0315 - val_mape: 7.7270 - val_mse: 0.0017
Epoch 119/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0035 - mae: 0.0432 - mape: 57.2159 - mse: 0.0029 - val_loss: 0.0033 - val_mae: 0.0388 - val_mape: 9.8152 - val_mse: 0.0027
Epoch 120/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0042 - mae: 0.0480 - mape: 49.2387 - mse: 0.0036 - val_loss: 0.0102 - val_mae: 0.0881 - val_mape: 20.6004 - val_mse: 0.0096
Epoch 121/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0040 - mae: 0.0464 - mape: 45.8765 - mse: 0.0034 - val_loss: 0.0025 - val_mae: 0.0268 - val_mape: 6.2550 - val_mse: 0.0019
Epoch 122/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0039 - mae: 0.0467 - mape: 60.5830 - mse: 0.0033 - val_loss: 0.0045 - val_mae: 0.0566 - val_mape: 15.1792 - val_mse: 0.0039
Epoch 123/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0032 - mae: 0.0402 - mape: 57.9191 - mse: 0.0026 - val_loss: 0.0108 - val_mae: 0.0908 - val_mape: 20.9599 - val_mse: 0.0102
Epoch 124/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0034 - mae: 0.0415 - mape: 53.0430 - mse: 0.0028 - val_loss: 0.0044 - val_mae: 0.0493 - val_mape: 11.4174 - val_mse: 0.0038
Epoch 125/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0053 - mae: 0.0578 - mape: 68.7868 - mse: 0.0047 - val_loss: 0.0023 - val_mae: 0.0307 - val_mape: 8.4451 - val_mse: 0.0017
Epoch 126/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0039 - mae: 0.0471 - mape: 76.7196 - mse: 0.0033 - val_loss: 0.0032 - val_mae: 0.0342 - val_mape: 7.1723 - val_mse: 0.0026
Epoch 127/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0053 - mae: 0.0561 - mape: 97.3960 - mse: 0.0047 - val_loss: 0.0025 - val_mae: 0.0278 - val_mape: 6.7708 - val_mse: 0.0019
Epoch 128/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0036 - mae: 0.0454 - mape: 51.8851 - mse: 0.0030 - val_loss: 0.0021 - val_mae: 0.0234 - val_mape: 5.6451 - val_mse: 0.0015
Epoch 129/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0044 - mae: 0.0497 - mape: 64.1498 - mse: 0.0038 - val_loss: 0.0025 - val_mae: 0.0277 - val_mape: 6.3744 - val_mse: 0.0019
Epoch 130/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0040 - mae: 0.0477 - mape: 49.8997 - mse: 0.0034 - val_loss: 0.0051 - val_mae: 0.0618 - val_mape: 15.7374 - val_mse: 0.0046
Epoch 131/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0042 - mae: 0.0463 - mape: 41.2377 - mse: 0.0036 - val_loss: 0.0037 - val_mae: 0.0442 - val_mape: 10.4469 - val_mse: 0.0032
Epoch 132/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0043 - mae: 0.0493 - mape: 73.3635 - mse: 0.0038 - val_loss: 0.0060 - val_mae: 0.0596 - val_mape: 12.3451 - val_mse: 0.0055
Epoch 133/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0042 - mae: 0.0492 - mape: 57.0926 - mse: 0.0036 - val_loss: 0.0040 - val_mae: 0.0428 - val_mape: 8.7423 - val_mse: 0.0034
Epoch 134/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0038 - mae: 0.0449 - mape: 54.4794 - mse: 0.0032 - val_loss: 0.0037 - val_mae: 0.0424 - val_mape: 9.4638 - val_mse: 0.0031
Epoch 135/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0038 - mae: 0.0449 - mape: 71.7520 - mse: 0.0033 - val_loss: 0.0134 - val_mae: 0.1040 - val_mape: 24.0692 - val_mse: 0.0129
Epoch 136/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0038 - mae: 0.0457 - mape: 81.8933 - mse: 0.0033 - val_loss: 0.0041 - val_mae: 0.0532 - val_mape: 13.4099 - val_mse: 0.0035
Epoch 137/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0039 - mae: 0.0449 - mape: 39.0369 - mse: 0.0033 - val_loss: 0.0074 - val_mae: 0.0715 - val_mape: 16.2085 - val_mse: 0.0068
Epoch 138/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0035 - mae: 0.0442 - mape: 56.4847 - mse: 0.0030 - val_loss: 0.0020 - val_mae: 0.0278 - val_mape: 7.1562 - val_mse: 0.0015
Epoch 139/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0031 - mae: 0.0403 - mape: 46.1336 - mse: 0.0026 - val_loss: 0.0027 - val_mae: 0.0392 - val_mape: 10.7299 - val_mse: 0.0022
Epoch 140/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0042 - mae: 0.0476 - mape: 64.3353 - mse: 0.0036 - val_loss: 0.0054 - val_mae: 0.0593 - val_mape: 14.0659 - val_mse: 0.0049
Epoch 141/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0043 - mae: 0.0485 - mape: 70.9445 - mse: 0.0037 - val_loss: 0.0026 - val_mae: 0.0306 - val_mape: 6.9803 - val_mse: 0.0020
Epoch 142/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0034 - mae: 0.0424 - mape: 64.4556 - mse: 0.0029 - val_loss: 0.0037 - val_mae: 0.0425 - val_mape: 9.2804 - val_mse: 0.0031
Epoch 143/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0041 - mae: 0.0446 - mape: 66.4587 - mse: 0.0035 - val_loss: 0.0025 - val_mae: 0.0303 - val_mape: 7.0941 - val_mse: 0.0020
Epoch 144/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0037 - mae: 0.0440 - mape: 53.7585 - mse: 0.0031 - val_loss: 0.0026 - val_mae: 0.0377 - val_mape: 10.0739 - val_mse: 0.0020
Epoch 145/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0037 - mae: 0.0444 - mape: 68.5459 - mse: 0.0032 - val_loss: 0.0049 - val_mae: 0.0546 - val_mape: 12.3057 - val_mse: 0.0044
Epoch 146/160
125/125 ━━━━━━━━━━━━━━━━━━━━ -0s -3536us/step - loss: 0.0038 - mae: 0.0444 - mape: 53.9036 - mse: 0.0033 - val_loss: 0.0019 - val_mae: 0.0263 - val_mape: 6.0433 - val_mse: 0.0014
Epoch 147/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0035 - mae: 0.0419 - mape: 47.4800 - mse: 0.0029 - val_loss: 0.0054 - val_mae: 0.0646 - val_mape: 16.2559 - val_mse: 0.0049
Epoch 148/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0036 - mae: 0.0433 - mape: 48.6451 - mse: 0.0030 - val_loss: 0.0053 - val_mae: 0.0549 - val_mape: 11.2344 - val_mse: 0.0048
Epoch 149/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0042 - mae: 0.0491 - mape: 53.4573 - mse: 0.0037 - val_loss: 0.0032 - val_mae: 0.0387 - val_mape: 8.6038 - val_mse: 0.0027
Epoch 150/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0039 - mae: 0.0458 - mape: 51.3824 - mse: 0.0034 - val_loss: 0.0025 - val_mae: 0.0299 - val_mape: 6.7250 - val_mse: 0.0020
Epoch 151/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0035 - mae: 0.0439 - mape: 40.6822 - mse: 0.0030 - val_loss: 0.0024 - val_mae: 0.0307 - val_mape: 7.7246 - val_mse: 0.0019
Epoch 152/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0042 - mae: 0.0473 - mape: 64.0206 - mse: 0.0036 - val_loss: 0.0034 - val_mae: 0.0401 - val_mape: 8.7898 - val_mse: 0.0028
Epoch 153/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0036 - mae: 0.0435 - mape: 35.5761 - mse: 0.0031 - val_loss: 0.0025 - val_mae: 0.0294 - val_mape: 6.4783 - val_mse: 0.0019
Epoch 154/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0039 - mae: 0.0462 - mape: 46.6672 - mse: 0.0033 - val_loss: 0.0018 - val_mae: 0.0256 - val_mape: 6.3874 - val_mse: 0.0013
Epoch 155/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0041 - mae: 0.0491 - mape: 43.9241 - mse: 0.0036 - val_loss: 0.0031 - val_mae: 0.0356 - val_mape: 7.2537 - val_mse: 0.0026
Epoch 156/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0035 - mae: 0.0441 - mape: 49.3354 - mse: 0.0030 - val_loss: 0.0020 - val_mae: 0.0243 - val_mape: 6.0766 - val_mse: 0.0015
Epoch 157/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0038 - mae: 0.0471 - mape: 107.1304 - mse: 0.0033 - val_loss: 0.0018 - val_mae: 0.0223 - val_mape: 5.5191 - val_mse: 0.0013
Epoch 158/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 0.0040 - mae: 0.0480 - mape: 58.4227 - mse: 0.0035 - val_loss: 0.0026 - val_mae: 0.0376 - val_mape: 10.7934 - val_mse: 0.0020
Epoch 159/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 0.0044 - mae: 0.0492 - mape: 79.1059 - mse: 0.0039 - val_loss: 0.0027 - val_mae: 0.0334 - val_mape: 7.7277 - val_mse: 0.0021
Epoch 160/160
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0038 - mae: 0.0473 - mape: 44.0047 - mse: 0.0033 - val_loss: 0.0019 - val_mae: 0.0238 - val_mape: 5.9168 - val_mse: 0.0014

plot_performance(historyA3, 'loss')
plot_performance(historyA3, 'mae')
plot_performance(historyA3, 'mse')
plot_performance(historyA3, 'mape')
Visualization
Visualization
Visualization
Visualization
prediction3 = modelA3.evaluate(x_testA, y_testA, return_dict=True)
prediction3
33/33 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step - loss: 0.0144 - mae: 0.1026 - mape: 6.1266 - mse: 0.0139
{'loss': 0.02477334998548031,
 'mae': 0.13463638722896576,
 'mape': 6.905888080596924,
 'mse': 0.024276364594697952}
prediction3['Model'] = "modelA3"
prediction 
<tf.Tensor: shape=(1029, 1), dtype=float32, numpy=
array([[1.0645993],
       [1.0602218],
       [1.0624932],
       ...,
       [2.164799 ],
       [2.1283467],
       [2.0294127]], dtype=float32)>
model_results.loc[len(model_results)+1] = prediction3
model_results
Model loss mae mape mse
1 modelA 0.208893 0.394186 19.527624 0.208893
2 modelA2 43.724167 5.551799 271.390289 43.724167
3 modelA3 0.024773 0.134636 6.905888 0.024276
prediction3 = modelA3(x_testA)
prediction3
<tf.Tensor: shape=(1029, 1), dtype=float32, numpy=
array([[1.2099564],
       [1.2223299],
       [1.2319281],
       ...,
       [3.3596547],
       [3.3803332],
       [3.3740277]], dtype=float32)>
plot_prediction_full(prediction3)
plot_prediction(prediction3)
Visualization
Visualization

The model seem to be better now with the regularization and batch normalization, even though it is an extremely small model. We will now train including the validation data into the training data, and then use its prediction for the trading strategy used in the naive forecasting.

modelA3_input, modelA3_output = create_sequences(standardizedClosePrice['^GSPC'], 7)
modelA3_input.shape, modelA3_output.shape
((6029, 7), (6029,))
x_trainA3, _ , x_testA3 = train_valid_test_split(modelA3_input, 5000, 0)
y_trainA3, _, y_testA3 = train_valid_test_split(modelA3_output, 5000, 0)

x_trainA3.shape, x_testA3.shape, y_trainA3.shape, y_testA3.shape
((5000, 7), (1029, 7), (5000,), (1029,))
x_trainA3 = reshape_input(x_trainA3)
x_testA3 = reshape_input(x_testA3)

x_trainA3.shape, x_testA3.shape
((5000, 7, 1), (1029, 7, 1))
historyA3_2 = modelA3.fit(
    x_trainA3, y_trainA3, 
    epochs=160, batch_size=32
) 
Epoch 1/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 4s 13ms/step - loss: 0.0287 - mae: 0.1261 - mape: 87.7745 - mse: 0.0278
Epoch 2/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 0.0153 - mae: 0.0922 - mape: 70.9505 - mse: 0.0144
Epoch 3/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0124 - mae: 0.0799 - mape: 94.2977 - mse: 0.0115
Epoch 4/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0132 - mae: 0.0865 - mape: 98.9664 - mse: 0.0122
Epoch 5/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0099 - mae: 0.0744 - mape: 82.9101 - mse: 0.0090
Epoch 6/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0133 - mae: 0.0861 - mape: 70.4200 - mse: 0.0123
Epoch 7/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0120 - mae: 0.0808 - mape: 77.8825 - mse: 0.0110
Epoch 8/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0098 - mae: 0.0735 - mape: 88.5876 - mse: 0.0087
Epoch 9/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0098 - mae: 0.0733 - mape: 81.3458 - mse: 0.0087
Epoch 10/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0096 - mae: 0.0742 - mape: 101.8501 - mse: 0.0085
Epoch 11/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0115 - mae: 0.0818 - mape: 132.3409 - mse: 0.0104
Epoch 12/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0131 - mae: 0.0874 - mape: 93.8525 - mse: 0.0120
Epoch 13/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0102 - mae: 0.0766 - mape: 98.2178 - mse: 0.0091
Epoch 14/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0148 - mae: 0.0917 - mape: 91.0866 - mse: 0.0137
Epoch 15/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0096 - mae: 0.0720 - mape: 55.7310 - mse: 0.0085
Epoch 16/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0117 - mae: 0.0803 - mape: 72.0870 - mse: 0.0107
Epoch 17/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0120 - mae: 0.0802 - mape: 84.1891 - mse: 0.0109
Epoch 18/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0156 - mae: 0.0939 - mape: 68.3368 - mse: 0.0145
Epoch 19/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0138 - mae: 0.0858 - mape: 87.4503 - mse: 0.0127
Epoch 20/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0120 - mae: 0.0815 - mape: 105.0974 - mse: 0.0109
Epoch 21/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0113 - mae: 0.0786 - mape: 69.0973 - mse: 0.0103
Epoch 22/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0113 - mae: 0.0828 - mape: 94.8229 - mse: 0.0103
Epoch 23/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0093 - mae: 0.0717 - mape: 56.4465 - mse: 0.0083
Epoch 24/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0119 - mae: 0.0832 - mape: 104.3848 - mse: 0.0109
Epoch 25/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0134 - mae: 0.0855 - mape: 69.0050 - mse: 0.0123
Epoch 26/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0125 - mae: 0.0846 - mape: 98.1244 - mse: 0.0115
Epoch 27/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0096 - mae: 0.0724 - mape: 77.0030 - mse: 0.0086
Epoch 28/160
157/157 ━━━━━━━━━━━━━━━━━━━━ -0s -2804us/step - loss: 0.0105 - mae: 0.0754 - mape: 75.6918 - mse: 0.0095
Epoch 29/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 0.0117 - mae: 0.0841 - mape: 117.4952 - mse: 0.0107
Epoch 30/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0111 - mae: 0.0768 - mape: 60.7816 - mse: 0.0101
Epoch 31/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0102 - mae: 0.0753 - mape: 64.5960 - mse: 0.0092
Epoch 32/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0140 - mae: 0.0871 - mape: 71.4097 - mse: 0.0130
Epoch 33/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0099 - mae: 0.0747 - mape: 60.3481 - mse: 0.0089
Epoch 34/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0106 - mae: 0.0770 - mape: 106.7773 - mse: 0.0096
Epoch 35/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0105 - mae: 0.0760 - mape: 66.6868 - mse: 0.0096
Epoch 36/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0132 - mae: 0.0830 - mape: 71.9309 - mse: 0.0123
Epoch 37/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0129 - mae: 0.0846 - mape: 83.7302 - mse: 0.0120
Epoch 38/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0092 - mae: 0.0733 - mape: 79.7396 - mse: 0.0083
Epoch 39/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0116 - mae: 0.0804 - mape: 67.9430 - mse: 0.0107
Epoch 40/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0094 - mae: 0.0739 - mape: 79.7518 - mse: 0.0085
Epoch 41/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0086 - mae: 0.0688 - mape: 71.7933 - mse: 0.0077
Epoch 42/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0122 - mae: 0.0820 - mape: 74.1950 - mse: 0.0113
Epoch 43/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0093 - mae: 0.0688 - mape: 53.7624 - mse: 0.0084
Epoch 44/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0117 - mae: 0.0828 - mape: 64.3614 - mse: 0.0108
Epoch 45/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0139 - mae: 0.0910 - mape: 95.8632 - mse: 0.0130
Epoch 46/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0111 - mae: 0.0763 - mape: 60.9266 - mse: 0.0102
Epoch 47/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0105 - mae: 0.0775 - mape: 55.4791 - mse: 0.0096
Epoch 48/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0092 - mae: 0.0717 - mape: 112.2040 - mse: 0.0083
Epoch 49/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0094 - mae: 0.0734 - mape: 83.7366 - mse: 0.0085
Epoch 50/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0109 - mae: 0.0825 - mape: 55.5561 - mse: 0.0100
Epoch 51/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0125 - mae: 0.0862 - mape: 72.8221 - mse: 0.0116
Epoch 52/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0106 - mae: 0.0779 - mape: 98.8988 - mse: 0.0097
Epoch 53/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0115 - mae: 0.0827 - mape: 78.6088 - mse: 0.0106
Epoch 54/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0081 - mae: 0.0636 - mape: 72.8573 - mse: 0.0072
Epoch 55/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0076 - mae: 0.0636 - mape: 56.8536 - mse: 0.0067
Epoch 56/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0128 - mae: 0.0878 - mape: 69.1012 - mse: 0.0119
Epoch 57/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0105 - mae: 0.0783 - mape: 65.3162 - mse: 0.0096
Epoch 58/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0111 - mae: 0.0845 - mape: 66.4368 - mse: 0.0102
Epoch 59/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0125 - mae: 0.0815 - mape: 88.1593 - mse: 0.0116
Epoch 60/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0106 - mae: 0.0764 - mape: 92.4758 - mse: 0.0098
Epoch 61/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0119 - mae: 0.0862 - mape: 59.3600 - mse: 0.0111
Epoch 62/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0128 - mae: 0.0862 - mape: 81.6897 - mse: 0.0119
Epoch 63/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0114 - mae: 0.0857 - mape: 57.8683 - mse: 0.0105
Epoch 64/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0102 - mae: 0.0788 - mape: 72.9151 - mse: 0.0093
Epoch 65/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0092 - mae: 0.0735 - mape: 63.2080 - mse: 0.0084
Epoch 66/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0128 - mae: 0.0812 - mape: 79.9164 - mse: 0.0120
Epoch 67/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0090 - mae: 0.0685 - mape: 51.8494 - mse: 0.0082
Epoch 68/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0101 - mae: 0.0742 - mape: 67.6425 - mse: 0.0093
Epoch 69/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0109 - mae: 0.0763 - mape: 71.8699 - mse: 0.0101
Epoch 70/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0088 - mae: 0.0709 - mape: 91.8134 - mse: 0.0080
Epoch 71/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0138 - mae: 0.0916 - mape: 74.9946 - mse: 0.0130
Epoch 72/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0105 - mae: 0.0762 - mape: 90.0420 - mse: 0.0097
Epoch 73/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0094 - mae: 0.0722 - mape: 69.5079 - mse: 0.0086
Epoch 74/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0113 - mae: 0.0823 - mape: 66.8808 - mse: 0.0105
Epoch 75/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0121 - mae: 0.0869 - mape: 66.3215 - mse: 0.0112
Epoch 76/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0099 - mae: 0.0751 - mape: 106.5567 - mse: 0.0091
Epoch 77/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0106 - mae: 0.0787 - mape: 90.8409 - mse: 0.0098
Epoch 78/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0118 - mae: 0.0834 - mape: 77.3286 - mse: 0.0110
Epoch 79/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0101 - mae: 0.0780 - mape: 57.6937 - mse: 0.0093
Epoch 80/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0114 - mae: 0.0822 - mape: 54.3471 - mse: 0.0106
Epoch 81/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0109 - mae: 0.0820 - mape: 47.7588 - mse: 0.0101
Epoch 82/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0105 - mae: 0.0791 - mape: 60.6629 - mse: 0.0097
Epoch 83/160
157/157 ━━━━━━━━━━━━━━━━━━━━ -0s -2445us/step - loss: 0.0104 - mae: 0.0811 - mape: 54.2903 - mse: 0.0096
Epoch 84/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0120 - mae: 0.0844 - mape: 126.5939 - mse: 0.0112
Epoch 85/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0109 - mae: 0.0783 - mape: 61.7404 - mse: 0.0101
Epoch 86/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0106 - mae: 0.0802 - mape: 64.6667 - mse: 0.0098
Epoch 87/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0123 - mae: 0.0828 - mape: 80.2423 - mse: 0.0115
Epoch 88/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0127 - mae: 0.0868 - mape: 96.4255 - mse: 0.0119
Epoch 89/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0095 - mae: 0.0730 - mape: 68.4521 - mse: 0.0087
Epoch 90/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0095 - mae: 0.0738 - mape: 63.6019 - mse: 0.0087
Epoch 91/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0126 - mae: 0.0873 - mape: 74.3404 - mse: 0.0118
Epoch 92/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0102 - mae: 0.0752 - mape: 79.5082 - mse: 0.0094
Epoch 93/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0110 - mae: 0.0781 - mape: 52.5848 - mse: 0.0102
Epoch 94/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0090 - mae: 0.0711 - mape: 67.7582 - mse: 0.0082
Epoch 95/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0098 - mae: 0.0732 - mape: 72.2322 - mse: 0.0090
Epoch 96/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0127 - mae: 0.0864 - mape: 54.5184 - mse: 0.0119
Epoch 97/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0111 - mae: 0.0819 - mape: 48.2295 - mse: 0.0103
Epoch 98/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0123 - mae: 0.0867 - mape: 125.3163 - mse: 0.0115
Epoch 99/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0100 - mae: 0.0763 - mape: 64.6169 - mse: 0.0092
Epoch 100/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0136 - mae: 0.0931 - mape: 112.0503 - mse: 0.0129
Epoch 101/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0112 - mae: 0.0816 - mape: 125.8568 - mse: 0.0105
Epoch 102/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0111 - mae: 0.0832 - mape: 94.1846 - mse: 0.0104
Epoch 103/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0127 - mae: 0.0873 - mape: 90.3687 - mse: 0.0120
Epoch 104/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0119 - mae: 0.0888 - mape: 102.7268 - mse: 0.0111
Epoch 105/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0090 - mae: 0.0721 - mape: 72.2709 - mse: 0.0083
Epoch 106/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0111 - mae: 0.0835 - mape: 66.4269 - mse: 0.0103
Epoch 107/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0095 - mae: 0.0746 - mape: 71.8010 - mse: 0.0088
Epoch 108/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0120 - mae: 0.0824 - mape: 64.1386 - mse: 0.0112
Epoch 109/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0150 - mae: 0.0945 - mape: 81.7386 - mse: 0.0143
Epoch 110/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0095 - mae: 0.0741 - mape: 64.0188 - mse: 0.0088
Epoch 111/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0102 - mae: 0.0759 - mape: 102.7242 - mse: 0.0095
Epoch 112/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0097 - mae: 0.0765 - mape: 136.6244 - mse: 0.0090
Epoch 113/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0093 - mae: 0.0747 - mape: 49.9002 - mse: 0.0086
Epoch 114/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0105 - mae: 0.0799 - mape: 84.1287 - mse: 0.0098
Epoch 115/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0091 - mae: 0.0737 - mape: 60.3639 - mse: 0.0083
Epoch 116/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0105 - mae: 0.0775 - mape: 82.5024 - mse: 0.0098
Epoch 117/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 0.0122 - mae: 0.0795 - mape: 74.2115 - mse: 0.0115
Epoch 118/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0111 - mae: 0.0794 - mape: 73.5383 - mse: 0.0104
Epoch 119/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0083 - mae: 0.0710 - mape: 83.1866 - mse: 0.0076
Epoch 120/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0099 - mae: 0.0736 - mape: 92.6043 - mse: 0.0092
Epoch 121/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0109 - mae: 0.0791 - mape: 95.2685 - mse: 0.0102
Epoch 122/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0123 - mae: 0.0850 - mape: 70.0089 - mse: 0.0116
Epoch 123/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0123 - mae: 0.0852 - mape: 58.3540 - mse: 0.0116
Epoch 124/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0100 - mae: 0.0780 - mape: 71.3544 - mse: 0.0093
Epoch 125/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0086 - mae: 0.0698 - mape: 53.7652 - mse: 0.0079
Epoch 126/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0125 - mae: 0.0884 - mape: 64.8053 - mse: 0.0118
Epoch 127/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0104 - mae: 0.0801 - mape: 58.4145 - mse: 0.0098
Epoch 128/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0126 - mae: 0.0890 - mape: 68.1031 - mse: 0.0119
Epoch 129/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0092 - mae: 0.0726 - mape: 54.4573 - mse: 0.0085
Epoch 130/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0092 - mae: 0.0734 - mape: 69.8274 - mse: 0.0085
Epoch 131/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0123 - mae: 0.0889 - mape: 83.3296 - mse: 0.0116
Epoch 132/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0127 - mae: 0.0898 - mape: 90.1602 - mse: 0.0120
Epoch 133/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0111 - mae: 0.0807 - mape: 82.5280 - mse: 0.0104
Epoch 134/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0125 - mae: 0.0868 - mape: 79.4218 - mse: 0.0118
Epoch 135/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0092 - mae: 0.0734 - mape: 78.3651 - mse: 0.0085
Epoch 136/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0108 - mae: 0.0796 - mape: 59.2331 - mse: 0.0101
Epoch 137/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0115 - mae: 0.0822 - mape: 72.2043 - mse: 0.0108
Epoch 138/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0113 - mae: 0.0813 - mape: 69.9230 - mse: 0.0106
Epoch 139/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0099 - mae: 0.0754 - mape: 59.5364 - mse: 0.0092
Epoch 140/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0116 - mae: 0.0849 - mape: 91.6990 - mse: 0.0109
Epoch 141/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0089 - mae: 0.0713 - mape: 87.6282 - mse: 0.0082
Epoch 142/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0094 - mae: 0.0726 - mape: 105.0437 - mse: 0.0088
Epoch 143/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0113 - mae: 0.0799 - mape: 79.6731 - mse: 0.0106
Epoch 144/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0118 - mae: 0.0825 - mape: 87.6501 - mse: 0.0112
Epoch 145/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0106 - mae: 0.0790 - mape: 59.2338 - mse: 0.0099
Epoch 146/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0091 - mae: 0.0722 - mape: 75.5145 - mse: 0.0085
Epoch 147/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0133 - mae: 0.0897 - mape: 88.8703 - mse: 0.0126
Epoch 148/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0114 - mae: 0.0815 - mape: 98.8256 - mse: 0.0108
Epoch 149/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0118 - mae: 0.0822 - mape: 60.0585 - mse: 0.0111
Epoch 150/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0088 - mae: 0.0718 - mape: 49.4775 - mse: 0.0082
Epoch 151/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0118 - mae: 0.0812 - mape: 67.0996 - mse: 0.0111
Epoch 152/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0122 - mae: 0.0814 - mape: 87.6541 - mse: 0.0115
Epoch 153/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0119 - mae: 0.0861 - mape: 60.6547 - mse: 0.0112
Epoch 154/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0120 - mae: 0.0854 - mape: 70.7941 - mse: 0.0113
Epoch 155/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0105 - mae: 0.0758 - mape: 69.7979 - mse: 0.0098
Epoch 156/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0110 - mae: 0.0815 - mape: 97.9624 - mse: 0.0103
Epoch 157/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0089 - mae: 0.0717 - mape: 76.8426 - mse: 0.0083
Epoch 158/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0114 - mae: 0.0833 - mape: 84.6213 - mse: 0.0108
Epoch 159/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0091 - mae: 0.0735 - mape: 80.3658 - mse: 0.0085
Epoch 160/160
157/157 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0152 - mae: 0.0943 - mape: 122.4052 - mse: 0.0145

def plot_performance_no_validation(history, metric):
   # Set plot size
    plt.figure(figsize=(12, 7))

    # Store thmetric into string
    metric_string = metric 

    # Get the metric and validation metric
    metric = history.history[metric_string]

    # Get the epoch range
    epochs = range(1, len(metric) + 1)

    # Plot the training metric 
    plt.plot(epochs, metric, label=f'Train_{metric_string}')
    plt.plot(epochs, metric, 'C0o')
    
    # Plot thing extras
    plt.title(f'{metric_string} vs epochs')
    plt.xlabel('Epochs')
    plt.ylabel(metric_string)
    plt.minorticks_on()
    plt.grid(which='minor', alpha=0.2)
    plt.grid(which='major', alpha=0.5)
    plt.legend()
    plt.show()
plot_performance_no_validation(historyA3_2, 'loss')
plot_performance_no_validation(historyA3_2, 'mae')
plot_performance_no_validation(historyA3_2, 'mse')
plot_performance_no_validation(historyA3_2, 'mape')
Visualization
Visualization
Visualization
Visualization
prediction3_2 = modelA3.evaluate(x_testA3, y_testA3)
prediction3_2
33/33 ━━━━━━━━━━━━━━━━━━━━ 0s 1ms/step - loss: 0.0100 - mae: 0.0886 - mape: 5.4626 - mse: 0.0094
[0.013316195458173752,
 0.10263993591070175,
 0.012646855786442757,
 5.504680633544922]
prediction3_2 = modelA3(x_testA3)
prediction3_2
<tf.Tensor: shape=(1029, 1), dtype=float32, numpy=
array([[1.241997 ],
       [1.2542925],
       [1.25916  ],
       ...,
       [3.2651138],
       [3.2813847],
       [3.236699 ]], dtype=float32)>
plot_prediction_full(prediction3_2)
Visualization
plot_prediction(prediction3_2)
Visualization

So now we will use this model and its prediction as a base for the trading strategy used previously. But first we might want to look for the optimal

modelA3_training_prediction= modelA3(x_trainA3)
modelA3_training_prediction
<tf.Tensor: shape=(5000, 1), dtype=float32, numpy=
array([[-0.64892185],
       [-0.6370472 ],
       [-0.638398  ],
       ...,
       [ 1.2059162 ],
       [ 1.1928539 ],
       [ 1.2003815 ]], dtype=float32)>
modelA3_training_forecast = pd.DataFrame(columns=['Training Model', 'Actual', '% Change'] )
modelA3_training_forecast['Actual'] = standardizedClosePrice['^GSPC'][:5000]
modelA3_training_forecast['Training Model'] = modelA3_training_prediction
modelA3_training_forecast['% Change'] =  \
    (modelA3_training_forecast['Training Model'] \
    - modelA3_training_forecast['Actual'].shift()) \
    / (modelA3_training_forecast['Actual'].shift())

modelA3_training_forecast = modelA3_training_forecast.tail(-1)
modelA3_training_forecast
Training Model Actual % Change
1 -0.637047 -0.628868 -0.063013
2 -0.638398 -0.640153 0.015154
3 -0.635350 -0.667921 -0.007503
4 -0.632435 -0.669897 -0.053129
5 -0.620439 -0.665977 -0.073829
... ... ... ...
4995 1.240974 1.119396 0.141850
4996 1.209858 1.115452 0.080814
4997 1.205916 1.136982 0.081101
4998 1.192854 1.108690 0.049140
4999 1.200382 1.146894 0.082702
def find_best_signal_modelA_trading(dataset):

    modelA_forecast_results = []
    for i in np.arange(0.01, 0.15, 0.005): 
        for j in np.arange(0.01, 0.15, 0.005): 

            holding = False
            capital = 1 
            buy_signal = i
            sell_signal = -j
            last_price = None 

            for t in range(len(dataset)): 

                decision = dataset['% Change'].iloc[t]
                current_price = dataset['Actual'].iloc[t]

                if decision >= buy_signal: 
                    if not(holding):
                        holding = True
                        last_price = current_price
                    
                elif decision <= sell_signal: 
                    if holding: 
                        holding = False 
                        trade_return = 1 + ((current_price - last_price) / last_price)
                        capital *= trade_return
                
                else:
                    if t == len(dataset)-1: 
                        if holding: 
                            trade_return = 1 + ((current_price - last_price) / last_price)
                            capital *= trade_return
            
            modelA_forecast_results.append((i,j,capital))
    return modelA_forecast_results

modelA3_best_signal = find_best_signal_modelA_trading(modelA3_training_forecast)
modelA3_best_signal
[(0.01, 0.01, -16460666423.548765),
 (0.01, 0.015, -24138931247.62694),
 (0.01, 0.019999999999999997, -30658249509.051083),
 (0.01, 0.024999999999999998, -27670184804.209137),
 (0.01, 0.03, -26386235244.42844),
 (0.01, 0.034999999999999996, -47547045016.766106),
 (0.01, 0.039999999999999994, -43327459476.16116),
 (0.01, 0.045, -27969302340.98794),
 (0.01, 0.049999999999999996, -18460954765.707424),
 (0.01, 0.05499999999999999, -12695115855.433558),
 (0.01, 0.05999999999999999, -7020559389.98076),
 (0.01, 0.06499999999999999, -3525879900.7563696),
 (0.01, 0.06999999999999999, -2148113484.61205),
 (0.01, 0.07499999999999998, -1233819163.4013984),
 (0.01, 0.07999999999999999, -958958172.1370878),
 (0.01, 0.08499999999999998, -530031508.764447),
 (0.01, 0.08999999999999998, -289049819.86883813),
 (0.01, 0.09499999999999999, -239147664.10844633),
 (0.01, 0.09999999999999998, -50780370.27904029),
 (0.01, 0.10499999999999998, -46002453.79274482),
 (0.01, 0.10999999999999997, -45139774.69735549),
 (0.01, 0.11499999999999998, -35303004.548832305),
 (0.01, 0.11999999999999998, -54144804.32145367),
 (0.01, 0.12499999999999997, -36807401.0618873),
 (0.01, 0.12999999999999998, -27585175.098138124),
 (0.01, 0.13499999999999998, -30242234.087067373),
 (0.01, 0.13999999999999999, -25918406.675068963),
 (0.01, 0.145, -26133368.247396003),
 (0.015, 0.01, -13686430316.320354),
 (0.015, 0.015, -19524107886.950428),
 (0.015, 0.019999999999999997, -25735812266.93034),
 (0.015, 0.024999999999999998, -23329835479.07994),
 (0.015, 0.03, -22247286439.19918),
 (0.015, 0.034999999999999996, -40563665478.44467),
 (0.015, 0.039999999999999994, -36496166064.965126),
 (0.015, 0.045, -28615469268.097073),
 (0.015, 0.049999999999999996, -17578369374.51614),
 (0.015, 0.05499999999999999, -11816131858.124605),
 (0.015, 0.05999999999999999, -6673020916.754471),
 (0.015, 0.06499999999999999, -3360986877.668857),
 (0.015, 0.06999999999999999, -2035974402.4377482),
 (0.015, 0.07499999999999998, -1107267610.3748577),
 (0.015, 0.07999999999999999, -877083426.8269778),
 (0.015, 0.08499999999999998, -484778028.4278522),
 (0.015, 0.08999999999999998, -259971571.85511544),
 (0.015, 0.09499999999999999, -215089544.6742141),
 (0.015, 0.09999999999999998, -45642680.65848978),
 (0.015, 0.10499999999999998, -40026957.623223834),
 (0.015, 0.10999999999999997, -39023409.12589095),
 (0.015, 0.11499999999999998, -30519505.22834536),
 (0.015, 0.11999999999999998, -46805706.482901126),
 (0.015, 0.12499999999999997, -31818314.46417289),
 (0.015, 0.12999999999999998, -23846121.989054803),
 (0.015, 0.13499999999999998, -26143027.9378736),
 (0.015, 0.13999999999999999, -22405276.933599845),
 (0.015, 0.145, -22591101.37946373),
 (0.019999999999999997, 0.01, -7482407222.599516),
 (0.019999999999999997, 0.015, -10186627327.229752),
 (0.019999999999999997, 0.019999999999999997, -12795756800.386583),
 (0.019999999999999997, 0.024999999999999998, -12336590187.985392),
 (0.019999999999999997, 0.03, -12182299265.042593),
 (0.019999999999999997, 0.034999999999999996, -22552309892.955437),
 (0.019999999999999997, 0.039999999999999994, -22209720921.477337),
 (0.019999999999999997, 0.045, -19395169246.720116),
 (0.019999999999999997, 0.049999999999999996, -13091309679.075985),
 (0.019999999999999997, 0.05499999999999999, -8652821685.58038),
 (0.019999999999999997, 0.05999999999999999, -4871713301.711569),
 (0.019999999999999997, 0.06499999999999999, -2422355806.32553),
 (0.019999999999999997, 0.06999999999999999, -1533751765.5428586),
 (0.019999999999999997, 0.07499999999999998, -935721664.9054326),
 (0.019999999999999997, 0.07999999999999999, -722452434.5214169),
 (0.019999999999999997, 0.08499999999999998, -404750782.0137868),
 (0.019999999999999997, 0.08999999999999998, -213347402.08141363),
 (0.019999999999999997, 0.09499999999999999, -172373581.6701552),
 (0.019999999999999997, 0.09999999999999998, -37742737.89650549),
 (0.019999999999999997, 0.10499999999999998, -33098997.442142267),
 (0.019999999999999997, 0.10999999999999997, -32477738.899294622),
 (0.019999999999999997, 0.11499999999999998, -25140846.69118658),
 (0.019999999999999997, 0.11999999999999998, -38556820.70056586),
 (0.019999999999999997, 0.12499999999999997, -26210758.003140263),
 (0.019999999999999997, 0.12999999999999998, -19643558.852630287),
 (0.019999999999999997, 0.13499999999999998, -21535665.552633256),
 (0.019999999999999997, 0.13999999999999999, -18714231.421301927),
 (0.019999999999999997, 0.145, -18869443.146376234),
 (0.024999999999999998, 0.01, -6889968844.985485),
 (0.024999999999999998, 0.015, -9022416616.692469),
 (0.024999999999999998, 0.019999999999999997, -10834529655.797934),
 (0.024999999999999998, 0.024999999999999998, -10270383869.966799),
 (0.024999999999999998, 0.03, -9973615322.219482),
 (0.024999999999999998, 0.034999999999999996, -18463781810.80579),
 (0.024999999999999998, 0.039999999999999994, -19196111797.66124),
 (0.024999999999999998, 0.045, -16407662637.538012),
 (0.024999999999999998, 0.049999999999999996, -11047019941.575846),
 (0.024999999999999998, 0.05499999999999999, -8712608684.974594),
 (0.024999999999999998, 0.05999999999999999, -5167346868.53821),
 (0.024999999999999998, 0.06499999999999999, -2779043721.476278),
 (0.024999999999999998, 0.06999999999999999, -1759598898.0510037),
 (0.024999999999999998, 0.07499999999999998, -1044587291.9296998),
 (0.024999999999999998, 0.07999999999999999, -905138393.1591616),
 (0.024999999999999998, 0.08499999999999998, -463278859.32909125),
 (0.024999999999999998, 0.08999999999999998, -227423027.38998365),
 (0.024999999999999998, 0.09499999999999999, -174464572.7200215),
 (0.024999999999999998, 0.09999999999999998, -37663951.335024886),
 (0.024999999999999998, 0.10499999999999998, -33098997.442142267),
 (0.024999999999999998, 0.10999999999999997, -32477738.899294622),
 (0.024999999999999998, 0.11499999999999998, -25140846.69118658),
 (0.024999999999999998, 0.11999999999999998, -38556820.70056586),
 (0.024999999999999998, 0.12499999999999997, -26210758.003140263),
 (0.024999999999999998, 0.12999999999999998, -19643558.852630287),
 (0.024999999999999998, 0.13499999999999998, -21535665.552633256),
 (0.024999999999999998, 0.13999999999999999, -18714231.421301927),
 (0.024999999999999998, 0.145, -18869443.146376234),
 (0.03, 0.01, -6109677622.176662),
 (0.03, 0.015, -8162554136.733101),
 (0.03, 0.019999999999999997, -9354507109.12815),
 (0.03, 0.024999999999999998, -9025646445.280027),
 (0.03, 0.03, -8792649655.596773),
 (0.03, 0.034999999999999996, -16301042942.154541),
 (0.03, 0.039999999999999994, -17719740732.532715),
 (0.03, 0.045, -16442805286.495047),
 (0.03, 0.049999999999999996, -12732947231.249897),
 (0.03, 0.05499999999999999, -11028875986.163576),
 (0.03, 0.05999999999999999, -6850177741.191719),
 (0.03, 0.06499999999999999, -3704684695.2775755),
 (0.03, 0.06999999999999999, -2317628315.4365115),
 (0.03, 0.07499999999999998, -1057428229.7187864),
 (0.03, 0.07999999999999999, -919006755.7973526),
 (0.03, 0.08499999999999998, -470377132.1151541),
 (0.03, 0.08999999999999998, -232835513.88989913),
 (0.03, 0.09499999999999999, -178616690.27556425),
 (0.03, 0.09999999999999998, -38560323.30963906),
 (0.03, 0.10499999999999998, -33886727.15831183),
 (0.03, 0.10999999999999997, -32959947.394721784),
 (0.03, 0.11499999999999998, -25514121.74873637),
 (0.03, 0.11999999999999998, -39129287.47715164),
 (0.03, 0.12499999999999997, -26599918.412979446),
 (0.03, 0.12999999999999998, -19935213.730099812),
 (0.03, 0.13499999999999998, -21855413.208600238),
 (0.03, 0.13999999999999999, -18992088.245162815),
 (0.03, 0.145, -19149604.45370665),
 (0.034999999999999996, 0.01, -4964577675.422901),
 (0.034999999999999996, 0.015, -6246603501.830748),
 (0.034999999999999996, 0.019999999999999997, -7158776026.099036),
 (0.034999999999999996, 0.024999999999999998, -6907106984.767542),
 (0.034999999999999996, 0.03, -6625577343.594781),
 (0.034999999999999996, 0.034999999999999996, -12920700647.04512),
 (0.034999999999999996, 0.039999999999999994, -14785081374.208235),
 (0.034999999999999996, 0.045, -13963316246.664675),
 (0.034999999999999996, 0.049999999999999996, -10979561681.42309),
 (0.034999999999999996, 0.05499999999999999, -9844134885.710924),
 (0.034999999999999996, 0.05999999999999999, -6114319696.765667),
 (0.034999999999999996, 0.06499999999999999, -3306721001.767947),
 (0.034999999999999996, 0.06999999999999999, -2068664638.239008),
 (0.034999999999999996, 0.07499999999999998, -1001192494.1881438),
 (0.034999999999999996, 0.07999999999999999, -870132497.0841742),
 (0.034999999999999996, 0.08499999999999998, -445361719.00449383),
 (0.034999999999999996, 0.08999999999999998, -226094033.89032927),
 (0.034999999999999996, 0.09499999999999999, -174429094.59995416),
 (0.034999999999999996, 0.09999999999999998, -37656292.20878027),
 (0.034999999999999996, 0.10499999999999998, -33092266.618875105),
 (0.034999999999999996, 0.10999999999999997, -32187214.83000155),
 (0.034999999999999996, 0.11499999999999998, -24915953.538715452),
 (0.034999999999999996, 0.11999999999999998, -38211917.24273388),
 (0.034999999999999996, 0.12499999999999997, -25723832.189152766),
 (0.034999999999999996, 0.12999999999999998, -19359043.1429805),
 (0.034999999999999996, 0.13499999999999998, -21223744.723344855),
 (0.034999999999999996, 0.13999999999999999, -18443176.014624983),
 (0.034999999999999996, 0.145, -18596139.665690076),
 (0.039999999999999994, 0.01, -1873895836.6270127),
 (0.039999999999999994, 0.015, -2261664001.1282244),
 (0.039999999999999994, 0.019999999999999997, -2366030628.592043),
 (0.039999999999999994, 0.024999999999999998, -2243894004.8698072),
 (0.039999999999999994, 0.03, -2236584006.497526),
 (0.039999999999999994, 0.034999999999999996, -4095288766.7454114),
 (0.039999999999999994, 0.039999999999999994, -4748683827.466286),
 (0.039999999999999994, 0.045, -4459224512.886259),
 (0.039999999999999994, 0.049999999999999996, -3786189710.0048885),
 (0.039999999999999994, 0.05499999999999999, -3752215730.0730863),
 (0.039999999999999994, 0.05999999999999999, -2386009378.935455),
 (0.039999999999999994, 0.06499999999999999, -1530561797.7826583),
 (0.039999999999999994, 0.06999999999999999, -1217993281.39052),
 (0.039999999999999994, 0.07499999999999998, -679841471.23903),
 (0.039999999999999994, 0.07999999999999999, -452648840.57146174),
 (0.039999999999999994, 0.08499999999999998, -262433451.11202866),
 (0.039999999999999994, 0.08999999999999998, -116467379.04294129),
 (0.039999999999999994, 0.09499999999999999, -102394839.98394217),
 (0.039999999999999994, 0.09999999999999998, -20375036.500134002),
 (0.039999999999999994, 0.10499999999999998, -17905537.180703405),
 (0.039999999999999994, 0.10999999999999997, -17415832.481935676),
 (0.039999999999999994, 0.11499999999999998, -14421690.826804953),
 (0.039999999999999994, 0.11999999999999998, -18088779.99982407),
 (0.039999999999999994, 0.12499999999999997, -12474032.969041072),
 (0.039999999999999994, 0.12999999999999998, -9978614.746733317),
 (0.039999999999999994, 0.13499999999999998, -10939774.787064515),
 (0.039999999999999994, 0.13999999999999999, -9506531.2266152),
 (0.039999999999999994, 0.145, -9585376.308624625),
 (0.045, 0.01, -1255754193.2157772),
 (0.045, 0.015, -1396604560.805192),
 (0.045, 0.019999999999999997, -1479281513.0922127),
 (0.045, 0.024999999999999998, -1354080901.1931012),
 (0.045, 0.03, -1374163758.6658993),
 (0.045, 0.034999999999999996, -2437410171.9223695),
 (0.045, 0.039999999999999994, -2736806623.127849),
 (0.045, 0.045, -2621351434.694136),
 (0.045, 0.049999999999999996, -2414184047.729241),
 (0.045, 0.05499999999999999, -2393017811.6634655),
 (0.045, 0.05999999999999999, -1704404352.4240751),
 (0.045, 0.06499999999999999, -1222803963.0696168),
 (0.045, 0.06999999999999999, -1083156567.534243),
 (0.045, 0.07499999999999998, -543739812.196493),
 (0.045, 0.07999999999999999, -375458362.00510764),
 (0.045, 0.08499999999999998, -243705651.54833657),
 (0.045, 0.08999999999999998, -109441586.88238615),
 (0.045, 0.09499999999999999, -100659348.80281444),
 (0.045, 0.09999999999999998, -19502424.143915605),
 (0.045, 0.10499999999999998, -17138687.36482664),
 (0.045, 0.10999999999999997, -17020849.928309564),
 (0.045, 0.11499999999999998, -14094613.939938601),
 (0.045, 0.11999999999999998, -18088779.99982407),
 (0.045, 0.12499999999999997, -12474032.969041072),
 (0.045, 0.12999999999999998, -9978614.746733317),
 (0.045, 0.13499999999999998, -10939774.787064515),
 (0.045, 0.13999999999999999, -9506531.2266152),
 (0.045, 0.145, -9585376.308624625),
 (0.049999999999999996, 0.01, -788892776.0936152),
 (0.049999999999999996, 0.015, -903871178.1445055),
 (0.049999999999999996, 0.019999999999999997, -1029276115.716093),
 (0.049999999999999996, 0.024999999999999998, -916175128.6661166),
 (0.049999999999999996, 0.03, -812418333.4537538),
 (0.049999999999999996, 0.034999999999999996, -1356364977.761779),
 (0.049999999999999996, 0.039999999999999994, -1515296507.3412986),
 (0.049999999999999996, 0.045, -1470276371.576558),
 (0.049999999999999996, 0.049999999999999996, -1428042565.237035),
 (0.049999999999999996, 0.05499999999999999, -1408780756.3121743),
 (0.049999999999999996, 0.05999999999999999, -1045741822.4418786),
 (0.049999999999999996, 0.06499999999999999, -781572991.4334338),
 (0.049999999999999996, 0.06999999999999999, -688175804.4739096),
 (0.049999999999999996, 0.07499999999999998, -536516696.7422627),
 (0.049999999999999996, 0.07999999999999999, -370470720.7910792),
 (0.049999999999999996, 0.08499999999999998, -286210802.24504095),
 (0.049999999999999996, 0.08999999999999998, -85790181.35114528),
 (0.049999999999999996, 0.09499999999999999, -78989014.63219103),
 (0.049999999999999996, 0.09999999999999998, -15303866.798151508),
 (0.049999999999999996, 0.10499999999999998, -12996953.065379936),
 (0.049999999999999996, 0.10999999999999997, -12907592.21765831),
 (0.049999999999999996, 0.11499999999999998, -9915321.404056901),
 (0.049999999999999996, 0.11999999999999998, -13548516.431424037),
 (0.049999999999999996, 0.12499999999999997, -9833974.57055377),
 (0.049999999999999996, 0.12999999999999998, -7866697.475649847),
 (0.049999999999999996, 0.13499999999999998, -8641377.592041558),
 (0.049999999999999996, 0.13999999999999999, -7509252.020146854),
 (0.049999999999999996, 0.145, -7571532.107093847),
 (0.05499999999999999, 0.01, -701519654.2700591),
 (0.05499999999999999, 0.015, -782772961.4929627),
 (0.05499999999999999, 0.019999999999999997, -817912060.8808811),
 (0.05499999999999999, 0.024999999999999998, -721516738.773999),
 (0.05499999999999999, 0.03, -643518785.1472903),
 (0.05499999999999999, 0.034999999999999996, -1089135642.026333),
 (0.05499999999999999, 0.039999999999999994, -1164507123.0004125),
 (0.05499999999999999, 0.045, -1110949519.3094501),
 (0.05499999999999999, 0.049999999999999996, -1100013745.3079119),
 (0.05499999999999999, 0.05499999999999999, -1044831012.3370261),
 (0.05499999999999999, 0.05999999999999999, -888826461.3179969),
 (0.05499999999999999, 0.06499999999999999, -697723035.5156364),
 (0.05499999999999999, 0.06999999999999999, -614345834.0152298),
 (0.05499999999999999, 0.07499999999999998, -482848572.82320935),
 (0.05499999999999999, 0.07999999999999999, -360808796.0646631),
 (0.05499999999999999, 0.08499999999999998, -278746387.1860754),
 (0.05499999999999999, 0.08999999999999998, -73083503.61942719),
 (0.05499999999999999, 0.09499999999999999, -67289681.00834604),
 (0.05499999999999999, 0.09999999999999998, -13037158.645882817),
 (0.05499999999999999, 0.10499999999999998, -11071929.811027734),
 (0.05499999999999999, 0.10999999999999997, -12448013.344740594),
 (0.05499999999999999, 0.11499999999999998, -9562283.272804258),
 (0.05499999999999999, 0.11999999999999998, -12740783.052714448),
 (0.05499999999999999, 0.12499999999999997, -9654569.186722724),
 (0.05499999999999999, 0.12999999999999998, -7723181.96521445),
 (0.05499999999999999, 0.13499999999999998, -8483729.26250739),
 (0.05499999999999999, 0.13999999999999999, -7372257.539299564),
 (0.05499999999999999, 0.145, -7433401.424111439),
 (0.05999999999999999, 0.01, -293762003.94365585),
 (0.05999999999999999, 0.015, -308515477.2530239),
 (0.05999999999999999, 0.019999999999999997, -300025104.9857434),
 (0.05999999999999999, 0.024999999999999998, -263967134.94393033),
 (0.05999999999999999, 0.03, -237074539.34661564),
 (0.05999999999999999, 0.034999999999999996, -401241325.9393422),
 (0.05999999999999999, 0.039999999999999994, -459436550.06233215),
 (0.05999999999999999, 0.045, -449156732.5573582),
 (0.05999999999999999, 0.049999999999999996, -443035295.3385262),
 (0.05999999999999999, 0.05499999999999999, -430812230.6564185),
 (0.05999999999999999, 0.05999999999999999, -366487313.2071056),
 (0.05999999999999999, 0.06499999999999999, -295268444.2205343),
 (0.05999999999999999, 0.06999999999999999, -282164969.59301746),
 (0.05999999999999999, 0.07499999999999998, -225633100.70352837),
 (0.05999999999999999, 0.07999999999999999, -183671713.55139694),
 (0.05999999999999999, 0.08499999999999998, -153535353.84823278),
 (0.05999999999999999, 0.08999999999999998, -46631537.98575795),
 (0.05999999999999999, 0.09499999999999999, -42934741.22874591),
 (0.05999999999999999, 0.09999999999999998, -8397889.141791549),
 (0.05999999999999999, 0.10499999999999998, -7131986.475294728),
 (0.05999999999999999, 0.10999999999999997, -7976360.567004297),
 (0.05999999999999999, 0.11499999999999998, -6127260.400146216),
 (0.05999999999999999, 0.11999999999999998, -7396729.341718851),
 (0.05999999999999999, 0.12499999999999997, -5605011.472970034),
 (0.05999999999999999, 0.12999999999999998, -4723522.230922971),
 (0.05999999999999999, 0.13499999999999998, -5188675.335253828),
 (0.05999999999999999, 0.13999999999999999, -4508895.755119507),
 (0.05999999999999999, 0.145, -4546291.546193018),
 (0.06499999999999999, 0.01, -195461851.32469282),
 (0.06499999999999999, 0.015, -205278441.5160904),
 (0.06499999999999999, 0.019999999999999997, -199629161.28406674),
 (0.06499999999999999, 0.024999999999999998, -174597247.9593498),
 (0.06499999999999999, 0.03, -158220098.6401684),
 (0.06499999999999999, 0.034999999999999996, -254943342.0828626),
 (0.06499999999999999, 0.039999999999999994, -292578882.7509565),
 (0.06499999999999999, 0.045, -286032478.20373225),
 (0.06499999999999999, 0.049999999999999996, -250501226.5872305),
 (0.06499999999999999, 0.05499999999999999, -247304952.39044768),
 (0.06499999999999999, 0.05999999999999999, -242473119.08799833),
 (0.06499999999999999, 0.06499999999999999, -218913454.2275211),
 (0.06499999999999999, 0.06999999999999999, -209198474.69198385),
 (0.06499999999999999, 0.07499999999999998, -178667478.45699283),
 (0.06499999999999999, 0.07999999999999999, -145440371.21229878),
 (0.06499999999999999, 0.08499999999999998, -124175453.7275627),
 (0.06499999999999999, 0.08999999999999998, -32084785.0500545),
 (0.06499999999999999, 0.09499999999999999, -29541207.581974953),
 (0.06499999999999999, 0.09999999999999998, -5778159.580987044),
 (0.06499999999999999, 0.10499999999999998, -4907156.46371379),
 (0.06499999999999999, 0.10999999999999997, -5488127.248820876),
 (0.06499999999999999, 0.11499999999999998, -4215855.649977593),
 (0.06499999999999999, 0.11999999999999998, -5331480.341669674),
 (0.06499999999999999, 0.12499999999999997, -4040030.005481927),
 (0.06499999999999999, 0.12999999999999998, -3404662.3519894),
 (0.06499999999999999, 0.13499999999999998, -3739939.5423577437),
 (0.06499999999999999, 0.13999999999999999, -3379778.6209405893),
 (0.06499999999999999, 0.145, -3407809.762498897),
 (0.06999999999999999, 0.01, -137640591.8869759),
 (0.06999999999999999, 0.015, -143633074.07716286),
 (0.06999999999999999, 0.019999999999999997, -141921338.84127483),
 (0.06999999999999999, 0.024999999999999998, -125624196.6706853),
 (0.06999999999999999, 0.03, -111443421.32686433),
 (0.06999999999999999, 0.034999999999999996, -174629202.1685768),
 (0.06999999999999999, 0.039999999999999994, -196524794.5794467),
 (0.06999999999999999, 0.045, -208853614.18501708),
 (0.06999999999999999, 0.049999999999999996, -184895706.90380457),
 (0.06999999999999999, 0.05499999999999999, -174258347.3214823),
 (0.06999999999999999, 0.05999999999999999, -170853695.381927),
 (0.06999999999999999, 0.06499999999999999, -145530147.43207988),
 (0.06999999999999999, 0.06999999999999999, -146613945.21762222),
 (0.06999999999999999, 0.07499999999999998, -126529778.03235497),
 (0.06999999999999999, 0.07999999999999999, -102998811.22946034),
 (0.06999999999999999, 0.08499999999999998, -102614048.5639138),
 (0.06999999999999999, 0.08999999999999998, -26562262.24494849),
 (0.06999999999999999, 0.09499999999999999, -23741347.98837677),
 (0.06999999999999999, 0.09999999999999998, -4643726.799722637),
 (0.06999999999999999, 0.10499999999999998, -3943728.7360428474),
 (0.06999999999999999, 0.10999999999999997, -4410636.8521729335),
 (0.06999999999999999, 0.11499999999999998, -3388151.813941212),
 (0.06999999999999999, 0.11999999999999998, -4284744.614231759),
 (0.06999999999999999, 0.12499999999999997, -3246846.2224325133),
 (0.06999999999999999, 0.12999999999999998, -3282931.9745911695),
 (0.06999999999999999, 0.13499999999999998, -3606221.656449979),
 (0.06999999999999999, 0.13999999999999999, -3379778.6209405893),
 (0.06999999999999999, 0.145, -3407809.762498897),
 (0.07499999999999998, 0.01, -102339981.75370973),
 (0.07499999999999998, 0.015, -106795575.19163062),
 (0.07499999999999998, 0.019999999999999997, -110781497.4854839),
 (0.07499999999999998, 0.024999999999999998, -100467624.20468575),
 (0.07499999999999998, 0.03, -89126586.04538228),
 (0.07499999999999998, 0.034999999999999996, -139659249.7592524),
 (0.07499999999999998, 0.039999999999999994, -150675114.33169323),
 (0.07499999999999998, 0.045, -142454659.505655),
 (0.07499999999999998, 0.049999999999999996, -126113474.61627224),
 (0.07499999999999998, 0.05499999999999999, -118857955.27440183),
 (0.07499999999999998, 0.05999999999999999, -115493026.76200433),
 (0.07499999999999998, 0.06499999999999999, -106142601.4093938),
 (0.07499999999999998, 0.06999999999999999, -127510457.77696171),
 (0.07499999999999998, 0.07499999999999998, -117127184.81642775),
 (0.07499999999999998, 0.07999999999999999, -95344834.91831046),
 (0.07499999999999998, 0.08499999999999998, -94988664.46943477),
 (0.07499999999999998, 0.08999999999999998, -26054030.780745264),
 (0.07499999999999998, 0.09499999999999999, -23287090.744056948),
 (0.07499999999999998, 0.09999999999999998, -4554875.630006038),
 (0.07499999999999998, 0.10499999999999998, -3828596.6506766113),
 (0.07499999999999998, 0.10999999999999997, -4281873.985208264),
 (0.07499999999999998, 0.11499999999999998, -3289239.081858161),
 (0.07499999999999998, 0.11999999999999998, -4159657.0091463164),
 (0.07499999999999998, 0.12499999999999997, -3152058.7252510455),
 (0.07499999999999998, 0.12999999999999998, -3230417.6019237717),
 (0.07499999999999998, 0.13499999999999998, -3233854.7481535245),
 (0.07499999999999998, 0.13999999999999999, -3030793.495870653),
 (0.07499999999999998, 0.145, -3055930.231451609),
 (0.07999999999999999, 0.01, -56806125.08577742),
 (0.07999999999999999, 0.015, -57474531.96632157),
 (0.07999999999999999, 0.019999999999999997, -59619649.10139267),
 (0.07999999999999999, 0.024999999999999998, -54068997.41465244),
 (0.07999999999999999, 0.03, -47965552.96905104),
 (0.07999999999999999, 0.034999999999999996, -75160885.64790739),
 (0.07999999999999999, 0.039999999999999994, -78513236.38189791),
 (0.07999999999999999, 0.045, -74229751.9074634),
 (0.07999999999999999, 0.049999999999999996, -65714747.17246754),
 (0.07999999999999999, 0.05499999999999999, -61934067.743828304),
 (0.07999999999999999, 0.05999999999999999, -60180683.12637601),
 (0.07999999999999999, 0.06499999999999999, -55296279.82701086),
 (0.07999999999999999, 0.06999999999999999, -66428124.6217989),
 (0.07999999999999999, 0.07499999999999998, -61827662.512980856),
 (0.07999999999999999, 0.07999999999999999, -53673693.18639655),
 (0.07999999999999999, 0.08499999999999998, -53625019.560409755),
 (0.07999999999999999, 0.08999999999999998, -14820246.456338106),
 (0.07999999999999999, 0.09499999999999999, -13461424.703748027),
 (0.07999999999999999, 0.09999999999999998, -2602369.5957391267),
 (0.07999999999999999, 0.10499999999999998, -2187419.443998356),
 (0.07999999999999999, 0.10999999999999997, -2446393.617969661),
 (0.07999999999999999, 0.11499999999999998, -1879264.4355326123),
 (0.07999999999999999, 0.11999999999999998, -2360431.894497954),
 (0.07999999999999999, 0.12499999999999997, -1788661.8853558032),
 (0.07999999999999999, 0.12999999999999998, -1777745.6322203479),
 (0.07999999999999999, 0.13499999999999998, -1779637.1436130581),
 (0.07999999999999999, 0.13999999999999999, -1667889.593047431),
 (0.07999999999999999, 0.145, -1681722.7030022275),
 (0.08499999999999998, 0.01, -50191925.09836191),
 (0.08499999999999998, 0.015, -50079206.26064249),
 (0.08499999999999998, 0.019999999999999997, -48487249.68514626),
 (0.08499999999999998, 0.024999999999999998, -45072253.635515735),
 (0.08499999999999998, 0.03, -39984384.260155834),
 (0.08499999999999998, 0.034999999999999996, -67752772.76267046),
 (0.08499999999999998, 0.039999999999999994, -67370722.05543692),
 (0.08499999999999998, 0.045, -63695145.10491849),
 (0.08499999999999998, 0.049999999999999996, -56388580.712237336),
 (0.08499999999999998, 0.05499999999999999, -61303037.63440932),
 (0.08499999999999998, 0.05999999999999999, -59567517.79683199),
 (0.08499999999999998, 0.06499999999999999, -54732880.412426494),
 (0.08499999999999998, 0.06999999999999999, -65751305.735592775),
 (0.08499999999999998, 0.07499999999999998, -54913003.84910827),
 (0.08499999999999998, 0.07999999999999999, -64066783.94261776),
 (0.08499999999999998, 0.08499999999999998, -61587923.22647321),
 (0.08499999999999998, 0.08999999999999998, -14896048.622617006),
 (0.08499999999999998, 0.09499999999999999, -13530276.807979273),
 (0.08499999999999998, 0.09999999999999998, -8460949.350597624),
 (0.08499999999999998, 0.10499999999999998, -7444038.413898713),
 (0.08499999999999998, 0.10999999999999997, -8325357.131504269),
 (0.08499999999999998, 0.11499999999999998, -6395351.694601179),
 (0.08499999999999998, 0.11999999999999998, -8223130.092186943),
 (0.08499999999999998, 0.12499999999999997, -6231232.262409977),
 (0.08499999999999998, 0.12999999999999998, -6193202.878947853),
 (0.08499999999999998, 0.13499999999999998, -6199792.412113098),
 (0.08499999999999998, 0.13999999999999999, -5810493.043668564),
 (0.08499999999999998, 0.145, -5858683.996774638),
 (0.08999999999999998, 0.01, -37098753.73957607),
 (0.08999999999999998, 0.015, -37015438.97541492),
 (0.08999999999999998, 0.019999999999999997, -35838763.54719225),
 (0.08999999999999998, 0.024999999999999998, -33322503.74634326),
 (0.08999999999999998, 0.03, -29560975.69646244),
 (0.08999999999999998, 0.034999999999999996, -57215189.09027351),
 (0.08999999999999998, 0.039999999999999994, -55511741.48799635),
 (0.08999999999999998, 0.045, -52483160.65538301),
 (0.08999999999999998, 0.049999999999999996, -46462739.59772889),
 (0.08999999999999998, 0.05499999999999999, -51149248.73389003),
 (0.08999999999999998, 0.05999999999999999, -49701187.76855512),
 (0.08999999999999998, 0.06499999999999999, -45541928.167459436),
 (0.08999999999999998, 0.06999999999999999, -54710097.845447436),
 (0.08999999999999998, 0.07499999999999998, -48409389.56033549),
 (0.08999999999999998, 0.07999999999999999, -56028803.90077626),
 (0.08999999999999998, 0.08499999999999998, -53860947.29216927),
 (0.08999999999999998, 0.08999999999999998, -14356898.055264574),
 (0.08999999999999998, 0.09499999999999999, -13040559.259234043),
 (0.08999999999999998, 0.09999999999999998, -8452364.920377271),
 (0.08999999999999998, 0.10499999999999998, -7436485.735626602),
 (0.08999999999999998, 0.10999999999999997, -8743511.25129191),
 (0.08999999999999998, 0.11499999999999998, -7962947.089663305),
 (0.08999999999999998, 0.11999999999999998, -7449714.623206282),
 (0.08999999999999998, 0.12499999999999997, -5774618.939338691),
 (0.08999999999999998, 0.12999999999999998, -5739376.279661806),
 (0.08999999999999998, 0.13499999999999998, -5745482.943868016),
 (0.08999999999999998, 0.13999999999999999, -5384710.722351924),
 (0.08999999999999998, 0.145, -5429370.330402459),
 (0.09499999999999999, 0.01, -22282961.3761877),
 (0.09499999999999999, 0.015, -21763041.881396025),
 (0.09499999999999999, 0.019999999999999997, -21071221.459052052),
 (0.09499999999999999, 0.024999999999999998, -23180701.503082875),
 (0.09499999999999999, 0.03, -20564005.603413895),
 (0.09499999999999999, 0.034999999999999996, -39801577.6317414),
 (0.09499999999999999, 0.039999999999999994, -38616579.32863927),
 (0.09499999999999999, 0.045, -36509756.00008097),
 (0.09499999999999999, 0.049999999999999996, -31497091.626588713),
 (0.09499999999999999, 0.05499999999999999, -34101893.18092017),
 (0.09499999999999999, 0.05999999999999999, -33136451.42797823),
 (0.09499999999999999, 0.06499999999999999, -30363417.02103681),
 (0.09499999999999999, 0.06999999999999999, -36475959.25308225),
 (0.09499999999999999, 0.07499999999999998, -32275192.160277173),
 (0.09499999999999999, 0.07999999999999999, -37529063.77161768),
 (0.09499999999999999, 0.08499999999999998, -39442766.887676805),
 (0.09499999999999999, 0.08999999999999998, -10513661.784523979),
 (0.09499999999999999, 0.09499999999999999, -9549697.226021215),
 (0.09499999999999999, 0.09999999999999998, -6440696.602327142),
 (0.09499999999999999, 0.10499999999999998, -6146144.737690401),
 (0.09499999999999999, 0.10999999999999997, -7226381.86591459),
 (0.09499999999999999, 0.11499999999999998, -6581257.208250052),
 (0.09499999999999999, 0.11999999999999998, -6157078.216308374),
 (0.09499999999999999, 0.12499999999999997, -4772636.574309688),
 (0.09499999999999999, 0.12999999999999998, -4749161.231445484),
 (0.09499999999999999, 0.13499999999999998, -4754214.312388156),
 (0.09499999999999999, 0.13999999999999999, -4455686.151082857),
 (0.09499999999999999, 0.145, -4766887.877447317),
 (0.09999999999999998, 0.01, -18237035.506833315),
 (0.09999999999999998, 0.015, -17811517.994724564),
 (0.09999999999999998, 0.019999999999999997, -17245311.67260966),
 (0.09999999999999998, 0.024999999999999998, -18681045.845205963),
 (0.09999999999999998, 0.03, -16572282.395653859),
 (0.09999999999999998, 0.034999999999999996, -31340672.24762013),
 (0.09999999999999998, 0.039999999999999994, -30407577.490042213),
 (0.09999999999999998, 0.045, -28748616.63087947),
 (0.09999999999999998, 0.049999999999999996, -24801530.09399664),
 (0.09999999999999998, 0.05499999999999999, -27181489.867587123),
 (0.09999999999999998, 0.05999999999999999, -26411968.21416702),
 (0.09999999999999998, 0.06499999999999999, -24201674.309518933),
 (0.09999999999999998, 0.06999999999999999, -29073779.32328107),
 (0.09999999999999998, 0.07499999999999998, -25725486.97002664),
 (0.09999999999999998, 0.07999999999999999, -29913174.06445328),
 (0.09999999999999998, 0.08499999999999998, -31438523.45144375),
 (0.09999999999999998, 0.08999999999999998, -9158983.645607488),
 (0.09999999999999998, 0.09499999999999999, -8718329.166955117),
 (0.09999999999999998, 0.09999999999999998, -5879988.832585498),
 (0.09999999999999998, 0.10499999999999998, -5611079.771715361),
 (0.09999999999999998, 0.10999999999999997, -6597274.688614166),
 (0.09999999999999998, 0.11499999999999998, -6008312.652842691),
 (0.09999999999999998, 0.11999999999999998, -5621061.414407823),
 (0.09999999999999998, 0.12499999999999997, -4618824.133815135),
 (0.09999999999999998, 0.12999999999999998, -4749161.231445484),
 (0.09999999999999998, 0.13499999999999998, -4754214.312388156),
 (0.09999999999999998, 0.13999999999999999, -4455686.151082857),
 (0.09999999999999998, 0.145, -4766887.877447317),
 (0.10499999999999998, 0.01, -16421660.151498787),
 (0.10499999999999998, 0.015, -16038500.072123881),
 (0.10499999999999998, 0.019999999999999997, -15528655.816245943),
 (0.10499999999999998, 0.024999999999999998, -16054884.627396073),
 (0.10499999999999998, 0.03, -14551789.741984295),
 (0.10499999999999998, 0.034999999999999996, -26435261.193801697),
 (0.10499999999999998, 0.039999999999999994, -25390392.206123646),
 (0.10499999999999998, 0.045, -25390392.206123646),
 (0.10499999999999998, 0.049999999999999996, -21904378.37353738),
 (0.10499999999999998, 0.05499999999999999, -23855794.633341685),
 (0.10499999999999998, 0.05999999999999999, -23180425.085192308),
 (0.10499999999999998, 0.06499999999999999, -20558843.517936364),
 (0.10499999999999998, 0.06999999999999999, -23001952.629930254),
 (0.10499999999999998, 0.07499999999999998, -19806747.697720516),
 (0.10499999999999998, 0.07999999999999999, -22957736.064160734),
 (0.10499999999999998, 0.08499999999999998, -22755509.782294743),
 (0.10499999999999998, 0.08999999999999998, -10950615.215915121),
 (0.10499999999999998, 0.09499999999999999, -12014857.444014791),
 (0.10499999999999998, 0.09999999999999998, -8343849.3530766675),
 (0.10499999999999998, 0.10499999999999998, -5163707.284638726),
 (0.10499999999999998, 0.10999999999999997, -6288380.949111493),
 (0.10499999999999998, 0.11499999999999998, -5726994.949543049),
 (0.10499999999999998, 0.11999999999999998, -5621061.414407823),
 (0.10499999999999998, 0.12499999999999997, -4618824.133815135),
 (0.10499999999999998, 0.12999999999999998, -4749161.231445484),
 (0.10499999999999998, 0.13499999999999998, -4754214.312388156),
 (0.10499999999999998, 0.13999999999999999, -4455686.151082857),
 (0.10499999999999998, 0.145, -4766887.877447317),
 (0.10999999999999997, 0.01, -16801005.121339574),
 (0.10999999999999997, 0.015, -16408993.93632652),
 (0.10999999999999997, 0.019999999999999997, -15887372.134689799),
 (0.10999999999999997, 0.024999999999999998, -16425756.979435386),
 (0.10999999999999997, 0.03, -14887940.17926507),
 (0.10999999999999997, 0.034999999999999996, -27045923.16511163),
 (0.10999999999999997, 0.039999999999999994, -24933075.914998975),
 (0.10999999999999997, 0.045, -24933075.914998975),
 (0.10999999999999997, 0.049999999999999996, -21509850.041881226),
 (0.10999999999999997, 0.05499999999999999, -23426118.57969961),
 (0.10999999999999997, 0.05999999999999999, -22762913.376802992),
 (0.10999999999999997, 0.06499999999999999, -20188550.141169712),
 (0.10999999999999997, 0.06999999999999999, -22587655.458781853),
 (0.10999999999999997, 0.07499999999999998, -19450000.613121353),
 (0.10999999999999997, 0.07999999999999999, -22544235.294883564),
 (0.10999999999999997, 0.08499999999999998, -22345651.389726065),
 (0.10999999999999997, 0.08999999999999998, -10753379.399492083),
 (0.10999999999999997, 0.09499999999999999, -11720292.680602387),
 (0.10999999999999997, 0.09999999999999998, -8139285.626699531),
 (0.10999999999999997, 0.10499999999999998, -5037110.175874172),
 (0.10999999999999997, 0.10999999999999997, -6134210.543415596),
 (0.10999999999999997, 0.11499999999999998, -5586587.881025014),
 (0.10999999999999997, 0.11999999999999998, -5483251.4875421105),
 (0.10999999999999997, 0.12499999999999997, -4505585.766688397),
 (0.10999999999999997, 0.12999999999999998, -4749161.231445484),
 (0.10999999999999997, 0.13499999999999998, -4754214.312388156),
 (0.10999999999999997, 0.13999999999999999, -4455686.151082857),
 (0.10999999999999997, 0.145, -4766887.877447317),
 (0.11499999999999998, 0.01, -16130067.62730695),
 (0.11499999999999998, 0.015, -15753711.160580434),
 (0.11499999999999998, 0.019999999999999997, -15252919.995080978),
 (0.11499999999999998, 0.024999999999999998, -15769804.782184197),
 (0.11499999999999998, 0.03, -14293399.721533973),
 (0.11499999999999998, 0.034999999999999996, -25965861.36040739),
 (0.11499999999999998, 0.039999999999999994, -22691115.5319745),
 (0.11499999999999998, 0.045, -22691115.5319745),
 (0.11499999999999998, 0.049999999999999996, -19305122.448182445),
 (0.11499999999999998, 0.05499999999999999, -21024976.314859997),
 (0.11499999999999998, 0.05999999999999999, -20429748.657518722),
 (0.11499999999999998, 0.06499999999999999, -18119253.819422074),
 (0.11499999999999998, 0.06999999999999999, -20272454.4150752),
 (0.11499999999999998, 0.07499999999999998, -17456404.518043406),
 (0.11499999999999998, 0.07999999999999999, -20233484.75330886),
 (0.11499999999999998, 0.08499999999999998, -21032921.52625223),
 (0.11499999999999998, 0.08999999999999998, -9981804.977552759),
 (0.11499999999999998, 0.09499999999999999, -10879340.481852429),
 (0.11499999999999998, 0.09999999999999998, -7555277.161163909),
 (0.11499999999999998, 0.10499999999999998, -4675688.409952072),
 (0.11499999999999998, 0.10999999999999997, -5694069.841757329),
 (0.11499999999999998, 0.11499999999999998, -5350076.481677296),
 (0.11499999999999998, 0.11999999999999998, -5251114.893629604),
 (0.11499999999999998, 0.12499999999999997, -4314839.211321383),
 (0.11499999999999998, 0.12999999999999998, -4760102.226587103),
 (0.11499999999999998, 0.13499999999999998, -4765166.948687307),
 (0.11499999999999998, 0.13999999999999999, -4465951.045904445),
 (0.11499999999999998, 0.145, -4777869.710778739),
 (0.11999999999999998, 0.01, -15632722.534455087),
 (0.11999999999999998, 0.015, -15267970.423408572),
 (0.11999999999999998, 0.019999999999999997, -14782620.36047976),
 (0.11999999999999998, 0.024999999999999998, -15283567.823674895),
 (0.11999999999999998, 0.03, -13852685.375139022),
 (0.11999999999999998, 0.034999999999999996, -25165245.143063836),
 (0.11999999999999998, 0.039999999999999994, -21991470.91659442),
 (0.11999999999999998, 0.045, -21991470.91659442),
 (0.11999999999999998, 0.049999999999999996, -18709879.56772151),
 (0.11999999999999998, 0.05499999999999999, -20376704.4638592),
 (0.11999999999999998, 0.05999999999999999, -19799829.708771575),
 (0.11999999999999998, 0.06499999999999999, -17560575.320271134),
 (0.11999999999999998, 0.06999999999999999, -19647385.385213748),
 (0.11999999999999998, 0.07499999999999998, -16918163.927459147),
 (0.11999999999999998, 0.07999999999999999, -19609617.29125836),
 (0.11999999999999998, 0.08499999999999998, -20384404.69723965),
 (0.11999999999999998, 0.08999999999999998, -9674031.827551465),
 (0.11999999999999998, 0.09499999999999999, -10543893.245849898),
 (0.11999999999999998, 0.09999999999999998, -7559121.698811683),
 (0.11999999999999998, 0.10499999999999998, -4678067.655575744),
 (0.11999999999999998, 0.10999999999999997, -5696967.2954719635),
 (0.11999999999999998, 0.11499999999999998, -5352798.892783272),
 (0.11999999999999998, 0.11999999999999998, -5253786.947674833),
 (0.11999999999999998, 0.12499999999999997, -4317034.837165165),
 (0.11999999999999998, 0.12999999999999998, -4762524.426570903),
 (0.11999999999999998, 0.13499999999999998, -4767591.725878319),
 (0.11999999999999998, 0.13999999999999999, -4468223.5657025715),
 (0.11999999999999998, 0.145, -4364996.981636736),
 (0.12499999999999997, 0.01, -8787072.142424019),
 (0.12499999999999997, 0.015, -8582046.875276655),
 (0.12499999999999997, 0.019999999999999997, -8309234.125745297),
 (0.12499999999999997, 0.024999999999999998, -8590814.092955623),
 (0.12499999999999997, 0.03, -7786522.500438634),
 (0.12499999999999997, 0.034999999999999996, -14145253.590122355),
 (0.12499999999999997, 0.039999999999999994, -12361291.581567142),
 (0.12499999999999997, 0.045, -12361291.581567142),
 (0.12499999999999997, 0.049999999999999996, -10230426.681887237),
 (0.12499999999999997, 0.05499999999999999, -10403835.289649641),
 (0.12499999999999997, 0.05999999999999999, -10109297.478330167),
 (0.12499999999999997, 0.06499999999999999, -8965990.233976515),
 (0.12499999999999997, 0.06999999999999999, -10031463.222258449),
 (0.12499999999999997, 0.07499999999999998, -8637991.055754906),
 (0.12499999999999997, 0.07999999999999999, -10074970.713728065),
 (0.12499999999999997, 0.08499999999999998, -10473038.677456593),
 (0.12499999999999997, 0.08999999999999998, -4970295.233130473),
 (0.12499999999999997, 0.09499999999999999, -5417210.039482422),
 (0.12499999999999997, 0.09999999999999998, -4671046.19779105),
 (0.12499999999999997, 0.10499999999999998, -2890741.94149057),
 (0.12499999999999997, 0.10999999999999997, -3520355.735063452),
 (0.12499999999999997, 0.11499999999999998, -3307682.01808499),
 (0.12499999999999997, 0.11999999999999998, -3246499.0674510077),
 (0.12499999999999997, 0.12499999999999997, -2667647.11104491),
 (0.12499999999999997, 0.12999999999999998, -2942930.7399718347),
 (0.12499999999999997, 0.13499999999999998, -2946062.0017911405),
 (0.12499999999999997, 0.13999999999999999, -2761071.9246306624),
 (0.12499999999999997, 0.145, -2697284.60088808),
 (0.12999999999999998, 0.01, -10077698.473280946),
 (0.12999999999999998, 0.015, -9842559.534141082),
 (0.12999999999999998, 0.019999999999999997, -9529676.632432556),
 (0.12999999999999998, 0.024999999999999998, -9852614.46196985),
 (0.12999999999999998, 0.03, -8930190.243458176),
 (0.12999999999999998, 0.034999999999999996, -16222878.132649908),
 (0.12999999999999998, 0.039999999999999994, -14176891.606238104),
 (0.12999999999999998, 0.045, -14176891.606238104),
 (0.12999999999999998, 0.049999999999999996, -11733049.835257918),
 (0.12999999999999998, 0.05499999999999999, -11931928.327817889),
 (0.12999999999999998, 0.05999999999999999, -11594129.433789577),
 (0.12999999999999998, 0.06499999999999999, -10282895.670806572),
 (0.12999999999999998, 0.06999999999999999, -11504863.048938146),
 (0.12999999999999998, 0.07499999999999998, -9906720.675993167),
 (0.12999999999999998, 0.07999999999999999, -11554760.827544378),
 (0.12999999999999998, 0.08499999999999998, -12011296.16096459),
 (0.12999999999999998, 0.08999999999999998, -5700321.548612757),
 (0.12999999999999998, 0.09499999999999999, -6212878.244251453),
 (0.12999999999999998, 0.09999999999999998, -5357119.456073781),
 (0.12999999999999998, 0.10499999999999998, -3315327.9247315135),
 (0.12999999999999998, 0.10999999999999997, -4037418.043419862),
 (0.12999999999999998, 0.11499999999999998, -3793507.266523748),
 (0.12999999999999998, 0.11999999999999998, -3723337.895178994),
 (0.12999999999999998, 0.12499999999999997, -2872941.4793983246),
 (0.12999999999999998, 0.12999999999999998, -3169410.1363166207),
 (0.12999999999999998, 0.13499999999999998, -3172782.370944767),
 (0.12999999999999998, 0.13999999999999999, -2973555.9951055516),
 (0.12999999999999998, 0.145, -2904859.7843207233),
 (0.13499999999999998, 0.01, -7892335.503676625),
 (0.13499999999999998, 0.015, -7708186.77144469),
 (0.13499999999999998, 0.019999999999999997, -7463152.963358987),
 (0.13499999999999998, 0.024999999999999998, -7786909.7669178825),
 (0.13499999999999998, 0.03, -6945237.222474909),
 (0.13499999999999998, 0.034999999999999996, -12616947.00682242),
 (0.13499999999999998, 0.039999999999999994, -11025730.986500023),
 (0.13499999999999998, 0.045, -11025730.986500023),
 (0.13499999999999998, 0.049999999999999996, -9125092.772651872),
 (0.13499999999999998, 0.05499999999999999, -9289610.206736566),
 (0.13499999999999998, 0.05999999999999999, -9325643.09772705),
 (0.13499999999999998, 0.06499999999999999, -8270962.954547706),
 (0.13499999999999998, 0.06999999999999999, -9253842.411827978),
 (0.13499999999999998, 0.07499999999999998, -7968389.676928833),
 (0.13499999999999998, 0.07999999999999999, -8999304.318589324),
 (0.13499999999999998, 0.08499999999999998, -8230117.542045023),
 (0.13499999999999998, 0.08999999999999998, -6931963.550259669),
 (0.13499999999999998, 0.09499999999999999, -7555265.990535809),
 (0.13499999999999998, 0.09999999999999998, -6335160.512959643),
 (0.13499999999999998, 0.10499999999999998, -3979803.9707241124),
 (0.13499999999999998, 0.10999999999999997, -4761705.728194396),
 (0.13499999999999998, 0.11499999999999998, -4761705.728194396),
 (0.13499999999999998, 0.11999999999999998, -5094644.7861457085),
 (0.13499999999999998, 0.12499999999999997, -4170029.519150611),
 (0.13499999999999998, 0.12999999999999998, -4177019.062324133),
 (0.13499999999999998, 0.13499999999999998, -4181463.387204337),
 (0.13499999999999998, 0.13999999999999999, -4148185.5588422413),
 (0.13499999999999998, 0.145, -4052352.6133743054),
 (0.13999999999999999, 0.01, -6713517.813250104),
 (0.13999999999999999, 0.015, -6556873.966374791),
 (0.13999999999999999, 0.019999999999999997, -6348438.980980982),
 (0.13999999999999999, 0.024999999999999998, -6623838.711116765),
 (0.13999999999999999, 0.03, -5907880.346522513),
 (0.13999999999999999, 0.034999999999999996, -10732450.291764168),
 (0.13999999999999999, 0.039999999999999994, -9658436.747560676),
 (0.13999999999999999, 0.045, -9658436.747560676),
 (0.13999999999999999, 0.049999999999999996, -7993495.53042725),
 (0.13999999999999999, 0.05499999999999999, -7993495.53042725),
 (0.13999999999999999, 0.05999999999999999, -8305876.170766537),
 (0.13999999999999999, 0.06499999999999999, -7366526.189514404),
 (0.13999999999999999, 0.06999999999999999, -8241926.9503423525),
 (0.13999999999999999, 0.07499999999999998, -7097039.554635804),
 (0.13999999999999999, 0.07999999999999999, -8015222.8119758945),
 (0.13999999999999999, 0.08499999999999998, -7330147.257269632),
 (0.13999999999999999, 0.08999999999999998, -6173947.497814605),
 (0.13999999999999999, 0.09499999999999999, -5819036.106491955),
 (0.13999999999999999, 0.09999999999999998, -4879315.673533274),
 (0.13999999999999999, 0.10499999999999998, -3065229.3422115906),
 (0.13999999999999999, 0.10999999999999997, -3667446.99598428),
 (0.13999999999999999, 0.11499999999999998, -3667446.99598428),
 (0.13999999999999999, 0.11999999999999998, -3923875.3470055433),
 (0.13999999999999999, 0.12499999999999997, -3211740.3103307313),
 (0.13999999999999999, 0.12999999999999998, -3217123.6289518857),
 (0.13999999999999999, 0.13499999999999998, -3220546.6304688756),
 (0.13999999999999999, 0.13999999999999999, -3194916.178142346),
 (0.13999999999999999, 0.145, -3121106.0210190974),
 (0.145, 0.01, -7778785.421113015),
 (0.145, 0.015, -7414618.165795057),
 (0.145, 0.019999999999999997, -7178916.543800534),
 (0.145, 0.024999999999999998, -7490342.972368721),
 (0.145, 0.03, -6680725.779282959),
 (0.145, 0.034999999999999996, -10635855.56111003),
 (0.145, 0.039999999999999994, -9571508.40679896),
 (0.145, 0.045, -9571508.40679896),
 (0.145, 0.049999999999999996, -7921552.076066301),
 (0.145, 0.05499999999999999, -7921552.076066301),
 (0.145, 0.05999999999999999, -8231121.21269536),
 (0.145, 0.06499999999999999, -7300225.61566699),
 (0.145, 0.06999999999999999, -8167747.551212004),
 (0.145, 0.07499999999999998, -7033164.427746292),
 (0.145, 0.07999999999999999, -7943083.8066594815),
 (0.145, 0.08499999999999998, -7264174.10288992),
 (0.145, 0.08999999999999998, -6118380.4297722),
 (0.145, 0.09499999999999999, -5819036.106491955),
 (0.145, 0.09999999999999998, -4879315.673533274),
 (0.145, 0.10499999999999998, -3065229.3422115906),
 (0.145, 0.10999999999999997, -3667446.99598428),
 (0.145, 0.11499999999999998, -3667446.99598428),
 (0.145, 0.11999999999999998, -3923875.3470055433),
 (0.145, 0.12499999999999997, -3211740.3103307313),
 (0.145, 0.12999999999999998, -3217123.6289518857),
 (0.145, 0.13499999999999998, -3220546.6304688756),
 (0.145, 0.13999999999999999, -3194916.178142346),
 (0.145, 0.145, -3121106.0210190974)]

This is far from the expectation. Each of the possible combination loss significant amount of money

best_buy_signal, best_sell_signal = pd.DataFrame(modelA3_best_signal, columns=['buy signal', 'sell signal', 'return']).sort_values('return').iloc[0,:2]
best_buy_signal, best_sell_signal
(0.01, 0.034999999999999996)
modelA3_prediction = pd.DataFrame(columns=['Training Model', 'Actual', '% Change'])
modelA3_prediction['Training Model'] = np.reshape(prediction3_2, [1029,])
modelA3_prediction['Actual'] = y_testA3
modelA3_prediction['% Change'] = \
    (modelA3_prediction['Training Model'] \
    - modelA3_prediction['Actual'].shift()) \
    /modelA3_prediction['Actual'].shift()

modelA3_prediction = modelA3_prediction.tail(-1)
modelA3_prediction
Training Model Actual % Change
1 1.254292 1.189114 0.060973
2 1.259160 1.175845 0.058906
3 1.248775 1.208240 0.062024
4 1.269317 1.213446 0.050551
5 1.282639 1.211629 0.057022
... ... ... ...
1024 3.154819 3.042753 0.048652
1025 3.206061 3.095107 0.053671
1026 3.265114 3.093162 0.054928
1027 3.281385 3.040189 0.060851
1028 3.236699 2.989478 0.064637
def using_modelA_forecasting_trading(positive_percentage, negative_percentage, dataset): 

    buy_signal = positive_percentage
    sell_signal = negative_percentage
    holding = False
    capital = 1
    last_price = None 

    trading_activity = []
    trading_history = []

    def trading_log(activity_type, time):
        nonlocal trading_activity
        nonlocal trading_history
        nonlocal capital
        nonlocal current_price
        nonlocal trade_return 
    
        trading_history.append(capital)
        trading_activity.append(activity_type)

        if activity_type == 1: 
            print(f"Time {time}: BUY at {current_price:.6f}" )
        elif activity_type == -1: 
            print(f"Time {time}: SELL at {current_price:.6f} | New Capital: {capital:.6f} | Trade Return: {trade_return:.6f}" )

    def check_for_last_trade(time): 
        nonlocal dataset
        nonlocal holding
        nonlocal current_price
        nonlocal last_price
        nonlocal capital
        nonlocal trade_return

        if time == len(dataset)-1:
            if holding:
                holding = False
                trade_return = 1 + ((current_price - last_price) / last_price) 
                capital *= trade_return
                trading_log(-1, t)
            else: 
                trading_log(0, t)
        else:
            trading_log(0, t)


    for t in range(len(dataset)): 

        decision = dataset['% Change'].iloc[t]
        current_price = dataset['Actual'].iloc[t]

        if decision >= buy_signal: 
            if not(holding): 
                holding = True 
                last_price = current_price
                trading_log(1, t)
            else:
                check_for_last_trade(t)
        
        elif decision <= sell_signal:
            if holding: 
                holding = False
                trade_return = 1 + ((current_price - last_price) / last_price)
                capital *= trade_return
                trading_log(-1, t)
            else:
                check_for_last_trade(t)
        
        else:
            check_for_last_trade(t)  

    x = [x for x in range(len(dataset))]

    plt.figure(figsize=(12, 10))
    plt.plot(x, trading_history)
    plt.show()

    plt.figure(figsize=(12, 10))
    plt.plot(dataset['Actual'].values,alpha=0.3)
    plt.plot(dataset['Training Model'].values,alpha=0.3)

    for no, activity in enumerate(trading_activity): 
        
        if activity == 1: 
            y_plot = dataset['Actual'].iloc[no]
            plt.scatter(no, y_plot, color='green')
        elif activity == -1:     
            y_plot = dataset['Actual'].iloc[no]
            plt.scatter(no, y_plot, color='red', marker='x')
using_modelA_forecasting_trading(best_buy_signal, -best_sell_signal, modelA3_training_forecast)
Time 1: BUY at -0.640153
Time 3: SELL at -0.669897 | New Capital: 1.046464 | Trade Return: 1.046464
Time 19: BUY at -0.614226
Time 51: SELL at -0.769137 | New Capital: 1.310389 | Trade Return: 1.252206
Time 56: BUY at -0.783518
Time 63: SELL at -0.822753 | New Capital: 1.376009 | Trade Return: 1.050076
Time 95: BUY at -0.656430
Time 102: SELL at -0.701673 | New Capital: 1.470848 | Trade Return: 1.068923
Time 105: BUY at -0.679651
Time 128: SELL at -0.746940 | New Capital: 1.616471 | Trade Return: 1.099006
Time 133: BUY at -0.744028
Time 139: SELL at -0.768471 | New Capital: 1.669576 | Trade Return: 1.032852
Time 145: BUY at -0.733330
Time 177: SELL at -0.931834 | New Capital: 2.121512 | Trade Return: 1.270689
Time 199: BUY at -0.837411
Time 204: SELL at -0.857243 | New Capital: 2.171755 | Trade Return: 1.023683
Time 229: BUY at -0.769503
Time 236: SELL at -0.807008 | New Capital: 2.277607 | Trade Return: 1.048740
Time 249: BUY at -0.767788
Time 271: SELL at -0.838419 | New Capital: 2.487130 | Trade Return: 1.091993
Time 275: BUY at -0.819381
Time 281: SELL at -0.840451 | New Capital: 2.551086 | Trade Return: 1.025715
Time 298: BUY at -0.773312
Time 333: SELL at -0.865418 | New Capital: 2.854935 | Trade Return: 1.119106
Time 341: BUY at -0.820103
Time 385: SELL at -1.047661 | New Capital: 3.647109 | Trade Return: 1.277475
Time 391: BUY at -0.981847
Time 396: SELL at -1.016139 | New Capital: 3.774487 | Trade Return: 1.034926
Time 406: BUY at -0.954349
Time 439: SELL at -1.075096 | New Capital: 4.252045 | Trade Return: 1.126523
Time 459: BUY at -0.977427
Time 466: SELL at -0.997918 | New Capital: 4.341185 | Trade Return: 1.020964
Time 475: BUY at -0.973491
Time 496: SELL at -1.003576 | New Capital: 4.475349 | Trade Return: 1.030905
Time 505: BUY at -0.962174
Time 544: SELL at -1.057478 | New Capital: 4.918635 | Trade Return: 1.099051
Time 553: BUY at -0.987395
Time 568: SELL at -1.009211 | New Capital: 5.027311 | Trade Return: 1.022095
Time 589: BUY at -0.950484
Time 595: SELL at -0.965467 | New Capital: 5.106561 | Trade Return: 1.015764
Time 613: BUY at -0.895440
Time 661: SELL at -0.909685 | New Capital: 5.187799 | Trade Return: 1.015909
Time 677: BUY at -0.884083
Time 684: SELL at -0.907193 | New Capital: 5.323407 | Trade Return: 1.026140
Time 718: BUY at -0.858339
Time 724: SELL at -0.876695 | New Capital: 5.437251 | Trade Return: 1.021386
Time 767: BUY at -0.790374
Time 775: SELL at -0.791398 | New Capital: 5.444294 | Trade Return: 1.001295
Time 791: BUY at -0.786367
Time 806: SELL at -0.830134 | New Capital: 5.747311 | Trade Return: 1.055658
Time 816: BUY at -0.787113
Time 845: SELL at -0.832086 | New Capital: 6.075697 | Trade Return: 1.057137
Time 871: BUY at -0.798009
Time 902: SELL at -0.841967 | New Capital: 6.410373 | Trade Return: 1.055084
Time 942: BUY at -0.791962
Time 952: SELL at -0.822428 | New Capital: 6.656978 | Trade Return: 1.038470
Time 999: BUY at -0.735227
Time 1018: SELL at -0.771042 | New Capital: 6.981262 | Trade Return: 1.048713
Time 1046: BUY at -0.725886
Time 1062: SELL at -0.760725 | New Capital: 7.316331 | Trade Return: 1.047996
Time 1068: BUY at -0.753004
Time 1084: SELL at -0.780216 | New Capital: 7.580736 | Trade Return: 1.036139
Time 1088: BUY at -0.767693
Time 1092: SELL at -0.768899 | New Capital: 7.592648 | Trade Return: 1.001571
Time 1118: BUY at -0.732513
Time 1128: SELL at -0.750385 | New Capital: 7.777895 | Trade Return: 1.024398
Time 1159: BUY at -0.730624
Time 1168: SELL at -0.736227 | New Capital: 7.837539 | Trade Return: 1.007669
Time 1178: BUY at -0.721212
Time 1206: SELL at -0.762170 | New Capital: 8.282637 | Trade Return: 1.056790
Time 1261: BUY at -0.671230
Time 1268: SELL at -0.695324 | New Capital: 8.579943 | Trade Return: 1.035895
Time 1273: BUY at -0.678365
Time 1280: SELL at -0.693872 | New Capital: 8.776075 | Trade Return: 1.022859
Time 1320: BUY at -0.659437
Time 1324: SELL at -0.676040 | New Capital: 8.997025 | Trade Return: 1.025176
Time 1341: BUY at -0.647041
Time 1352: SELL at -0.701070 | New Capital: 9.748286 | Trade Return: 1.083501
Time 1356: BUY at -0.698459
Time 1367: SELL at -0.722132 | New Capital: 10.078690 | Trade Return: 1.033893
Time 1381: BUY at -0.689698
Time 1389: SELL at -0.718601 | New Capital: 10.501057 | Trade Return: 1.041907
Time 1537: BUY at -0.543174
Time 1553: SELL at -0.604750 | New Capital: 11.691488 | Trade Return: 1.113363
Time 1607: BUY at -0.483900
Time 1613: SELL at -0.515255 | New Capital: 12.449062 | Trade Return: 1.064797
Time 1619: BUY at -0.481773
Time 1625: SELL at -0.509684 | New Capital: 13.170288 | Trade Return: 1.057934
Time 1639: BUY at -0.468591
Time 1649: SELL at -0.528596 | New Capital: 14.856781 | Trade Return: 1.128053
Time 1655: BUY at -0.526374
Time 1660: SELL at -0.566189 | New Capital: 15.980552 | Trade Return: 1.075640
Time 1700: BUY at -0.458314
Time 1708: SELL at -0.502867 | New Capital: 17.534031 | Trade Return: 1.097211
Time 1714: BUY at -0.483273
Time 1729: SELL at -0.555745 | New Capital: 20.163449 | Trade Return: 1.149961
Time 1741: BUY at -0.504193
Time 1746: SELL at -0.533326 | New Capital: 21.328535 | Trade Return: 1.057782
Time 1752: BUY at -0.510708
Time 1769: SELL at -0.646621 | New Capital: 27.004615 | Trade Return: 1.266126
Time 1775: BUY at -0.617170
Time 1781: SELL at -0.645621 | New Capital: 28.249496 | Trade Return: 1.046099
Time 1793: BUY at -0.609631
Time 1803: SELL at -0.687745 | New Capital: 31.869222 | Trade Return: 1.128134
Time 1820: BUY at -0.611607
Time 1825: SELL at -0.618559 | New Capital: 32.231472 | Trade Return: 1.011367
Time 1850: BUY at -0.568546
Time 1890: SELL at -0.723513 | New Capital: 41.016722 | Trade Return: 1.272567
Time 1894: BUY at -0.697816
Time 1896: SELL at -0.684865 | New Capital: 40.255444 | Trade Return: 0.981440
Time 1910: BUY at -0.662390
Time 1917: SELL at -0.686817 | New Capital: 41.739953 | Trade Return: 1.036877
Time 1921: BUY at -0.689222
Time 1937: SELL at -0.740806 | New Capital: 44.863951 | Trade Return: 1.074844
Time 1938: BUY at -0.702260
Time 1953: SELL at -0.984673 | New Capital: 62.905870 | Trade Return: 1.402147
Time 1955: BUY at -0.906272
Time 1962: SELL at -0.977618 | New Capital: 67.858051 | Trade Return: 1.078724
Time 1966: BUY at -0.960174
Time 1981: SELL at -1.058192 | New Capital: 74.785253 | Trade Return: 1.102084
Time 2000: BUY at -0.980546
Time 2004: SELL at -1.013290 | New Capital: 77.282616 | Trade Return: 1.033394
Time 2010: BUY at -0.958817
Time 2022: SELL at -1.031479 | New Capital: 83.139358 | Trade Return: 1.075783
Time 2034: BUY at -1.008973
Time 2051: SELL at -1.132561 | New Capital: 93.323014 | Trade Return: 1.122489
Time 2096: BUY at -0.978189
Time 2106: SELL at -0.993315 | New Capital: 94.766103 | Trade Return: 1.015463
Time 2117: BUY at -0.952992
Time 2138: SELL at -1.000275 | New Capital: 99.467952 | Trade Return: 1.049615
Time 2161: BUY at -0.899059
Time 2167: SELL at -0.912891 | New Capital: 100.998323 | Trade Return: 1.015386
Time 2171: BUY at -0.884401
Time 2178: SELL at -0.908860 | New Capital: 103.791518 | Trade Return: 1.027656
Time 2188: BUY at -0.852720
Time 2199: SELL at -0.884686 | New Capital: 107.682413 | Trade Return: 1.037488
Time 2209: BUY at -0.835110
Time 2220: SELL at -0.870663 | New Capital: 112.266828 | Trade Return: 1.042573
Time 2268: BUY at -0.796588
Time 2285: SELL at -0.852164 | New Capital: 120.099431 | Trade Return: 1.069768
Time 2339: BUY at -0.736409
Time 2360: SELL at -0.845943 | New Capital: 137.962994 | Trade Return: 1.148740
Time 2363: BUY at -0.833737
Time 2368: SELL at -0.864640 | New Capital: 143.076686 | Trade Return: 1.037066
Time 2375: BUY at -0.813738
Time 2385: SELL at -0.880322 | New Capital: 154.783819 | Trade Return: 1.081824
Time 2408: BUY at -0.809096
Time 2424: SELL at -0.860783 | New Capital: 164.671881 | Trade Return: 1.063883
Time 2475: BUY at -0.725458
Time 2487: SELL at -0.761265 | New Capital: 172.799826 | Trade Return: 1.049358
Time 2544: BUY at -0.644383
Time 2550: SELL at -0.661771 | New Capital: 177.462625 | Trade Return: 1.026984
Time 2556: BUY at -0.649827
Time 2564: SELL at -0.700832 | New Capital: 191.391688 | Trade Return: 1.078490
Time 2581: BUY at -0.644256
Time 2584: SELL at -0.655176 | New Capital: 194.635739 | Trade Return: 1.016950
Time 2605: BUY at -0.636637
Time 2625: SELL at -0.688968 | New Capital: 210.634420 | Trade Return: 1.082198
Time 2640: BUY at -0.636550
Time 2646: SELL at -0.652549 | New Capital: 215.928523 | Trade Return: 1.025134
Time 2651: BUY at -0.646105
Time 2665: SELL at -0.767772 | New Capital: 256.589846 | Trade Return: 1.188309
Time 2668: BUY at -0.762789
Time 2673: SELL at -0.806659 | New Capital: 271.347177 | Trade Return: 1.057513
Time 2680: BUY at -0.735719
Time 2685: SELL at -0.747067 | New Capital: 275.532753 | Trade Return: 1.015425
Time 2690: BUY at -0.754956
Time 2702: SELL at -0.800398 | New Capital: 292.117446 | Trade Return: 1.060191
Time 2719: BUY at -0.722918
Time 2720: SELL at -0.712641 | New Capital: 287.964647 | Trade Return: 0.985784
Time 2722: BUY at -0.678444
Time 2738: SELL at -0.751543 | New Capital: 318.991371 | Trade Return: 1.107745
Time 2748: BUY at -0.699570
Time 2754: SELL at -0.736592 | New Capital: 335.872590 | Trade Return: 1.052921
Time 2827: BUY at -0.580529
Time 2834: SELL at -0.612083 | New Capital: 354.128400 | Trade Return: 1.054353
Time 2846: BUY at -0.584585
Time 2861: SELL at -0.670405 | New Capital: 406.116506 | Trade Return: 1.146806
Time 2864: BUY at -0.651644
Time 2871: SELL at -0.683928 | New Capital: 426.236345 | Trade Return: 1.049542
Time 2881: BUY at -0.631074
Time 2885: SELL at -0.638820 | New Capital: 431.467826 | Trade Return: 1.012274
Time 2891: BUY at -0.614623
Time 2896: SELL at -0.633701 | New Capital: 444.860871 | Trade Return: 1.031041
Time 2945: BUY at -0.540175
Time 2951: SELL at -0.560808 | New Capital: 461.853776 | Trade Return: 1.038198
Time 2957: BUY at -0.538524
Time 2961: SELL at -0.561411 | New Capital: 481.482794 | Trade Return: 1.042501
Time 2965: BUY at -0.543666
Time 2972: SELL at -0.576958 | New Capital: 510.966716 | Trade Return: 1.061236
Time 2974: BUY at -0.577601
Time 2983: SELL at -0.607464 | New Capital: 537.384918 | Trade Return: 1.051702
Time 3008: BUY at -0.558832
Time 3010: SELL at -0.563324 | New Capital: 541.704358 | Trade Return: 1.008038
Time 3046: BUY at -0.490923
Time 3050: SELL at -0.505970 | New Capital: 558.307498 | Trade Return: 1.030650
Time 3083: BUY at -0.438268
Time 3087: SELL at -0.448712 | New Capital: 571.611895 | Trade Return: 1.023830
Time 3113: BUY at -0.384604
Time 3120: SELL at -0.396453 | New Capital: 589.221485 | Trade Return: 1.030807
Time 3121: BUY at -0.403627
Time 3123: SELL at -0.410627 | New Capital: 599.439550 | Trade Return: 1.017342
Time 3127: BUY at -0.418594
Time 3134: SELL at -0.434538 | New Capital: 622.271107 | Trade Return: 1.038088
Time 3166: BUY at -0.356384
Time 3173: SELL at -0.384223 | New Capital: 670.881230 | Trade Return: 1.078117
Time 3196: BUY at -0.331441
Time 3206: SELL at -0.366105 | New Capital: 741.047121 | Trade Return: 1.104588
Time 3277: BUY at -0.231415
Time 3287: SELL at -0.274420 | New Capital: 878.761346 | Trade Return: 1.185837
Time 3311: BUY at -0.208678
Time 3313: SELL at -0.208567 | New Capital: 878.293425 | Trade Return: 0.999468
Time 3330: BUY at -0.197671
Time 3334: SELL at -0.228574 | New Capital: 1015.602248 | Trade Return: 1.156336
Time 3407: BUY at -0.121397
Time 3414: SELL at -0.170490 | New Capital: 1426.306130 | Trade Return: 1.404394
Time 3448: BUY at -0.102835
Time 3453: SELL at -0.124699 | New Capital: 1729.554932 | Trade Return: 1.212611
Time 3454: BUY at -0.128706
Time 3455: SELL at -0.133079 | New Capital: 1788.316186 | Trade Return: 1.033975
Time 3456: BUY at -0.153816
Time 3464: SELL at -0.210495 | New Capital: 2447.288480 | Trade Return: 1.368488
Time 3500: BUY at -0.052100
Time 3505: SELL at -0.090344 | New Capital: 4243.726069 | Trade Return: 1.734052
Time 3515: BUY at -0.046108
Time 3522: SELL at -0.109017 | New Capital: 10033.782449 | Trade Return: 2.364380
Time 3525: BUY at -0.075527
Time 3526: SELL at -0.088661 | New Capital: 11778.667005 | Trade Return: 1.173901
Time 3533: BUY at -0.060972
Time 3535: SELL at -0.065781 | New Capital: 12707.691646 | Trade Return: 1.078873
Time 3557: BUY at -0.023205
Time 3563: SELL at -0.054536 | New Capital: 29865.995472 | Trade Return: 2.350230
Time 3572: BUY at -0.040243
Time 3573: SELL at -0.025300 | New Capital: 18775.768308 | Trade Return: 0.628667
Time 3574: BUY at -0.028220
Time 3577: SELL at -0.066528 | New Capital: 44262.801562 | Trade Return: 2.357443
Time 3600: BUY at -0.026292
Time 3601: SELL at -0.043227 | New Capital: 72774.444629 | Trade Return: 1.644145
Time 3620: BUY at -0.015229
Time 3623: SELL at -0.024109 | New Capital: 115211.498160 | Trade Return: 1.583131
Time 3636: BUY at -0.023800
Time 3641: SELL at -0.030545 | New Capital: 147866.236309 | Trade Return: 1.283433
Time 3642: BUY at -0.065345
Time 3643: SELL at -0.061004 | New Capital: 138042.766610 | Trade Return: 0.933565
Time 3655: BUY at -0.010586
Time 3657: SELL at -0.016483 | New Capital: 214930.537964 | Trade Return: 1.556985
Time 3664: BUY at -0.024879
Time 3665: SELL at -0.028680 | New Capital: 247769.059017 | Trade Return: 1.152787
Time 3673: BUY at -0.042799
Time 3682: SELL at -0.216154 | New Capital: 1251353.274892 | Trade Return: 5.050482
Time 3685: BUY at -0.119921
Time 3688: SELL at -0.151673 | New Capital: 1582680.385001 | Trade Return: 1.264775
Time 3697: BUY at -0.114810
Time 3703: SELL at -0.164863 | New Capital: 2272665.763274 | Trade Return: 1.435960
Time 3731: BUY at -0.023958
Time 3736: SELL at -0.046235 | New Capital: 4385787.407186 | Trade Return: 1.929799
Time 3746: BUY at -0.040347
Time 3747: SELL at -0.040561 | New Capital: 4409060.183914 | Trade Return: 1.005306
Time 3750: BUY at -0.029641
Time 3755: SELL at -0.060623 | New Capital: 9017650.044669 | Trade Return: 2.045254
Time 3757: BUY at -0.069638
Time 3759: SELL at -0.093677 | New Capital: 12130432.317677 | Trade Return: 1.345188
Time 3767: BUY at -0.062686
Time 3780: SELL at -0.173117 | New Capital: 33499740.363843 | Trade Return: 2.761628
Time 3790: BUY at -0.158514
Time 3796: SELL at -0.227399 | New Capital: 48057600.896192 | Trade Return: 1.434566
Time 3847: BUY at -0.038489
Time 3848: SELL at -0.038410 | New Capital: 47958415.195109 | Trade Return: 0.997936
Time 3850: BUY at -0.038315
Time 3853: SELL at -0.059266 | New Capital: 74182748.221652 | Trade Return: 1.546814
Time 3861: BUY at -0.059933
Time 3862: SELL at -0.060210 | New Capital: 74526409.148357 | Trade Return: 1.004633
Time 3879: BUY at -0.022102
Time 3883: SELL at -0.048346 | New Capital: 163022428.995764 | Trade Return: 2.187445
Time 3887: BUY at -0.054568
Time 3889: SELL at -0.040537 | New Capital: 121104925.920053 | Trade Return: 0.742873
Time 3904: BUY at 0.009881
Time 3939: SELL at 0.024578 | New Capital: 301247705.611777 | Trade Return: 2.487493
Time 3940: BUY at 0.024507
Time 3941: SELL at 0.031745 | New Capital: 390214083.164633 | Trade Return: 1.295326
Time 3947: BUY at -0.010285
Time 3948: SELL at -0.011277 | New Capital: 427852146.077708 | Trade Return: 1.096455
Time 3950: BUY at -0.000650
Time 3951: SELL at -0.000682 | New Capital: 448627858.669947 | Trade Return: 1.048558
Time 3954: BUY at 0.029522
Time 3965: SELL at 0.010920 | New Capital: 165948486.282628 | Trade Return: 0.369902
Time 3966: BUY at 0.018793
Time 3968: SELL at -0.000634 | New Capital: -5602833.975111 | Trade Return: -0.033762
Time 3974: BUY at 0.001080
Time 3977: SELL at 0.002524 | New Capital: -13096467.801852 | Trade Return: 2.337472
Time 3979: BUY at -0.005507
Time 3980: SELL at -0.010769 | New Capital: -25609248.761968 | Trade Return: 1.955432
Time 3989: BUY at 0.021825
Time 4292: SELL at 0.581626 | New Capital: -682487742.418398 | Trade Return: 26.650049
Time 4299: BUY at 0.440578
Time 4322: SELL at 0.510320 | New Capital: -790523373.408630 | Trade Return: 1.158297
Time 4331: BUY at 0.355758
Time 4391: SELL at 0.494107 | New Capital: -1097946919.574430 | Trade Return: 1.388886
Time 4394: BUY at 0.487988
Time 4464: SELL at 0.621750 | New Capital: -1398904594.976860 | Trade Return: 1.274109
Time 4471: BUY at 0.466950
Time 4474: SELL at 0.531668 | New Capital: -1592790055.000813 | Trade Return: 1.138598
Time 4480: BUY at 0.409596
Time 4491: SELL at 0.529216 | New Capital: -2057954957.462173 | Trade Return: 1.292044
Time 4498: BUY at 0.437078
Time 4505: SELL at 0.474433 | New Capital: -2233838726.929595 | Trade Return: 1.085465
Time 4519: BUY at 0.259858
Time 4610: SELL at 0.639376 | New Capital: -5496313467.139054 | Trade Return: 2.460479
Time 4613: BUY at 0.586824
Time 4623: SELL at 0.568452 | New Capital: -5324238602.850286 | Trade Return: 0.968693
Time 4625: BUY at 0.544477
Time 4667: SELL at 0.685429 | New Capital: -6702556644.685703 | Trade Return: 1.258876
Time 4674: BUY at 0.559301
Time 4709: SELL at 0.656010 | New Capital: -7861495345.465529 | Trade Return: 1.172910
Time 4711: BUY at 0.664756
Time 4807: SELL at 0.979277 | New Capital: -11581069322.978273 | Trade Return: 1.473138
Time 4829: BUY at 0.308879
Time 4884: SELL at 0.771678 | New Capital: -28933166009.294159 | Trade Return: 2.498316
Time 4890: BUY at 0.715300
Time 4944: SELL at 1.085676 | New Capital: -43914469133.146172 | Trade Return: 1.517790
Time 4949: BUY at 1.021354
Time 4955: SELL at 1.000911 | New Capital: -43035483679.873993 | Trade Return: 0.979984
Time 4958: BUY at 0.936049
Time 4980: SELL at 1.034179 | New Capital: -47547045016.766106 | Trade Return: 1.104834
Time 4985: BUY at 0.992562
Time 4998: SELL at 1.146894 | New Capital: -54940079989.572334 | Trade Return: 1.155489

Visualization
Visualization
using_modelA_forecasting_trading(best_buy_signal, -best_sell_signal, modelA3_prediction)
Time 0: BUY at 1.189114
Time 1027: SELL at 2.989478 | New Capital: 2.514038 | Trade Return: 2.514038
Visualization
Visualization
using_modelA_forecasting_trading(0.0005, -0.01, modelA3_prediction)
Time 0: BUY at 1.189114
Time 1027: SELL at 2.989478 | New Capital: 2.514038 | Trade Return: 2.514038
Visualization
Visualization

I thought by finding the better combination for buy signal and sell signal from the training data, would give us a good combination to use for the testing data. However, it does not seem to be the case. Furthermore, when manually inputting the possible combinations for the buy signal and sell signal, we noted that it cannot perform well, we are not able to set a good threshold for the buy and sell signal. Too high of a buy signal, means that it will have need a large positive change in price, for it get into the market, while if the sell signal is too high, it will never realize the profit and constantly wait for a big negative movement for it to close the position.

model_results
Model loss mae mape mse
1 modelA 0.208893 0.394186 19.527624 0.208893
2 modelA2 43.724167 5.551799 271.390289 43.724167
3 modelA3 0.024773 0.134636 6.905888 0.024276

Based on results, we can observe that the added batch normalization and regularization improved the performance is various of the error measures. All of them indicated a better prediction. However, we can still explore using more information to further enhance the model and the dataset. To see if we can still get better and more reliable predictions.

We definitely could make adjustments to the trading strategy, but we will just stick to this simple model and expand the ML model instead. Since we were using the percentage change from current price to the prediction price, as the trading strategy decision, we should use the difference in the t0 to t1, to train the model.

Furthermore, that would have a better scale for the ML model as well. We also have other prices as well and not only close, so let's try expanding the scope to include those the open, high and low prices as well. We also can also further extract the datetime information such as the date of the month, week number of the year, the transition from which day to which, as inputs as well, as it might have patterns that could assist in the prediction.

Model B - New Data Preparation, New Model

Data Preparation

We will now attempt to not only include more columns into the input of the model, we will also be expanding the ML model.

dataset
Price Close High Low Open Volume
Ticker ^GSPC ^GSPC ^GSPC ^GSPC ^GSPC
Date
2001-01-02 1283.270020 1320.280029 1276.050049 1320.280029 1129400000
2001-01-03 1347.560059 1347.760010 1274.619995 1283.270020 1880700000
2001-01-04 1333.339966 1350.239990 1329.140015 1347.560059 2131000000
2001-01-05 1298.349976 1334.770020 1294.949951 1333.339966 1430800000
2001-01-08 1295.859985 1298.349976 1276.290039 1298.349976 1115500000
... ... ... ... ... ...
2024-12-23 5974.069824 5978.250000 5902.569824 5940.250000 3593280000
2024-12-24 6040.040039 6040.100098 5981.439941 5984.629883 1757720000
2024-12-26 6037.589844 6049.750000 6007.370117 6024.970215 2904530000
2024-12-27 5970.839844 6006.169922 5932.950195 6006.169922 3159610000
2024-12-30 5906.939941 5940.790039 5869.160156 5920.669922 3433250000
dataset.columns
MultiIndex([( 'Close', '^GSPC'),
            (  'High', '^GSPC'),
            (   'Low', '^GSPC'),
            (  'Open', '^GSPC'),
            ('Volume', '^GSPC')],
           names=['Price', 'Ticker'])
dataset['Close']['^GSPC']
Date
2001-01-02    1283.270020
2001-01-03    1347.560059
2001-01-04    1333.339966
2001-01-05    1298.349976
2001-01-08    1295.859985
                 ...     
2024-12-23    5974.069824
2024-12-24    6040.040039
2024-12-26    6037.589844
2024-12-27    5970.839844
2024-12-30    5906.939941
Name: ^GSPC, Length: 6036, dtype: float64
modelB_dataset = pd.DataFrame()
modelB_dataset.index = dataset.index
modelB_dataset
Date
2001-01-02
2001-01-03
2001-01-04
2001-01-05
2001-01-08
...
2024-12-23
2024-12-24
2024-12-26
2024-12-27
2024-12-30

Extracting Datetime

modelB_dataset['DayOfWeek'] = dataset.index.dayofweek
modelB_dataset['DayOfYear'] = dataset.index.dayofyear
modelB_dataset['DayOfMonth'] = dataset.index.day
modelB_dataset['Month'] = dataset.index.month
modelB_dataset['WeekNo'] = dataset.index.strftime("%W").astype('int')

modelB_dataset
DayOfWeek DayOfYear DayOfMonth Month WeekNo
Date
2001-01-02 1 2 2 1 1
2001-01-03 2 3 3 1 1
2001-01-04 3 4 4 1 1
2001-01-05 4 5 5 1 1
2001-01-08 0 8 8 1 2
... ... ... ... ... ...
2024-12-23 0 358 23 12 52
2024-12-24 1 359 24 12 52
2024-12-26 3 361 26 12 52
2024-12-27 4 362 27 12 52
2024-12-30 0 365 30 12 53
datetime_columns = ['DayOfWeek','DayOfYear','DayOfMonth','Month','WeekNo']

Extracting Prices and Volume

modelB_dataset['Close'] = dataset['Close']['^GSPC']
modelB_dataset['Open'] = dataset['Open']['^GSPC']
modelB_dataset['High'] = dataset['High']['^GSPC']
modelB_dataset['Low'] = dataset['Low']['^GSPC']
modelB_dataset['Volume'] = dataset['Volume']['^GSPC']

modelB_dataset
DayOfWeek DayOfYear DayOfMonth Month WeekNo Close Open High Low Volume
Date
2001-01-02 1 2 2 1 1 1283.270020 1320.280029 1320.280029 1276.050049 1129400000
2001-01-03 2 3 3 1 1 1347.560059 1283.270020 1347.760010 1274.619995 1880700000
2001-01-04 3 4 4 1 1 1333.339966 1347.560059 1350.239990 1329.140015 2131000000
2001-01-05 4 5 5 1 1 1298.349976 1333.339966 1334.770020 1294.949951 1430800000
2001-01-08 0 8 8 1 2 1295.859985 1298.349976 1298.349976 1276.290039 1115500000
... ... ... ... ... ... ... ... ... ... ...
2024-12-23 0 358 23 12 52 5974.069824 5940.250000 5978.250000 5902.569824 3593280000
2024-12-24 1 359 24 12 52 6040.040039 5984.629883 6040.100098 5981.439941 1757720000
2024-12-26 3 361 26 12 52 6037.589844 6024.970215 6049.750000 6007.370117 2904530000
2024-12-27 4 362 27 12 52 5970.839844 6006.169922 6006.169922 5932.950195 3159610000
2024-12-30 0 365 30 12 53 5906.939941 5920.669922 5940.790039 5869.160156 3433250000

Pre-processing Datetime

We will need to squish the datetime to values between 0 - 1, we can easily do that with datetime. In a 0 - 1 scale, it should also still be meaningful.

test = modelB_dataset
minimum_value = min(test['DayOfWeek'])
maximum_value = max(test['DayOfWeek'])
test['DayOfWeek'] = (test['DayOfWeek'] - minimum_value) / (maximum_value - minimum_value)

test['DayOfWeek']
Date
2001-01-02    0.25
2001-01-03    0.50
2001-01-04    0.75
2001-01-05    1.00
2001-01-08    0.00
              ... 
2024-12-23    0.00
2024-12-24    0.25
2024-12-26    0.75
2024-12-27    1.00
2024-12-30    0.00
Name: DayOfWeek, Length: 6036, dtype: float64
for column in datetime_columns:

    minimum_value = min(modelB_dataset[column])
    maximum_value = max(modelB_dataset[column]) 

    modelB_dataset[column] = (modelB_dataset[column] - minimum_value) / (maximum_value - minimum_value)

modelB_dataset 
DayOfWeek DayOfYear DayOfMonth Month WeekNo Close Open High Low Volume
Date
2001-01-02 0.25 0.000000 0.033333 0.0 0.018868 1283.270020 1320.280029 1320.280029 1276.050049 1129400000
2001-01-03 0.50 0.002747 0.066667 0.0 0.018868 1347.560059 1283.270020 1347.760010 1274.619995 1880700000
2001-01-04 0.75 0.005495 0.100000 0.0 0.018868 1333.339966 1347.560059 1350.239990 1329.140015 2131000000
2001-01-05 1.00 0.008242 0.133333 0.0 0.018868 1298.349976 1333.339966 1334.770020 1294.949951 1430800000
2001-01-08 0.00 0.016484 0.233333 0.0 0.037736 1295.859985 1298.349976 1298.349976 1276.290039 1115500000
... ... ... ... ... ... ... ... ... ... ...
2024-12-23 0.00 0.978022 0.733333 1.0 0.981132 5974.069824 5940.250000 5978.250000 5902.569824 3593280000
2024-12-24 0.25 0.980769 0.766667 1.0 0.981132 6040.040039 5984.629883 6040.100098 5981.439941 1757720000
2024-12-26 0.75 0.986264 0.833333 1.0 0.981132 6037.589844 6024.970215 6049.750000 6007.370117 2904530000
2024-12-27 1.00 0.989011 0.866667 1.0 0.981132 5970.839844 6006.169922 6006.169922 5932.950195 3159610000
2024-12-30 0.00 0.997253 0.966667 1.0 1.000000 5906.939941 5920.669922 5940.790039 5869.160156 3433250000

Pre-processing Prices

We will get the percentage change of the price columns. This will naturally place the values between -1 to 1.

prices_columns = ['Close', 'Open', 'High', 'Low', 'Volume']
for column in prices_columns:
    modelB_dataset[column] = \
    (modelB_dataset[column] - modelB_dataset[column].shift()) \
    / modelB_dataset[column].shift()

modelB_dataset
DayOfWeek DayOfYear DayOfMonth Month WeekNo Close Open High Low Volume
Date
2001-01-02 0.25 0.000000 0.033333 0.0 0.018868 NaN NaN NaN NaN NaN
2001-01-03 0.50 0.002747 0.066667 0.0 0.018868 0.050099 -0.028032 0.020814 -0.001121 0.665220
2001-01-04 0.75 0.005495 0.100000 0.0 0.018868 -0.010552 0.050099 0.001840 0.042774 0.133089
2001-01-05 1.00 0.008242 0.133333 0.0 0.018868 -0.026242 -0.010552 -0.011457 -0.025723 -0.328578
2001-01-08 0.00 0.016484 0.233333 0.0 0.037736 -0.001918 -0.026242 -0.027286 -0.014410 -0.220366
... ... ... ... ... ... ... ... ... ... ...
2024-12-23 0.00 0.978022 0.733333 1.0 0.981132 0.007287 0.016818 -0.000637 0.012048 -0.563032
2024-12-24 0.25 0.980769 0.766667 1.0 0.981132 0.011043 0.007471 0.010346 0.013362 -0.510831
2024-12-26 0.75 0.986264 0.833333 1.0 0.981132 -0.000406 0.006741 0.001598 0.004335 0.652442
2024-12-27 1.00 0.989011 0.866667 1.0 0.981132 -0.011056 -0.003120 -0.007204 -0.012388 0.087821
2024-12-30 0.00 0.997253 0.966667 1.0 1.000000 -0.010702 -0.014235 -0.010885 -0.010752 0.086606
modelB_dataset = modelB_dataset.tail(-1)
modelB_dataset
DayOfWeek DayOfYear DayOfMonth Month WeekNo Close Open High Low Volume
Date
2001-01-03 0.50 0.002747 0.066667 0.0 0.018868 0.050099 -0.028032 0.020814 -0.001121 0.665220
2001-01-04 0.75 0.005495 0.100000 0.0 0.018868 -0.010552 0.050099 0.001840 0.042774 0.133089
2001-01-05 1.00 0.008242 0.133333 0.0 0.018868 -0.026242 -0.010552 -0.011457 -0.025723 -0.328578
2001-01-08 0.00 0.016484 0.233333 0.0 0.037736 -0.001918 -0.026242 -0.027286 -0.014410 -0.220366
2001-01-09 0.25 0.019231 0.266667 0.0 0.037736 0.003812 -0.001918 0.010298 0.014769 0.067952
... ... ... ... ... ... ... ... ... ... ...
2024-12-23 0.00 0.978022 0.733333 1.0 0.981132 0.007287 0.016818 -0.000637 0.012048 -0.563032
2024-12-24 0.25 0.980769 0.766667 1.0 0.981132 0.011043 0.007471 0.010346 0.013362 -0.510831
2024-12-26 0.75 0.986264 0.833333 1.0 0.981132 -0.000406 0.006741 0.001598 0.004335 0.652442
2024-12-27 1.00 0.989011 0.866667 1.0 0.981132 -0.011056 -0.003120 -0.007204 -0.012388 0.087821
2024-12-30 0.00 0.997253 0.966667 1.0 1.000000 -0.010702 -0.014235 -0.010885 -0.010752 0.086606
modelB_dataset[:7].to_numpy()
array([[ 0.5       ,  0.00274725,  0.06666667,  0.        ,  0.01886792,
         0.05009861, -0.02803194,  0.02081375, -0.00112069,  0.66522047],
       [ 0.75      ,  0.00549451,  0.1       ,  0.        ,  0.01886792,
        -0.01055247,  0.05009861,  0.00184008,  0.04277355,  0.13308874],
       [ 1.        ,  0.00824176,  0.13333333,  0.        ,  0.01886792,
        -0.02624236, -0.01055247, -0.0114572 , -0.02572345, -0.32857813],
       [ 0.        ,  0.01648352,  0.23333333,  0.        ,  0.03773585,
        -0.00191781, -0.02624236, -0.02728563, -0.01440976, -0.22036623],
       [ 0.25      ,  0.01923077,  0.26666667,  0.        ,  0.03773585,
         0.00381219, -0.00191781,  0.01029768,  0.01476935,  0.06795159],
       [ 0.5       ,  0.02197802,  0.3       ,  0.        ,  0.03773585,
         0.00958639,  0.00381219,  0.00155524, -0.00606883,  0.08830689],
       [ 0.75      ,  0.02472527,  0.33333333,  0.        ,  0.03773585,
         0.0103177 ,  0.00958639,  0.01402839,  0.01743206,  0.08846895]])
modelB_dataset[:7].to_numpy().reshape(1,7,10)
array([[[ 0.5       ,  0.00274725,  0.06666667,  0.        ,
          0.01886792,  0.05009861, -0.02803194,  0.02081375,
         -0.00112069,  0.66522047],
        [ 0.75      ,  0.00549451,  0.1       ,  0.        ,
          0.01886792, -0.01055247,  0.05009861,  0.00184008,
          0.04277355,  0.13308874],
        [ 1.        ,  0.00824176,  0.13333333,  0.        ,
          0.01886792, -0.02624236, -0.01055247, -0.0114572 ,
         -0.02572345, -0.32857813],
        [ 0.        ,  0.01648352,  0.23333333,  0.        ,
          0.03773585, -0.00191781, -0.02624236, -0.02728563,
         -0.01440976, -0.22036623],
        [ 0.25      ,  0.01923077,  0.26666667,  0.        ,
          0.03773585,  0.00381219, -0.00191781,  0.01029768,
          0.01476935,  0.06795159],
        [ 0.5       ,  0.02197802,  0.3       ,  0.        ,
          0.03773585,  0.00958639,  0.00381219,  0.00155524,
         -0.00606883,  0.08830689],
        [ 0.75      ,  0.02472527,  0.33333333,  0.        ,
          0.03773585,  0.0103177 ,  0.00958639,  0.01402839,
          0.01743206,  0.08846895]]])

Creating Input and Output for the New Model

def create_multi_sequence(dataset, lookback, output_name): 
    input = []
    output = []
    for i in range(len(dataset) - lookback): 
        input.append(dataset[i:i+lookback].to_numpy().reshape(7,10))
        output.append(dataset[output_name].iloc[i+lookback])

    return np.array(input), np.array(output)
modelB_input, modelB_output = create_multi_sequence(modelB_dataset, 7, 'Close')
modelB_input.shape, modelB_output.shape
((6028, 7, 10), (6028,))
x_trainB, x_validB, x_testB = train_valid_test_split(modelB_input, 4000, 1000)
y_trainB, y_validB, y_testB = ysplit(modelB_output, 4000, 1000) 

x_trainB.shape, x_validB.shape, x_testB.shape, y_trainB.shape, y_validB.shape, y_testB.shape     
((4000, 7, 10), (1000, 7, 10), (1028, 7, 10), (4000,), (1000,), (1028,))
initializer = keras.initializers.Zeros()

inputs = keras.Input(shape=(7,10))

x = LSTM(
    10, activation='relu', 
    kernel_regularizer=regularizers.L2(l2=0.01),
    kernel_initializer=initializer
)(inputs)

x = BatchNormalization(
        beta_regularizer=regularizers.L2(l2=0.01),
        gamma_regularizer = regularizers.L2(l2=0.01),
    )(x)

outputs = Dense(1)(x)

modelB = keras.Model(inputs = inputs, outputs = outputs, name='modelB1')
modelB.summary()
Model: "modelB1"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ input_layer_3 (InputLayer)      │ (None, 7, 10)          │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ lstm_3 (LSTM)                   │ (None, 10)             │           840 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_2           │ (None, 10)             │            40 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_3 (Dense)                 │ (None, 1)              │            11 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
Total params: 891 (3.48 KB)
Trainable params: 871 (3.40 KB)
Non-trainable params: 20 (80.00 B)
modelB.compile(
    optimizer='adam', 
    loss='mse', 
    metrics=['mae', 'mse', 'mape']
)

historyB = modelB.fit(
    x_trainB, y_trainB, 
    epochs=100, batch_size=10, 
    validation_data=(x_validB, y_validB)
)
Epoch 1/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.0825 - mae: 0.0084 - mape: 2013.7214 - mse: 1.5455e-04 - val_loss: 0.0408 - val_mae: 0.0074 - val_mape: 1641.4115 - val_mse: 1.6809e-04
Epoch 2/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0322 - mae: 0.0084 - mape: 1209.1904 - mse: 1.5470e-04 - val_loss: 0.0133 - val_mae: 0.0077 - val_mape: 3193.2703 - val_mse: 1.7262e-04
Epoch 3/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0099 - mae: 0.0085 - mape: 797.7102 - mse: 1.5951e-04 - val_loss: 0.0032 - val_mae: 0.0075 - val_mape: 607.4617 - val_mse: 1.6846e-04
Epoch 4/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 0.0023 - mae: 0.0082 - mape: 555.0915 - mse: 1.5772e-04 - val_loss: 6.3977e-04 - val_mae: 0.0074 - val_mape: 1723.1003 - val_mse: 1.6823e-04
Epoch 5/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 0s 763us/step - loss: 4.6085e-04 - mae: 0.0085 - mape: 987.9034 - mse: 1.6038e-04 - val_loss: 2.1022e-04 - val_mae: 0.0074 - val_mape: 252.6568 - val_mse: 1.6752e-04
Epoch 6/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.7891e-04 - mae: 0.0083 - mape: 390.8765 - mse: 1.5414e-04 - val_loss: 1.6974e-04 - val_mae: 0.0074 - val_mape: 140.8364 - val_mse: 1.6772e-04
Epoch 7/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4461e-04 - mae: 0.0082 - mape: 545.2186 - mse: 1.4351e-04 - val_loss: 1.6739e-04 - val_mae: 0.0074 - val_mape: 630.5184 - val_mse: 1.6734e-04
Epoch 8/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4902e-04 - mae: 0.0082 - mape: 255.1398 - mse: 1.4900e-04 - val_loss: 1.6779e-04 - val_mae: 0.0075 - val_mape: 203.3429 - val_mse: 1.6779e-04
Epoch 9/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5906e-04 - mae: 0.0083 - mape: 302.6854 - mse: 1.5904e-04 - val_loss: 1.6781e-04 - val_mae: 0.0074 - val_mape: 1452.2511 - val_mse: 1.6781e-04
Epoch 10/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5320e-04 - mae: 0.0083 - mape: 323.3464 - mse: 1.5320e-04 - val_loss: 1.6932e-04 - val_mae: 0.0075 - val_mape: 2226.7642 - val_mse: 1.6932e-04
Epoch 11/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5692e-04 - mae: 0.0083 - mape: 384.4576 - mse: 1.5692e-04 - val_loss: 1.6736e-04 - val_mae: 0.0074 - val_mape: 544.5884 - val_mse: 1.6736e-04
Epoch 12/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5946e-04 - mae: 0.0083 - mape: 280.7841 - mse: 1.5946e-04 - val_loss: 1.8096e-04 - val_mae: 0.0085 - val_mape: 3461.5647 - val_mse: 1.8096e-04
Epoch 13/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.6336e-04 - mae: 0.0086 - mape: 607.7719 - mse: 1.6309e-04 - val_loss: 1.6785e-04 - val_mae: 0.0074 - val_mape: 1437.9941 - val_mse: 1.6780e-04
Epoch 14/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4518e-04 - mae: 0.0081 - mape: 678.1620 - mse: 1.4490e-04 - val_loss: 1.6835e-04 - val_mae: 0.0075 - val_mape: 550.5589 - val_mse: 1.6835e-04
Epoch 15/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5170e-04 - mae: 0.0084 - mape: 260.0364 - mse: 1.5170e-04 - val_loss: 1.6905e-04 - val_mae: 0.0076 - val_mape: 874.4456 - val_mse: 1.6905e-04
Epoch 16/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4977e-04 - mae: 0.0081 - mape: 1475.3113 - mse: 1.4977e-04 - val_loss: 1.6734e-04 - val_mae: 0.0074 - val_mape: 604.0170 - val_mse: 1.6734e-04
Epoch 17/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4211e-04 - mae: 0.0080 - mape: 452.5220 - mse: 1.4210e-04 - val_loss: 1.6773e-04 - val_mae: 0.0074 - val_mape: 149.7588 - val_mse: 1.6773e-04
Epoch 18/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5089e-04 - mae: 0.0083 - mape: 1014.5746 - mse: 1.5089e-04 - val_loss: 1.6744e-04 - val_mae: 0.0074 - val_mape: 833.4354 - val_mse: 1.6735e-04
Epoch 19/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5021e-04 - mae: 0.0082 - mape: 377.0353 - mse: 1.5017e-04 - val_loss: 1.6797e-04 - val_mae: 0.0074 - val_mape: 1565.6134 - val_mse: 1.6797e-04
Epoch 20/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.7894e-04 - mae: 0.0085 - mape: 796.3860 - mse: 1.7893e-04 - val_loss: 1.6882e-04 - val_mae: 0.0076 - val_mape: 778.9343 - val_mse: 1.6882e-04
Epoch 21/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4962e-04 - mae: 0.0081 - mape: 394.4771 - mse: 1.4961e-04 - val_loss: 1.6910e-04 - val_mae: 0.0075 - val_mape: 2139.6050 - val_mse: 1.6910e-04
Epoch 22/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4609e-04 - mae: 0.0081 - mape: 870.2853 - mse: 1.4603e-04 - val_loss: 1.7068e-04 - val_mae: 0.0076 - val_mape: 2638.7085 - val_mse: 1.7054e-04
Epoch 23/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5215e-04 - mae: 0.0083 - mape: 957.9016 - mse: 1.5209e-04 - val_loss: 1.7000e-04 - val_mae: 0.0077 - val_mape: 1217.2638 - val_mse: 1.6999e-04
Epoch 24/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5098e-04 - mae: 0.0085 - mape: 430.6957 - mse: 1.5096e-04 - val_loss: 1.6803e-04 - val_mae: 0.0075 - val_mape: 181.3927 - val_mse: 1.6777e-04
Epoch 25/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.6616e-04 - mae: 0.0084 - mape: 198.4997 - mse: 1.6603e-04 - val_loss: 1.7134e-04 - val_mae: 0.0077 - val_mape: 1520.5452 - val_mse: 1.7098e-04
Epoch 26/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5398e-04 - mae: 0.0083 - mape: 629.0077 - mse: 1.5367e-04 - val_loss: 1.6735e-04 - val_mae: 0.0074 - val_mape: 592.8907 - val_mse: 1.6734e-04
Epoch 27/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5256e-04 - mae: 0.0083 - mape: 292.0543 - mse: 1.5255e-04 - val_loss: 1.6741e-04 - val_mae: 0.0074 - val_mape: 404.9240 - val_mse: 1.6741e-04
Epoch 28/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4776e-04 - mae: 0.0082 - mape: 1185.3149 - mse: 1.4763e-04 - val_loss: 1.6816e-04 - val_mae: 0.0075 - val_mape: 446.9170 - val_mse: 1.6816e-04
Epoch 29/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.6632e-04 - mae: 0.0084 - mape: 1580.9575 - mse: 1.6630e-04 - val_loss: 1.6885e-04 - val_mae: 0.0074 - val_mape: 1966.6010 - val_mse: 1.6870e-04
Epoch 30/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.6045e-04 - mae: 0.0083 - mape: 312.8686 - mse: 1.6026e-04 - val_loss: 1.8221e-04 - val_mae: 0.0086 - val_mape: 3641.7651 - val_mse: 1.8221e-04
Epoch 31/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.6266e-04 - mae: 0.0084 - mape: 220.6656 - mse: 1.6250e-04 - val_loss: 1.6761e-04 - val_mae: 0.0074 - val_mape: 1203.0729 - val_mse: 1.6755e-04
Epoch 32/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4920e-04 - mae: 0.0083 - mape: 1253.8989 - mse: 1.4912e-04 - val_loss: 1.7392e-04 - val_mae: 0.0079 - val_mape: 2064.0386 - val_mse: 1.7314e-04
Epoch 33/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4216e-04 - mae: 0.0082 - mape: 220.1017 - mse: 1.4190e-04 - val_loss: 1.6734e-04 - val_mae: 0.0074 - val_mape: 606.9094 - val_mse: 1.6734e-04
Epoch 34/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4423e-04 - mae: 0.0081 - mape: 813.1741 - mse: 1.4419e-04 - val_loss: 1.6820e-04 - val_mae: 0.0074 - val_mape: 1708.4794 - val_mse: 1.6820e-04
Epoch 35/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 1ms/step - loss: 1.5206e-04 - mae: 0.0082 - mape: 2897.7407 - mse: 1.5194e-04 - val_loss: 1.6870e-04 - val_mae: 0.0075 - val_mape: 390.8449 - val_mse: 1.6807e-04
Epoch 36/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.8310e-04 - mae: 0.0086 - mape: 1114.9275 - mse: 1.8277e-04 - val_loss: 1.7338e-04 - val_mae: 0.0079 - val_mape: 2115.8875 - val_mse: 1.7337e-04
Epoch 37/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5058e-04 - mae: 0.0084 - mape: 696.0850 - mse: 1.5054e-04 - val_loss: 1.6844e-04 - val_mae: 0.0075 - val_mape: 595.3270 - val_mse: 1.6843e-04
Epoch 38/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4366e-04 - mae: 0.0082 - mape: 296.7546 - mse: 1.4360e-04 - val_loss: 1.6734e-04 - val_mae: 0.0074 - val_mape: 757.8378 - val_mse: 1.6733e-04
Epoch 39/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5777e-04 - mae: 0.0084 - mape: 617.1727 - mse: 1.5774e-04 - val_loss: 1.8086e-04 - val_mae: 0.0085 - val_mape: 3445.3247 - val_mse: 1.8085e-04
Epoch 40/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.6075e-04 - mae: 0.0083 - mape: 377.4797 - mse: 1.6047e-04 - val_loss: 1.6738e-04 - val_mae: 0.0074 - val_mape: 734.9247 - val_mse: 1.6733e-04
Epoch 41/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4950e-04 - mae: 0.0083 - mape: 374.0895 - mse: 1.4949e-04 - val_loss: 1.6852e-04 - val_mae: 0.0074 - val_mape: 1881.8527 - val_mse: 1.6852e-04
Epoch 42/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5513e-04 - mae: 0.0083 - mape: 316.2107 - mse: 1.5513e-04 - val_loss: 1.6957e-04 - val_mae: 0.0076 - val_mape: 1074.6558 - val_mse: 1.6957e-04
Epoch 43/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.7220e-04 - mae: 0.0087 - mape: 950.0574 - mse: 1.7214e-04 - val_loss: 1.6769e-04 - val_mae: 0.0074 - val_mape: 260.1218 - val_mse: 1.6751e-04
Epoch 44/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4873e-04 - mae: 0.0083 - mape: 229.8965 - mse: 1.4853e-04 - val_loss: 1.6735e-04 - val_mae: 0.0074 - val_mape: 584.5075 - val_mse: 1.6735e-04
Epoch 45/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5519e-04 - mae: 0.0083 - mape: 382.1865 - mse: 1.5519e-04 - val_loss: 1.6743e-04 - val_mae: 0.0074 - val_mape: 388.5162 - val_mse: 1.6742e-04
Epoch 46/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5041e-04 - mae: 0.0081 - mape: 424.6964 - mse: 1.5036e-04 - val_loss: 1.7316e-04 - val_mae: 0.0079 - val_mape: 2063.9822 - val_mse: 1.7314e-04
Epoch 47/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5728e-04 - mae: 0.0083 - mape: 291.7227 - mse: 1.5706e-04 - val_loss: 1.6735e-04 - val_mae: 0.0074 - val_mape: 588.7047 - val_mse: 1.6735e-04
Epoch 48/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4439e-04 - mae: 0.0082 - mape: 515.5146 - mse: 1.4439e-04 - val_loss: 1.7329e-04 - val_mae: 0.0077 - val_mape: 3347.0505 - val_mse: 1.7329e-04
Epoch 49/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4723e-04 - mae: 0.0083 - mape: 538.9624 - mse: 1.4723e-04 - val_loss: 1.6867e-04 - val_mae: 0.0074 - val_mape: 1954.0175 - val_mse: 1.6867e-04
Epoch 50/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.3359e-04 - mae: 0.0080 - mape: 250.8719 - mse: 1.3358e-04 - val_loss: 1.7198e-04 - val_mae: 0.0078 - val_mape: 1764.8616 - val_mse: 1.7189e-04
Epoch 51/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4341e-04 - mae: 0.0082 - mape: 390.9930 - mse: 1.4314e-04 - val_loss: 1.6753e-04 - val_mae: 0.0074 - val_mape: 490.1663 - val_mse: 1.6737e-04
Epoch 52/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5728e-04 - mae: 0.0083 - mape: 970.3064 - mse: 1.5714e-04 - val_loss: 1.7281e-04 - val_mae: 0.0079 - val_mape: 1988.2635 - val_mse: 1.7281e-04
Epoch 53/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5058e-04 - mae: 0.0084 - mape: 395.6921 - mse: 1.5051e-04 - val_loss: 1.6853e-04 - val_mae: 0.0075 - val_mape: 630.6526 - val_mse: 1.6851e-04
Epoch 54/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.3900e-04 - mae: 0.0079 - mape: 770.8665 - mse: 1.3898e-04 - val_loss: 1.7189e-04 - val_mae: 0.0075 - val_mape: 2017.5251 - val_mse: 1.6881e-04
Epoch 55/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5370e-04 - mae: 0.0084 - mape: 378.9563 - mse: 1.5325e-04 - val_loss: 1.6907e-04 - val_mae: 0.0076 - val_mape: 863.6556 - val_mse: 1.6902e-04
Epoch 56/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5797e-04 - mae: 0.0084 - mape: 688.7165 - mse: 1.5781e-04 - val_loss: 1.7038e-04 - val_mae: 0.0077 - val_mape: 1327.8361 - val_mse: 1.7033e-04
Epoch 57/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.6853e-04 - mae: 0.0085 - mape: 256.7691 - mse: 1.6852e-04 - val_loss: 1.7312e-04 - val_mae: 0.0079 - val_mape: 1997.1790 - val_mse: 1.7285e-04
Epoch 58/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5350e-04 - mae: 0.0083 - mape: 530.9860 - mse: 1.5320e-04 - val_loss: 1.6928e-04 - val_mae: 0.0076 - val_mape: 967.3905 - val_mse: 1.6928e-04
Epoch 59/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5078e-04 - mae: 0.0082 - mape: 634.8486 - mse: 1.5078e-04 - val_loss: 1.7517e-04 - val_mae: 0.0078 - val_mape: 3736.4067 - val_mse: 1.7517e-04
Epoch 60/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5907e-04 - mae: 0.0083 - mape: 597.8876 - mse: 1.5900e-04 - val_loss: 1.6846e-04 - val_mae: 0.0074 - val_mape: 1699.6383 - val_mse: 1.6818e-04
Epoch 61/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.7335e-04 - mae: 0.0085 - mape: 383.0750 - mse: 1.7321e-04 - val_loss: 1.7020e-04 - val_mae: 0.0077 - val_mape: 1281.6382 - val_mse: 1.7018e-04
Epoch 62/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5364e-04 - mae: 0.0084 - mape: 499.3983 - mse: 1.5362e-04 - val_loss: 1.6735e-04 - val_mae: 0.0074 - val_mape: 859.0688 - val_mse: 1.6735e-04
Epoch 63/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.6029e-04 - mae: 0.0084 - mape: 254.1490 - mse: 1.6012e-04 - val_loss: 1.6842e-04 - val_mae: 0.0075 - val_mape: 567.1339 - val_mse: 1.6838e-04
Epoch 64/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 0s 558us/step - loss: 1.5379e-04 - mae: 0.0082 - mape: 325.6833 - mse: 1.5337e-04 - val_loss: 1.7223e-04 - val_mae: 0.0077 - val_mape: 3092.4758 - val_mse: 1.7220e-04
Epoch 65/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.3945e-04 - mae: 0.0082 - mape: 221.4720 - mse: 1.3906e-04 - val_loss: 1.7646e-04 - val_mae: 0.0079 - val_mape: 3979.5259 - val_mse: 1.7646e-04
Epoch 66/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5311e-04 - mae: 0.0084 - mape: 917.9724 - mse: 1.5307e-04 - val_loss: 1.6893e-04 - val_mae: 0.0076 - val_mape: 826.0347 - val_mse: 1.6893e-04
Epoch 67/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5362e-04 - mae: 0.0083 - mape: 207.8238 - mse: 1.5362e-04 - val_loss: 1.7068e-04 - val_mae: 0.0076 - val_mape: 2680.6262 - val_mse: 1.7068e-04
Epoch 68/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5028e-04 - mae: 0.0082 - mape: 184.2035 - mse: 1.5024e-04 - val_loss: 1.7041e-04 - val_mae: 0.0077 - val_mape: 1342.2955 - val_mse: 1.7038e-04
Epoch 69/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4948e-04 - mae: 0.0083 - mape: 467.5459 - mse: 1.4948e-04 - val_loss: 1.6852e-04 - val_mae: 0.0074 - val_mape: 1880.1907 - val_mse: 1.6852e-04
Epoch 70/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 1.6300e-04 - mae: 0.0084 - mape: 1545.0322 - mse: 1.6300e-04 - val_loss: 1.6997e-04 - val_mae: 0.0075 - val_mape: 2459.1536 - val_mse: 1.6997e-04
Epoch 71/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4793e-04 - mae: 0.0083 - mape: 405.7591 - mse: 1.4790e-04 - val_loss: 1.6900e-04 - val_mae: 0.0074 - val_mape: 141.7965 - val_mse: 1.6772e-04
Epoch 72/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5182e-04 - mae: 0.0083 - mape: 854.1838 - mse: 1.5150e-04 - val_loss: 1.6745e-04 - val_mae: 0.0074 - val_mape: 1071.5933 - val_mse: 1.6745e-04
Epoch 73/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5788e-04 - mae: 0.0084 - mape: 244.1680 - mse: 1.5788e-04 - val_loss: 1.6733e-04 - val_mae: 0.0074 - val_mape: 669.7925 - val_mse: 1.6733e-04
Epoch 74/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4744e-04 - mae: 0.0082 - mape: 708.5784 - mse: 1.4741e-04 - val_loss: 1.6867e-04 - val_mae: 0.0075 - val_mape: 437.5218 - val_mse: 1.6815e-04
Epoch 75/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.6453e-04 - mae: 0.0084 - mape: 477.0260 - mse: 1.6436e-04 - val_loss: 1.6840e-04 - val_mae: 0.0075 - val_mape: 501.9389 - val_mse: 1.6826e-04
Epoch 76/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5560e-04 - mae: 0.0083 - mape: 508.3058 - mse: 1.5536e-04 - val_loss: 1.6938e-04 - val_mae: 0.0075 - val_mape: 2140.8301 - val_mse: 1.6910e-04
Epoch 77/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.6112e-04 - mae: 0.0084 - mape: 322.2675 - mse: 1.6068e-04 - val_loss: 1.7070e-04 - val_mae: 0.0077 - val_mape: 1427.6310 - val_mse: 1.7066e-04
Epoch 78/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4220e-04 - mae: 0.0081 - mape: 601.7301 - mse: 1.4219e-04 - val_loss: 1.6763e-04 - val_mae: 0.0074 - val_mape: 132.1131 - val_mse: 1.6763e-04
Epoch 79/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5264e-04 - mae: 0.0083 - mape: 884.6198 - mse: 1.5264e-04 - val_loss: 1.6903e-04 - val_mae: 0.0076 - val_mape: 865.6101 - val_mse: 1.6903e-04
Epoch 80/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5215e-04 - mae: 0.0083 - mape: 196.3618 - mse: 1.5215e-04 - val_loss: 1.6746e-04 - val_mae: 0.0074 - val_mape: 870.8289 - val_mse: 1.6736e-04
Epoch 81/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.6730e-04 - mae: 0.0084 - mape: 839.4205 - mse: 1.6705e-04 - val_loss: 1.6822e-04 - val_mae: 0.0075 - val_mape: 175.6879 - val_mse: 1.6776e-04
Epoch 82/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5046e-04 - mae: 0.0084 - mape: 176.1394 - mse: 1.5031e-04 - val_loss: 1.6744e-04 - val_mae: 0.0074 - val_mape: 356.1765 - val_mse: 1.6744e-04
Epoch 83/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5721e-04 - mae: 0.0081 - mape: 492.9052 - mse: 1.5715e-04 - val_loss: 1.6897e-04 - val_mae: 0.0075 - val_mape: 2086.8164 - val_mse: 1.6897e-04
Epoch 84/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4307e-04 - mae: 0.0081 - mape: 517.8101 - mse: 1.4307e-04 - val_loss: 1.6985e-04 - val_mae: 0.0076 - val_mape: 1170.4714 - val_mse: 1.6985e-04
Epoch 85/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5801e-04 - mae: 0.0084 - mape: 216.5772 - mse: 1.5796e-04 - val_loss: 1.6813e-04 - val_mae: 0.0074 - val_mape: 1134.0330 - val_mse: 1.6749e-04
Epoch 86/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4751e-04 - mae: 0.0081 - mape: 749.1509 - mse: 1.4743e-04 - val_loss: 1.7123e-04 - val_mae: 0.0078 - val_mape: 1590.0913 - val_mse: 1.7123e-04
Epoch 87/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4404e-04 - mae: 0.0081 - mape: 519.8835 - mse: 1.4404e-04 - val_loss: 1.6736e-04 - val_mae: 0.0074 - val_mape: 519.3585 - val_mse: 1.6736e-04
Epoch 88/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4964e-04 - mae: 0.0081 - mape: 355.3494 - mse: 1.4958e-04 - val_loss: 1.6820e-04 - val_mae: 0.0074 - val_mape: 1424.3052 - val_mse: 1.6778e-04
Epoch 89/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5639e-04 - mae: 0.0085 - mape: 408.2583 - mse: 1.5576e-04 - val_loss: 1.6741e-04 - val_mae: 0.0074 - val_mape: 466.5164 - val_mse: 1.6738e-04
Epoch 90/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5414e-04 - mae: 0.0084 - mape: 292.7165 - mse: 1.5407e-04 - val_loss: 1.6796e-04 - val_mae: 0.0075 - val_mape: 313.9805 - val_mse: 1.6795e-04
Epoch 91/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.3976e-04 - mae: 0.0081 - mape: 244.0077 - mse: 1.3972e-04 - val_loss: 1.6947e-04 - val_mae: 0.0076 - val_mape: 1036.4009 - val_mse: 1.6947e-04
Epoch 92/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4327e-04 - mae: 0.0080 - mape: 515.8694 - mse: 1.4327e-04 - val_loss: 1.6977e-04 - val_mae: 0.0075 - val_mape: 2392.0225 - val_mse: 1.6977e-04
Epoch 93/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 0s 191us/step - loss: 1.5656e-04 - mae: 0.0084 - mape: 1237.9440 - mse: 1.5646e-04 - val_loss: 1.6776e-04 - val_mae: 0.0075 - val_mape: 177.6305 - val_mse: 1.6776e-04
Epoch 94/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 1.5542e-04 - mae: 0.0083 - mape: 239.2623 - mse: 1.5541e-04 - val_loss: 1.6896e-04 - val_mae: 0.0076 - val_mape: 805.8586 - val_mse: 1.6889e-04
Epoch 95/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 1.5552e-04 - mae: 0.0084 - mape: 293.0781 - mse: 1.5539e-04 - val_loss: 1.6831e-04 - val_mae: 0.0075 - val_mape: 399.6183 - val_mse: 1.6808e-04
Epoch 96/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.7388e-04 - mae: 0.0087 - mape: 474.1830 - mse: 1.7362e-04 - val_loss: 1.6760e-04 - val_mae: 0.0074 - val_mape: 223.7511 - val_mse: 1.6754e-04
Epoch 97/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4237e-04 - mae: 0.0080 - mape: 255.0982 - mse: 1.4236e-04 - val_loss: 1.6880e-04 - val_mae: 0.0074 - val_mape: 2009.4961 - val_mse: 1.6880e-04
Epoch 98/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5329e-04 - mae: 0.0084 - mape: 769.2563 - mse: 1.5325e-04 - val_loss: 1.6784e-04 - val_mae: 0.0074 - val_mape: 146.1651 - val_mse: 1.6772e-04
Epoch 99/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4061e-04 - mae: 0.0082 - mape: 329.7440 - mse: 1.4051e-04 - val_loss: 1.6740e-04 - val_mae: 0.0074 - val_mape: 489.3392 - val_mse: 1.6737e-04
Epoch 100/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4862e-04 - mae: 0.0082 - mape: 821.4764 - mse: 1.4859e-04 - val_loss: 1.6777e-04 - val_mae: 0.0075 - val_mape: 180.7999 - val_mse: 1.6777e-04

plot_performance(historyB, 'loss')
plot_performance(historyB, 'mae')
plot_performance(historyB, 'mse')
plot_performance(historyB, 'mape')
Visualization
Visualization
Visualization
Visualization
prediction4 = modelB.evaluate(x_testB, y_testB, return_dict=True)
prediction4
33/33 ━━━━━━━━━━━━━━━━━━━━ 1s 14ms/step - loss: 1.0477e-04 - mae: 0.0075 - mape: 100.9765 - mse: 1.0477e-04
{'loss': 0.00010650973854353651,
 'mae': 0.007595460396260023,
 'mape': 102.44650268554688,
 'mse': 0.00010650973854353651}
def plot_prediction_full(prediction, dataset):
    # Plot size
    plt.figure(figsize=(10, 6))

    # Plot the training data 
    dataset['Close'][:5000].plot()

    # Plot the testing data
    plt.plot(
        [x for x in range(5000, 5000+len(prediction))], 
        dataset['Close'][5000:5000+len(prediction)], 
        color = 'C0', ls='--', alpha=0.8, 
        label='Testing Data')

    # Plot the prediction
    plt.plot([x for x in range(5000, 5000+len(prediction))], prediction, label='Prediction')

    # Plotting extras
    plt.minorticks_on()
    plt.grid(which='minor', alpha=0.2)
    plt.grid(which='major', alpha=0.5)
    plt.legend()
    plt.show()
plot_prediction_full(modelB(x_testB), modelB_dataset.reset_index())
Visualization

Repeatedly tried to tweak the hyperparameters and trying different shapes for the dataset but to no result. We will now expand the model, it might be due to the increase in features used. So let's try increase the LSTM units first, then we might then try increasing the layers

initializer = keras.initializers.Zeros()

inputs = keras.Input(shape=(7,10))

x = LSTM(
    64, activation='relu', 
    kernel_regularizer=regularizers.L2(l2=0.01),
    kernel_initializer=initializer
)(inputs)

x = BatchNormalization(
        beta_regularizer=regularizers.L2(l2=0.01),
        gamma_regularizer = regularizers.L2(l2=0.01),
    )(x)

outputs = Dense(1)(x)

modelB = keras.Model(inputs = inputs, outputs = outputs, name='modelB1')
modelB.summary()

modelB.compile(
    optimizer='adam', 
    loss='mse', 
    metrics=['mae', 'mse', 'mape']
)

historyB = modelB.fit(
    x_trainB, y_trainB, 
    epochs=100, batch_size=10, 
    validation_data=(x_validB, y_validB)
)
Model: "modelB1"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ input_layer_4 (InputLayer)      │ (None, 7, 10)          │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ lstm_4 (LSTM)                   │ (None, 64)             │        19,200 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_3           │ (None, 64)             │           256 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_4 (Dense)                 │ (None, 1)              │            65 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
Total params: 19,521 (76.25 KB)
Trainable params: 19,393 (75.75 KB)
Non-trainable params: 128 (512.00 B)
Epoch 1/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - loss: 0.5273 - mae: 0.0085 - mape: 1095.6921 - mse: 1.5249e-04 - val_loss: 0.2605 - val_mae: 0.0074 - val_mape: 154.9137 - val_mse: 1.6773e-04
Epoch 2/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.2054 - mae: 0.0083 - mape: 1116.7047 - mse: 1.6423e-04 - val_loss: 0.0840 - val_mae: 0.0075 - val_mape: 715.9296 - val_mse: 1.6868e-04
Epoch 3/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 0.0626 - mae: 0.0083 - mape: 299.3831 - mse: 1.5645e-04 - val_loss: 0.0198 - val_mae: 0.0081 - val_mape: 2534.7937 - val_mse: 1.7541e-04
Epoch 4/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 0.0138 - mae: 0.0083 - mape: 455.3207 - mse: 1.4811e-04 - val_loss: 0.0032 - val_mae: 0.0074 - val_mape: 1109.8179 - val_mse: 1.6747e-04
Epoch 5/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 0.0021 - mae: 0.0083 - mape: 554.8387 - mse: 1.4927e-04 - val_loss: 4.4123e-04 - val_mae: 0.0075 - val_mape: 296.4989 - val_mse: 1.6792e-04
Epoch 6/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 3.2519e-04 - mae: 0.0085 - mape: 1903.3685 - mse: 1.6655e-04 - val_loss: 1.8041e-04 - val_mae: 0.0074 - val_mape: 885.5776 - val_mse: 1.6736e-04
Epoch 7/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6426e-04 - mae: 0.0083 - mape: 1330.0807 - mse: 1.5712e-04 - val_loss: 1.6793e-04 - val_mae: 0.0074 - val_mape: 1126.9764 - val_mse: 1.6749e-04
Epoch 8/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4257e-04 - mae: 0.0081 - mape: 1142.4272 - mse: 1.4214e-04 - val_loss: 1.7376e-04 - val_mae: 0.0077 - val_mape: 3395.9873 - val_mse: 1.7351e-04
Epoch 9/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6645e-04 - mae: 0.0086 - mape: 248.7057 - mse: 1.6616e-04 - val_loss: 1.6749e-04 - val_mae: 0.0074 - val_mape: 455.0014 - val_mse: 1.6739e-04
Epoch 10/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.3344e-04 - mae: 0.0079 - mape: 421.1165 - mse: 1.3331e-04 - val_loss: 1.6735e-04 - val_mae: 0.0074 - val_mape: 791.8253 - val_mse: 1.6734e-04
Epoch 11/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4603e-04 - mae: 0.0081 - mape: 1391.8148 - mse: 1.4578e-04 - val_loss: 1.7104e-04 - val_mae: 0.0076 - val_mape: 2682.1304 - val_mse: 1.7068e-04
Epoch 12/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4388e-04 - mae: 0.0081 - mape: 479.1431 - mse: 1.4365e-04 - val_loss: 1.6758e-04 - val_mae: 0.0074 - val_mape: 431.1257 - val_mse: 1.6740e-04
Epoch 13/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6751e-04 - mae: 0.0085 - mape: 1337.2950 - mse: 1.6709e-04 - val_loss: 1.6768e-04 - val_mae: 0.0074 - val_mape: 123.1471 - val_mse: 1.6764e-04
Epoch 14/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 1ms/step - loss: 1.4724e-04 - mae: 0.0082 - mape: 370.3178 - mse: 1.4657e-04 - val_loss: 1.6952e-04 - val_mae: 0.0075 - val_mape: 670.8708 - val_mse: 1.6859e-04
Epoch 15/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4876e-04 - mae: 0.0083 - mape: 262.9959 - mse: 1.4796e-04 - val_loss: 1.6835e-04 - val_mae: 0.0074 - val_mape: 1529.9821 - val_mse: 1.6792e-04
Epoch 16/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6190e-04 - mae: 0.0082 - mape: 687.7427 - mse: 1.6162e-04 - val_loss: 1.6743e-04 - val_mae: 0.0074 - val_mape: 375.0443 - val_mse: 1.6743e-04
Epoch 17/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5706e-04 - mae: 0.0083 - mape: 272.2286 - mse: 1.5681e-04 - val_loss: 1.6803e-04 - val_mae: 0.0074 - val_mape: 1603.5422 - val_mse: 1.6803e-04
Epoch 18/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5225e-04 - mae: 0.0083 - mape: 317.9818 - mse: 1.5183e-04 - val_loss: 1.6833e-04 - val_mae: 0.0074 - val_mape: 1578.2817 - val_mse: 1.6799e-04
Epoch 19/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.3923e-04 - mae: 0.0081 - mape: 627.3127 - mse: 1.3845e-04 - val_loss: 1.6893e-04 - val_mae: 0.0074 - val_mape: 1293.5176 - val_mse: 1.6763e-04
Epoch 20/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4857e-04 - mae: 0.0082 - mape: 966.7276 - mse: 1.4814e-04 - val_loss: 1.7187e-04 - val_mae: 0.0078 - val_mape: 1749.0121 - val_mse: 1.7183e-04
Epoch 21/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6384e-04 - mae: 0.0085 - mape: 283.2771 - mse: 1.6335e-04 - val_loss: 1.6911e-04 - val_mae: 0.0076 - val_mape: 841.2919 - val_mse: 1.6897e-04
Epoch 22/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6383e-04 - mae: 0.0083 - mape: 1899.7291 - mse: 1.6339e-04 - val_loss: 1.6753e-04 - val_mae: 0.0074 - val_mape: 741.1820 - val_mse: 1.6733e-04
Epoch 23/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5783e-04 - mae: 0.0083 - mape: 537.3064 - mse: 1.5765e-04 - val_loss: 1.6755e-04 - val_mae: 0.0074 - val_mape: 775.2994 - val_mse: 1.6734e-04
Epoch 24/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4327e-04 - mae: 0.0081 - mape: 657.2213 - mse: 1.4282e-04 - val_loss: 1.6913e-04 - val_mae: 0.0074 - val_mape: 348.0923 - val_mse: 1.6745e-04
Epoch 25/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5859e-04 - mae: 0.0082 - mape: 200.8918 - mse: 1.5766e-04 - val_loss: 1.6786e-04 - val_mae: 0.0074 - val_mape: 200.9752 - val_mse: 1.6756e-04
Epoch 26/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4485e-04 - mae: 0.0081 - mape: 357.0026 - mse: 1.4436e-04 - val_loss: 1.6764e-04 - val_mae: 0.0074 - val_mape: 143.3585 - val_mse: 1.6762e-04
Epoch 27/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4216e-04 - mae: 0.0081 - mape: 1335.9741 - mse: 1.4172e-04 - val_loss: 1.6789e-04 - val_mae: 0.0075 - val_mape: 211.7590 - val_mse: 1.6780e-04
Epoch 28/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6523e-04 - mae: 0.0085 - mape: 1742.1609 - mse: 1.6514e-04 - val_loss: 1.6777e-04 - val_mae: 0.0074 - val_mape: 955.4218 - val_mse: 1.6739e-04
Epoch 29/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5024e-04 - mae: 0.0082 - mape: 1311.2067 - mse: 1.4968e-04 - val_loss: 1.6841e-04 - val_mae: 0.0075 - val_mape: 541.0473 - val_mse: 1.6833e-04
Epoch 30/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6135e-04 - mae: 0.0085 - mape: 484.4017 - mse: 1.6083e-04 - val_loss: 1.6801e-04 - val_mae: 0.0074 - val_mape: 138.1176 - val_mse: 1.6763e-04
Epoch 31/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5016e-04 - mae: 0.0083 - mape: 2053.5796 - mse: 1.4983e-04 - val_loss: 1.7244e-04 - val_mae: 0.0077 - val_mape: 3134.8135 - val_mse: 1.7238e-04
Epoch 32/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6679e-04 - mae: 0.0084 - mape: 675.4357 - mse: 1.6598e-04 - val_loss: 1.6777e-04 - val_mae: 0.0074 - val_mape: 1358.7949 - val_mse: 1.6770e-04
Epoch 33/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5214e-04 - mae: 0.0082 - mape: 439.8442 - mse: 1.5191e-04 - val_loss: 1.6821e-04 - val_mae: 0.0074 - val_mape: 1588.2850 - val_mse: 1.6800e-04
Epoch 34/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.6141e-04 - mae: 0.0083 - mape: 480.2914 - mse: 1.6112e-04 - val_loss: 1.7074e-04 - val_mae: 0.0075 - val_mape: 524.7244 - val_mse: 1.6830e-04
Epoch 35/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 0s 1ms/step - loss: 1.5017e-04 - mae: 0.0083 - mape: 584.4702 - mse: 1.4816e-04 - val_loss: 1.6736e-04 - val_mae: 0.0074 - val_mape: 522.0172 - val_mse: 1.6736e-04
Epoch 36/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5818e-04 - mae: 0.0084 - mape: 374.9850 - mse: 1.5807e-04 - val_loss: 1.6736e-04 - val_mae: 0.0074 - val_mape: 716.0514 - val_mse: 1.6733e-04
Epoch 37/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5084e-04 - mae: 0.0082 - mape: 636.6069 - mse: 1.5034e-04 - val_loss: 1.6785e-04 - val_mae: 0.0074 - val_mape: 246.9797 - val_mse: 1.6752e-04
Epoch 38/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5133e-04 - mae: 0.0083 - mape: 194.3705 - mse: 1.5101e-04 - val_loss: 1.6917e-04 - val_mae: 0.0076 - val_mape: 864.9537 - val_mse: 1.6903e-04
Epoch 39/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6149e-04 - mae: 0.0084 - mape: 209.7016 - mse: 1.6115e-04 - val_loss: 1.7442e-04 - val_mae: 0.0075 - val_mape: 728.3245 - val_mse: 1.6871e-04
Epoch 40/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5689e-04 - mae: 0.0085 - mape: 263.4409 - mse: 1.5581e-04 - val_loss: 1.6760e-04 - val_mae: 0.0074 - val_mape: 633.0719 - val_mse: 1.6734e-04
Epoch 41/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5717e-04 - mae: 0.0084 - mape: 374.5740 - mse: 1.5684e-04 - val_loss: 1.7040e-04 - val_mae: 0.0077 - val_mape: 1250.9301 - val_mse: 1.7009e-04
Epoch 42/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5473e-04 - mae: 0.0082 - mape: 406.9074 - mse: 1.5435e-04 - val_loss: 1.6838e-04 - val_mae: 0.0075 - val_mape: 471.0894 - val_mse: 1.6820e-04
Epoch 43/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5494e-04 - mae: 0.0083 - mape: 454.3044 - mse: 1.5416e-04 - val_loss: 1.8111e-04 - val_mae: 0.0078 - val_mape: 3726.0801 - val_mse: 1.7511e-04
Epoch 44/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4513e-04 - mae: 0.0083 - mape: 881.3458 - mse: 1.4420e-04 - val_loss: 1.7079e-04 - val_mae: 0.0076 - val_mape: 2659.4290 - val_mse: 1.7060e-04
Epoch 45/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5738e-04 - mae: 0.0084 - mape: 395.9643 - mse: 1.5670e-04 - val_loss: 1.6974e-04 - val_mae: 0.0075 - val_mape: 2283.1711 - val_mse: 1.6947e-04
Epoch 46/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5789e-04 - mae: 0.0084 - mape: 240.6062 - mse: 1.5724e-04 - val_loss: 1.7034e-04 - val_mae: 0.0076 - val_mape: 1077.5013 - val_mse: 1.6958e-04
Epoch 47/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5044e-04 - mae: 0.0081 - mape: 390.3184 - mse: 1.5032e-04 - val_loss: 1.6802e-04 - val_mae: 0.0075 - val_mape: 277.7978 - val_mse: 1.6790e-04
Epoch 48/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4504e-04 - mae: 0.0082 - mape: 486.5377 - mse: 1.4476e-04 - val_loss: 1.6933e-04 - val_mae: 0.0075 - val_mape: 707.7748 - val_mse: 1.6867e-04
Epoch 49/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5060e-04 - mae: 0.0083 - mape: 400.7805 - mse: 1.4979e-04 - val_loss: 1.7240e-04 - val_mae: 0.0076 - val_mape: 1106.8070 - val_mse: 1.6966e-04
Epoch 50/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5927e-04 - mae: 0.0083 - mape: 1130.3674 - mse: 1.5844e-04 - val_loss: 1.6881e-04 - val_mae: 0.0074 - val_mape: 1857.1447 - val_mse: 1.6848e-04
Epoch 51/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4968e-04 - mae: 0.0082 - mape: 1500.1842 - mse: 1.4927e-04 - val_loss: 1.7024e-04 - val_mae: 0.0077 - val_mape: 1295.7100 - val_mse: 1.7023e-04
Epoch 52/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5686e-04 - mae: 0.0084 - mape: 396.5250 - mse: 1.5652e-04 - val_loss: 1.6828e-04 - val_mae: 0.0074 - val_mape: 1693.4436 - val_mse: 1.6817e-04
Epoch 53/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4398e-04 - mae: 0.0082 - mape: 427.7528 - mse: 1.4369e-04 - val_loss: 1.6789e-04 - val_mae: 0.0074 - val_mape: 158.9578 - val_mse: 1.6774e-04
Epoch 54/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4171e-04 - mae: 0.0080 - mape: 763.1738 - mse: 1.4133e-04 - val_loss: 1.7285e-04 - val_mae: 0.0079 - val_mape: 1965.3979 - val_mse: 1.7271e-04
Epoch 55/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6105e-04 - mae: 0.0085 - mape: 1047.6832 - mse: 1.6031e-04 - val_loss: 1.7149e-04 - val_mae: 0.0074 - val_mape: 1828.3629 - val_mse: 1.6842e-04
Epoch 56/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6663e-04 - mae: 0.0085 - mape: 352.9021 - mse: 1.6573e-04 - val_loss: 1.6869e-04 - val_mae: 0.0074 - val_mape: 1552.3612 - val_mse: 1.6795e-04
Epoch 57/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5567e-04 - mae: 0.0083 - mape: 1020.5636 - mse: 1.5464e-04 - val_loss: 1.6776e-04 - val_mae: 0.0074 - val_mape: 1327.4847 - val_mse: 1.6767e-04
Epoch 58/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 1ms/step - loss: 1.5853e-04 - mae: 0.0083 - mape: 293.0578 - mse: 1.5846e-04 - val_loss: 1.6836e-04 - val_mae: 0.0074 - val_mape: 1777.8605 - val_mse: 1.6832e-04
Epoch 59/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5469e-04 - mae: 0.0083 - mape: 1967.4076 - mse: 1.5461e-04 - val_loss: 1.7457e-04 - val_mae: 0.0080 - val_mape: 2337.4578 - val_mse: 1.7442e-04
Epoch 60/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5985e-04 - mae: 0.0083 - mape: 358.5941 - mse: 1.5973e-04 - val_loss: 1.7545e-04 - val_mae: 0.0081 - val_mape: 2542.2583 - val_mse: 1.7545e-04
Epoch 61/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5959e-04 - mae: 0.0082 - mape: 489.1775 - mse: 1.5938e-04 - val_loss: 1.6736e-04 - val_mae: 0.0074 - val_mape: 610.5254 - val_mse: 1.6734e-04
Epoch 62/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4819e-04 - mae: 0.0082 - mape: 374.1710 - mse: 1.4799e-04 - val_loss: 1.7257e-04 - val_mae: 0.0079 - val_mape: 1885.9510 - val_mse: 1.7238e-04
Epoch 63/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6102e-04 - mae: 0.0085 - mape: 281.8735 - mse: 1.6056e-04 - val_loss: 1.6802e-04 - val_mae: 0.0074 - val_mape: 1088.8358 - val_mse: 1.6746e-04
Epoch 64/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6098e-04 - mae: 0.0084 - mape: 803.7587 - mse: 1.5996e-04 - val_loss: 1.6959e-04 - val_mae: 0.0074 - val_mape: 1601.4905 - val_mse: 1.6803e-04
Epoch 65/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5511e-04 - mae: 0.0085 - mape: 391.0490 - mse: 1.5422e-04 - val_loss: 1.6962e-04 - val_mae: 0.0074 - val_mape: 1705.5771 - val_mse: 1.6819e-04
Epoch 66/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4314e-04 - mae: 0.0081 - mape: 1642.0439 - mse: 1.4265e-04 - val_loss: 1.6740e-04 - val_mae: 0.0074 - val_mape: 559.4712 - val_mse: 1.6735e-04
Epoch 67/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5658e-04 - mae: 0.0083 - mape: 473.5864 - mse: 1.5578e-04 - val_loss: 1.6811e-04 - val_mae: 0.0074 - val_mape: 1589.4724 - val_mse: 1.6801e-04
Epoch 68/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5080e-04 - mae: 0.0083 - mape: 843.3184 - mse: 1.5024e-04 - val_loss: 1.6838e-04 - val_mae: 0.0075 - val_mape: 488.5960 - val_mse: 1.6823e-04
Epoch 69/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4482e-04 - mae: 0.0081 - mape: 391.6717 - mse: 1.4468e-04 - val_loss: 1.6766e-04 - val_mae: 0.0074 - val_mape: 286.3134 - val_mse: 1.6749e-04
Epoch 70/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6421e-04 - mae: 0.0083 - mape: 259.6509 - mse: 1.6417e-04 - val_loss: 1.6763e-04 - val_mae: 0.0074 - val_mape: 1020.8554 - val_mse: 1.6742e-04
Epoch 71/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5322e-04 - mae: 0.0082 - mape: 225.8984 - mse: 1.5219e-04 - val_loss: 1.7072e-04 - val_mae: 0.0077 - val_mape: 1440.0248 - val_mse: 1.7070e-04
Epoch 72/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4673e-04 - mae: 0.0081 - mape: 661.6118 - mse: 1.4663e-04 - val_loss: 1.6954e-04 - val_mae: 0.0074 - val_mape: 1898.6401 - val_mse: 1.6856e-04
Epoch 73/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.4853e-04 - mae: 0.0083 - mape: 586.7962 - mse: 1.4801e-04 - val_loss: 1.6809e-04 - val_mae: 0.0074 - val_mape: 1617.8689 - val_mse: 1.6805e-04
Epoch 74/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4975e-04 - mae: 0.0083 - mape: 2121.5364 - mse: 1.4932e-04 - val_loss: 1.6907e-04 - val_mae: 0.0075 - val_mape: 436.5898 - val_mse: 1.6814e-04
Epoch 75/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4241e-04 - mae: 0.0080 - mape: 969.2239 - mse: 1.4186e-04 - val_loss: 1.7085e-04 - val_mae: 0.0076 - val_mape: 2699.5554 - val_mse: 1.7074e-04
Epoch 76/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5004e-04 - mae: 0.0081 - mape: 798.8622 - mse: 1.4957e-04 - val_loss: 1.6767e-04 - val_mae: 0.0074 - val_mape: 205.3654 - val_mse: 1.6756e-04
Epoch 77/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5579e-04 - mae: 0.0084 - mape: 593.2053 - mse: 1.5553e-04 - val_loss: 1.6837e-04 - val_mae: 0.0074 - val_mape: 1799.6105 - val_mse: 1.6836e-04
Epoch 78/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5412e-04 - mae: 0.0082 - mape: 611.8489 - mse: 1.5380e-04 - val_loss: 1.6764e-04 - val_mae: 0.0074 - val_mape: 1016.0410 - val_mse: 1.6742e-04
Epoch 79/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4950e-04 - mae: 0.0083 - mape: 1078.9365 - mse: 1.4904e-04 - val_loss: 1.7467e-04 - val_mae: 0.0078 - val_mape: 3503.1108 - val_mse: 1.7401e-04
Epoch 80/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 1ms/step - loss: 1.5299e-04 - mae: 0.0083 - mape: 926.4435 - mse: 1.5146e-04 - val_loss: 1.6747e-04 - val_mae: 0.0074 - val_mape: 608.4488 - val_mse: 1.6734e-04
Epoch 81/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.3805e-04 - mae: 0.0080 - mape: 212.0439 - mse: 1.3777e-04 - val_loss: 1.7354e-04 - val_mae: 0.0079 - val_mape: 2051.8218 - val_mse: 1.7309e-04
Epoch 82/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5173e-04 - mae: 0.0082 - mape: 322.8477 - mse: 1.5091e-04 - val_loss: 1.6777e-04 - val_mae: 0.0074 - val_mape: 1296.5936 - val_mse: 1.6763e-04
Epoch 83/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5337e-04 - mae: 0.0082 - mape: 766.9645 - mse: 1.5283e-04 - val_loss: 1.6795e-04 - val_mae: 0.0075 - val_mape: 245.5139 - val_mse: 1.6785e-04
Epoch 84/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - loss: 1.5170e-04 - mae: 0.0083 - mape: 554.6754 - mse: 1.5143e-04 - val_loss: 1.7036e-04 - val_mae: 0.0077 - val_mape: 1303.1180 - val_mse: 1.7025e-04
Epoch 85/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5703e-04 - mae: 0.0082 - mape: 512.0383 - mse: 1.5643e-04 - val_loss: 1.6795e-04 - val_mae: 0.0074 - val_mape: 1491.0483 - val_mse: 1.6787e-04
Epoch 86/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4627e-04 - mae: 0.0081 - mape: 1743.3778 - mse: 1.4582e-04 - val_loss: 1.7235e-04 - val_mae: 0.0076 - val_mape: 2799.1816 - val_mse: 1.7109e-04
Epoch 87/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5914e-04 - mae: 0.0085 - mape: 396.1392 - mse: 1.5789e-04 - val_loss: 1.6922e-04 - val_mae: 0.0074 - val_mape: 1821.7594 - val_mse: 1.6841e-04
Epoch 88/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4164e-04 - mae: 0.0081 - mape: 496.6638 - mse: 1.4089e-04 - val_loss: 1.6834e-04 - val_mae: 0.0075 - val_mape: 406.5995 - val_mse: 1.6809e-04
Epoch 89/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.3861e-04 - mae: 0.0079 - mape: 436.7338 - mse: 1.3822e-04 - val_loss: 1.7025e-04 - val_mae: 0.0075 - val_mape: 2548.9817 - val_mse: 1.7025e-04
Epoch 90/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4411e-04 - mae: 0.0082 - mape: 417.5988 - mse: 1.4403e-04 - val_loss: 1.6841e-04 - val_mae: 0.0075 - val_mape: 279.6204 - val_mse: 1.6790e-04
Epoch 91/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5384e-04 - mae: 0.0082 - mape: 255.9510 - mse: 1.5336e-04 - val_loss: 1.6811e-04 - val_mae: 0.0074 - val_mape: 1349.0677 - val_mse: 1.6769e-04
Epoch 92/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5663e-04 - mae: 0.0084 - mape: 447.3636 - mse: 1.5636e-04 - val_loss: 1.6801e-04 - val_mae: 0.0074 - val_mape: 122.6105 - val_mse: 1.6764e-04
Epoch 93/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5573e-04 - mae: 0.0083 - mape: 611.0638 - mse: 1.5557e-04 - val_loss: 1.6897e-04 - val_mae: 0.0074 - val_mape: 1256.8635 - val_mse: 1.6759e-04
Epoch 94/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4450e-04 - mae: 0.0080 - mape: 962.3386 - mse: 1.4391e-04 - val_loss: 1.7487e-04 - val_mae: 0.0081 - val_mape: 2416.0066 - val_mse: 1.7480e-04
Epoch 95/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5134e-04 - mae: 0.0084 - mape: 926.6669 - mse: 1.5090e-04 - val_loss: 1.6789e-04 - val_mae: 0.0075 - val_mape: 226.6297 - val_mse: 1.6782e-04
Epoch 96/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4770e-04 - mae: 0.0082 - mape: 1005.5085 - mse: 1.4683e-04 - val_loss: 1.7004e-04 - val_mae: 0.0076 - val_mape: 1141.9614 - val_mse: 1.6976e-04
Epoch 97/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6079e-04 - mae: 0.0084 - mape: 254.9673 - mse: 1.6066e-04 - val_loss: 1.6893e-04 - val_mae: 0.0075 - val_mape: 748.7555 - val_mse: 1.6876e-04
Epoch 98/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4819e-04 - mae: 0.0081 - mape: 175.3686 - mse: 1.4802e-04 - val_loss: 1.6814e-04 - val_mae: 0.0074 - val_mape: 393.0148 - val_mse: 1.6742e-04
Epoch 99/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5064e-04 - mae: 0.0082 - mape: 372.8463 - mse: 1.4996e-04 - val_loss: 1.7054e-04 - val_mae: 0.0077 - val_mape: 1241.6615 - val_mse: 1.7006e-04
Epoch 100/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5710e-04 - mae: 0.0083 - mape: 238.9274 - mse: 1.5676e-04 - val_loss: 1.6739e-04 - val_mae: 0.0074 - val_mape: 638.0479 - val_mse: 1.6734e-04

plot_performance(historyB, 'loss')
plot_performance(historyB, 'mae')
plot_performance(historyB, 'mse')
plot_performance(historyB, 'mape')
Visualization
Visualization
Visualization
Visualization
plot_prediction_full(modelB(x_testB), modelB_dataset.reset_index())
Visualization
modelB(x_testB)
<tf.Tensor: shape=(1028, 1), dtype=float32, numpy=
array([[0.00051354],
       [0.00051354],
       [0.00051354],
       ...,
       [0.00051354],
       [0.00051354],
       [0.00051354]], dtype=float32)>
initializer = keras.initializers.Zeros()

inputs = keras.Input(shape=(7,10))

x = LSTM(
    10, activation='relu', 
    kernel_regularizer=regularizers.L2(l2=0.01),
    kernel_initializer=initializer,
    return_sequences=True
)(inputs)

x = BatchNormalization(
        beta_regularizer=regularizers.L2(l2=0.01),
        gamma_regularizer = regularizers.L2(l2=0.01),
    )(x)

x = LSTM(
    10, activation='relu', 
    kernel_regularizer=regularizers.L2(l2=0.01),
    kernel_initializer=initializer
)(x)

x = BatchNormalization(
        beta_regularizer=regularizers.L2(l2=0.01),
        gamma_regularizer = regularizers.L2(l2=0.01),
    )(x)

outputs = Dense(1)(x)

modelB = keras.Model(inputs = inputs, outputs = outputs, name='modelB1')
modelB.summary()

modelB.compile(
    optimizer='adam', 
    loss='mse', 
    metrics=['mae', 'mse', 'mape']
)

historyB = modelB.fit(
    x_trainB, y_trainB, 
    epochs=100, batch_size=10, 
    validation_data=(x_validB, y_validB)
)
Model: "modelB1"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ input_layer_5 (InputLayer)      │ (None, 7, 10)          │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ lstm_5 (LSTM)                   │ (None, 7, 10)          │           840 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_4           │ (None, 7, 10)          │            40 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ lstm_6 (LSTM)                   │ (None, 10)             │           840 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_5           │ (None, 10)             │            40 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_5 (Dense)                 │ (None, 1)              │            11 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
Total params: 1,771 (6.92 KB)
Trainable params: 1,731 (6.76 KB)
Non-trainable params: 40 (160.00 B)
Epoch 1/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - loss: 0.1649 - mae: 0.0089 - mape: 6753.6934 - mse: 1.6930e-04 - val_loss: 0.0815 - val_mae: 0.0080 - val_mape: 2316.0347 - val_mse: 1.7431e-04
Epoch 2/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 0.0643 - mae: 0.0084 - mape: 1259.6705 - mse: 1.5439e-04 - val_loss: 0.0264 - val_mae: 0.0086 - val_mape: 3543.5022 - val_mse: 1.8152e-04
Epoch 3/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 0.0197 - mae: 0.0083 - mape: 596.3325 - mse: 1.6590e-04 - val_loss: 0.0063 - val_mae: 0.0074 - val_mape: 1069.2424 - val_mse: 1.6745e-04
Epoch 4/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 0.0044 - mae: 0.0081 - mape: 529.0490 - mse: 1.4683e-04 - val_loss: 0.0011 - val_mae: 0.0074 - val_mape: 1492.9247 - val_mse: 1.6787e-04
Epoch 5/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 7.5242e-04 - mae: 0.0083 - mape: 1032.2075 - mse: 1.5182e-04 - val_loss: 2.5545e-04 - val_mae: 0.0075 - val_mape: 2475.3252 - val_mse: 1.7002e-04
Epoch 6/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 2.1203e-04 - mae: 0.0085 - mape: 229.1947 - mse: 1.6241e-04 - val_loss: 1.7846e-04 - val_mae: 0.0080 - val_mape: 2334.7717 - val_mse: 1.7440e-04
Epoch 7/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5635e-04 - mae: 0.0083 - mape: 275.2703 - mse: 1.5422e-04 - val_loss: 1.6853e-04 - val_mae: 0.0075 - val_mape: 600.6640 - val_mse: 1.6845e-04
Epoch 8/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5143e-04 - mae: 0.0083 - mape: 610.7018 - mse: 1.5139e-04 - val_loss: 1.6734e-04 - val_mae: 0.0074 - val_mape: 808.1992 - val_mse: 1.6734e-04
Epoch 9/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6315e-04 - mae: 0.0084 - mape: 461.0813 - mse: 1.6315e-04 - val_loss: 1.6836e-04 - val_mae: 0.0074 - val_mape: 1794.8169 - val_mse: 1.6836e-04
Epoch 10/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5648e-04 - mae: 0.0084 - mape: 390.3716 - mse: 1.5646e-04 - val_loss: 1.6746e-04 - val_mae: 0.0074 - val_mape: 338.4779 - val_mse: 1.6745e-04
Epoch 11/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5482e-04 - mae: 0.0084 - mape: 670.0573 - mse: 1.5481e-04 - val_loss: 1.7602e-04 - val_mae: 0.0082 - val_mape: 2649.1650 - val_mse: 1.7602e-04
Epoch 12/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5764e-04 - mae: 0.0083 - mape: 2216.9648 - mse: 1.5760e-04 - val_loss: 1.7193e-04 - val_mae: 0.0078 - val_mape: 1774.6503 - val_mse: 1.7193e-04
Epoch 13/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4490e-04 - mae: 0.0083 - mape: 495.7166 - mse: 1.4489e-04 - val_loss: 1.6746e-04 - val_mae: 0.0074 - val_mape: 1089.5507 - val_mse: 1.6746e-04
Epoch 14/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4482e-04 - mae: 0.0082 - mape: 303.7962 - mse: 1.4480e-04 - val_loss: 1.6770e-04 - val_mae: 0.0074 - val_mape: 130.0963 - val_mse: 1.6770e-04
Epoch 15/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6128e-04 - mae: 0.0083 - mape: 338.5416 - mse: 1.6127e-04 - val_loss: 1.6898e-04 - val_mae: 0.0075 - val_mape: 758.1721 - val_mse: 1.6878e-04
Epoch 16/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4317e-04 - mae: 0.0081 - mape: 571.1022 - mse: 1.4308e-04 - val_loss: 1.6734e-04 - val_mae: 0.0074 - val_mape: 749.9239 - val_mse: 1.6733e-04
Epoch 17/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4095e-04 - mae: 0.0081 - mape: 939.6976 - mse: 1.4094e-04 - val_loss: 1.6753e-04 - val_mae: 0.0074 - val_mape: 286.1243 - val_mse: 1.6749e-04
Epoch 18/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5096e-04 - mae: 0.0083 - mape: 1112.7869 - mse: 1.5085e-04 - val_loss: 1.6829e-04 - val_mae: 0.0074 - val_mape: 1708.3905 - val_mse: 1.6820e-04
Epoch 19/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6043e-04 - mae: 0.0084 - mape: 1053.9730 - mse: 1.6039e-04 - val_loss: 1.7672e-04 - val_mae: 0.0082 - val_mape: 2776.2893 - val_mse: 1.7672e-04
Epoch 20/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 1.5461e-04 - mae: 0.0083 - mape: 877.2288 - mse: 1.5457e-04 - val_loss: 1.7083e-04 - val_mae: 0.0077 - val_mape: 1455.4539 - val_mse: 1.7075e-04
Epoch 21/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6679e-04 - mae: 0.0085 - mape: 3288.3337 - mse: 1.6645e-04 - val_loss: 1.6770e-04 - val_mae: 0.0074 - val_mape: 211.6368 - val_mse: 1.6755e-04
Epoch 22/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5166e-04 - mae: 0.0084 - mape: 286.3152 - mse: 1.5150e-04 - val_loss: 1.6757e-04 - val_mae: 0.0074 - val_mape: 189.4718 - val_mse: 1.6757e-04
Epoch 23/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4871e-04 - mae: 0.0083 - mape: 179.2416 - mse: 1.4871e-04 - val_loss: 1.7923e-04 - val_mae: 0.0084 - val_mape: 3196.7222 - val_mse: 1.7923e-04
Epoch 24/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6119e-04 - mae: 0.0086 - mape: 268.9863 - mse: 1.6119e-04 - val_loss: 1.6819e-04 - val_mae: 0.0075 - val_mape: 464.7484 - val_mse: 1.6819e-04
Epoch 25/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5142e-04 - mae: 0.0082 - mape: 421.9820 - mse: 1.5141e-04 - val_loss: 1.7003e-04 - val_mae: 0.0075 - val_mape: 2464.5684 - val_mse: 1.6999e-04
Epoch 26/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6349e-04 - mae: 0.0084 - mape: 201.7578 - mse: 1.6331e-04 - val_loss: 1.7575e-04 - val_mae: 0.0081 - val_mape: 2598.5698 - val_mse: 1.7575e-04
Epoch 27/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5503e-04 - mae: 0.0083 - mape: 1051.4819 - mse: 1.5502e-04 - val_loss: 1.6817e-04 - val_mae: 0.0075 - val_mape: 450.4028 - val_mse: 1.6817e-04
Epoch 28/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5708e-04 - mae: 0.0084 - mape: 758.3726 - mse: 1.5707e-04 - val_loss: 1.6736e-04 - val_mae: 0.0074 - val_mape: 541.5972 - val_mse: 1.6736e-04
Epoch 29/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5581e-04 - mae: 0.0083 - mape: 392.0902 - mse: 1.5546e-04 - val_loss: 1.6847e-04 - val_mae: 0.0074 - val_mape: 1017.9309 - val_mse: 1.6742e-04
Epoch 30/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4072e-04 - mae: 0.0081 - mape: 357.9522 - mse: 1.4051e-04 - val_loss: 1.6785e-04 - val_mae: 0.0074 - val_mape: 1400.8416 - val_mse: 1.6775e-04
Epoch 31/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5938e-04 - mae: 0.0084 - mape: 304.8512 - mse: 1.5903e-04 - val_loss: 1.7234e-04 - val_mae: 0.0079 - val_mape: 1874.0924 - val_mse: 1.7233e-04
Epoch 32/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5393e-04 - mae: 0.0084 - mape: 532.7542 - mse: 1.5387e-04 - val_loss: 1.6838e-04 - val_mae: 0.0075 - val_mape: 566.7614 - val_mse: 1.6838e-04
Epoch 33/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5567e-04 - mae: 0.0084 - mape: 1059.9385 - mse: 1.5559e-04 - val_loss: 1.6896e-04 - val_mae: 0.0076 - val_mape: 830.8990 - val_mse: 1.6895e-04
Epoch 34/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5670e-04 - mae: 0.0084 - mape: 194.7145 - mse: 1.5669e-04 - val_loss: 1.9211e-04 - val_mae: 0.0092 - val_mape: 4852.5610 - val_mse: 1.9197e-04
Epoch 35/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5933e-04 - mae: 0.0085 - mape: 1662.3798 - mse: 1.5834e-04 - val_loss: 1.7448e-04 - val_mae: 0.0078 - val_mape: 3594.4998 - val_mse: 1.7445e-04
Epoch 36/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6458e-04 - mae: 0.0083 - mape: 296.9434 - mse: 1.6451e-04 - val_loss: 1.8256e-04 - val_mae: 0.0085 - val_mape: 3327.1611 - val_mse: 1.8007e-04
Epoch 37/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5538e-04 - mae: 0.0083 - mape: 1899.9081 - mse: 1.5474e-04 - val_loss: 1.7195e-04 - val_mae: 0.0076 - val_mape: 3024.6597 - val_mse: 1.7193e-04
Epoch 38/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5112e-04 - mae: 0.0083 - mape: 702.6380 - mse: 1.5110e-04 - val_loss: 1.6881e-04 - val_mae: 0.0074 - val_mape: 1989.4741 - val_mse: 1.6875e-04
Epoch 39/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4678e-04 - mae: 0.0082 - mape: 278.3533 - mse: 1.4671e-04 - val_loss: 1.6824e-04 - val_mae: 0.0075 - val_mape: 428.9636 - val_mse: 1.6813e-04
Epoch 40/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4683e-04 - mae: 0.0082 - mape: 280.5713 - mse: 1.4674e-04 - val_loss: 1.6795e-04 - val_mae: 0.0074 - val_mape: 1330.5001 - val_mse: 1.6767e-04
Epoch 41/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 1.6211e-04 - mae: 0.0084 - mape: 426.8486 - mse: 1.6207e-04 - val_loss: 1.6982e-04 - val_mae: 0.0076 - val_mape: 1160.7161 - val_mse: 1.6982e-04
Epoch 42/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5927e-04 - mae: 0.0083 - mape: 1389.6439 - mse: 1.5926e-04 - val_loss: 1.6955e-04 - val_mae: 0.0076 - val_mape: 1066.3674 - val_mse: 1.6955e-04
Epoch 43/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4463e-04 - mae: 0.0082 - mape: 548.0609 - mse: 1.4418e-04 - val_loss: 1.6734e-04 - val_mae: 0.0074 - val_mape: 608.8656 - val_mse: 1.6734e-04
Epoch 44/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4886e-04 - mae: 0.0083 - mape: 331.9366 - mse: 1.4884e-04 - val_loss: 1.6786e-04 - val_mae: 0.0074 - val_mape: 1486.5852 - val_mse: 1.6786e-04
Epoch 45/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5130e-04 - mae: 0.0083 - mape: 237.3435 - mse: 1.5130e-04 - val_loss: 1.7027e-04 - val_mae: 0.0077 - val_mape: 1300.6815 - val_mse: 1.7024e-04
Epoch 46/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6792e-04 - mae: 0.0087 - mape: 220.1174 - mse: 1.6741e-04 - val_loss: 1.7046e-04 - val_mae: 0.0075 - val_mape: 2568.2827 - val_mse: 1.7031e-04
Epoch 47/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5368e-04 - mae: 0.0082 - mape: 533.4317 - mse: 1.5357e-04 - val_loss: 1.6748e-04 - val_mae: 0.0074 - val_mape: 1100.8431 - val_mse: 1.6747e-04
Epoch 48/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5572e-04 - mae: 0.0083 - mape: 1026.8671 - mse: 1.5562e-04 - val_loss: 1.7197e-04 - val_mae: 0.0076 - val_mape: 3030.1567 - val_mse: 1.7195e-04
Epoch 49/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5799e-04 - mae: 0.0085 - mape: 935.9822 - mse: 1.5799e-04 - val_loss: 1.6735e-04 - val_mae: 0.0074 - val_mape: 848.5936 - val_mse: 1.6735e-04
Epoch 50/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5447e-04 - mae: 0.0084 - mape: 1106.0537 - mse: 1.5429e-04 - val_loss: 1.6817e-04 - val_mae: 0.0075 - val_mape: 181.6348 - val_mse: 1.6777e-04
Epoch 51/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5772e-04 - mae: 0.0083 - mape: 953.1685 - mse: 1.5731e-04 - val_loss: 1.6821e-04 - val_mae: 0.0074 - val_mape: 1712.0265 - val_mse: 1.6821e-04
Epoch 52/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5292e-04 - mae: 0.0085 - mape: 2187.7720 - mse: 1.5292e-04 - val_loss: 1.7392e-04 - val_mae: 0.0078 - val_mape: 3482.4031 - val_mse: 1.7391e-04
Epoch 53/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5425e-04 - mae: 0.0084 - mape: 357.0208 - mse: 1.5401e-04 - val_loss: 1.6797e-04 - val_mae: 0.0074 - val_mape: 1507.6964 - val_mse: 1.6789e-04
Epoch 54/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4965e-04 - mae: 0.0084 - mape: 544.9321 - mse: 1.4963e-04 - val_loss: 1.6748e-04 - val_mae: 0.0074 - val_mape: 1123.8804 - val_mse: 1.6748e-04
Epoch 55/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4681e-04 - mae: 0.0081 - mape: 707.6701 - mse: 1.4678e-04 - val_loss: 1.6903e-04 - val_mae: 0.0074 - val_mape: 186.1485 - val_mse: 1.6758e-04
Epoch 56/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5195e-04 - mae: 0.0082 - mape: 1554.4320 - mse: 1.5144e-04 - val_loss: 1.6827e-04 - val_mae: 0.0075 - val_mape: 503.4150 - val_mse: 1.6826e-04
Epoch 57/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4933e-04 - mae: 0.0082 - mape: 858.2394 - mse: 1.4926e-04 - val_loss: 1.6734e-04 - val_mae: 0.0074 - val_mape: 641.2090 - val_mse: 1.6734e-04
Epoch 58/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4917e-04 - mae: 0.0082 - mape: 238.1455 - mse: 1.4916e-04 - val_loss: 1.7062e-04 - val_mae: 0.0076 - val_mape: 2664.3455 - val_mse: 1.7062e-04
Epoch 59/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4805e-04 - mae: 0.0083 - mape: 437.3509 - mse: 1.4804e-04 - val_loss: 1.6756e-04 - val_mae: 0.0074 - val_mape: 216.4240 - val_mse: 1.6755e-04
Epoch 60/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.7773e-04 - mae: 0.0087 - mape: 1424.9106 - mse: 1.7753e-04 - val_loss: 1.6735e-04 - val_mae: 0.0074 - val_mape: 588.5378 - val_mse: 1.6735e-04
Epoch 61/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5345e-04 - mae: 0.0083 - mape: 737.0387 - mse: 1.5337e-04 - val_loss: 1.7217e-04 - val_mae: 0.0078 - val_mape: 1823.3933 - val_mse: 1.7212e-04
Epoch 62/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 1.4799e-04 - mae: 0.0081 - mape: 979.6303 - mse: 1.4779e-04 - val_loss: 1.6751e-04 - val_mae: 0.0074 - val_mape: 420.2658 - val_mse: 1.6741e-04
Epoch 63/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6729e-04 - mae: 0.0085 - mape: 341.7199 - mse: 1.6722e-04 - val_loss: 1.6759e-04 - val_mae: 0.0074 - val_mape: 1250.4672 - val_mse: 1.6759e-04
Epoch 64/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5564e-04 - mae: 0.0084 - mape: 368.4086 - mse: 1.5562e-04 - val_loss: 1.6815e-04 - val_mae: 0.0074 - val_mape: 1678.3229 - val_mse: 1.6815e-04
Epoch 65/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4922e-04 - mae: 0.0083 - mape: 463.8258 - mse: 1.4917e-04 - val_loss: 1.6737e-04 - val_mae: 0.0074 - val_mape: 493.3671 - val_mse: 1.6737e-04
Epoch 66/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6079e-04 - mae: 0.0084 - mape: 811.1757 - mse: 1.6078e-04 - val_loss: 1.6748e-04 - val_mae: 0.0074 - val_mape: 331.7610 - val_mse: 1.6746e-04
Epoch 67/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5473e-04 - mae: 0.0083 - mape: 818.7596 - mse: 1.5457e-04 - val_loss: 1.6883e-04 - val_mae: 0.0074 - val_mape: 2008.1416 - val_mse: 1.6879e-04
Epoch 68/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5139e-04 - mae: 0.0083 - mape: 592.1815 - mse: 1.5132e-04 - val_loss: 1.6840e-04 - val_mae: 0.0075 - val_mape: 560.3782 - val_mse: 1.6837e-04
Epoch 69/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5827e-04 - mae: 0.0083 - mape: 595.7472 - mse: 1.5783e-04 - val_loss: 1.6852e-04 - val_mae: 0.0075 - val_mape: 555.5844 - val_mse: 1.6836e-04
Epoch 70/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5162e-04 - mae: 0.0083 - mape: 257.1565 - mse: 1.5155e-04 - val_loss: 1.6734e-04 - val_mae: 0.0074 - val_mape: 814.9035 - val_mse: 1.6734e-04
Epoch 71/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6931e-04 - mae: 0.0086 - mape: 326.9851 - mse: 1.6931e-04 - val_loss: 1.6768e-04 - val_mae: 0.0074 - val_mape: 114.4097 - val_mse: 1.6768e-04
Epoch 72/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5318e-04 - mae: 0.0083 - mape: 384.9451 - mse: 1.5316e-04 - val_loss: 1.7135e-04 - val_mae: 0.0078 - val_mape: 1614.3855 - val_mse: 1.7132e-04
Epoch 73/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5168e-04 - mae: 0.0083 - mape: 1626.6840 - mse: 1.5163e-04 - val_loss: 1.6760e-04 - val_mae: 0.0074 - val_mape: 1209.2286 - val_mse: 1.6755e-04
Epoch 74/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.3677e-04 - mae: 0.0079 - mape: 274.3344 - mse: 1.3665e-04 - val_loss: 1.7511e-04 - val_mae: 0.0081 - val_mape: 2474.7124 - val_mse: 1.7510e-04
Epoch 75/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6388e-04 - mae: 0.0084 - mape: 294.0183 - mse: 1.6384e-04 - val_loss: 1.6831e-04 - val_mae: 0.0075 - val_mape: 530.3156 - val_mse: 1.6831e-04
Epoch 76/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6131e-04 - mae: 0.0086 - mape: 345.9498 - mse: 1.6121e-04 - val_loss: 1.6817e-04 - val_mae: 0.0074 - val_mape: 1676.6509 - val_mse: 1.6815e-04
Epoch 77/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.3480e-04 - mae: 0.0080 - mape: 350.4769 - mse: 1.3480e-04 - val_loss: 1.6783e-04 - val_mae: 0.0075 - val_mape: 227.3266 - val_mse: 1.6783e-04
Epoch 78/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5526e-04 - mae: 0.0083 - mape: 576.2955 - mse: 1.5524e-04 - val_loss: 1.6792e-04 - val_mae: 0.0074 - val_mape: 1531.4816 - val_mse: 1.6792e-04
Epoch 79/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5813e-04 - mae: 0.0083 - mape: 1938.3368 - mse: 1.5797e-04 - val_loss: 1.6949e-04 - val_mae: 0.0076 - val_mape: 905.0793 - val_mse: 1.6913e-04
Epoch 80/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5177e-04 - mae: 0.0083 - mape: 1012.9440 - mse: 1.5156e-04 - val_loss: 1.6820e-04 - val_mae: 0.0074 - val_mape: 1696.7062 - val_mse: 1.6818e-04
Epoch 81/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5440e-04 - mae: 0.0084 - mape: 875.4109 - mse: 1.5437e-04 - val_loss: 1.6736e-04 - val_mae: 0.0074 - val_mape: 857.0354 - val_mse: 1.6735e-04
Epoch 82/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4464e-04 - mae: 0.0082 - mape: 226.6727 - mse: 1.4463e-04 - val_loss: 1.6740e-04 - val_mae: 0.0074 - val_mape: 448.3146 - val_mse: 1.6739e-04
Epoch 83/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 1.4342e-04 - mae: 0.0082 - mape: 370.7364 - mse: 1.4324e-04 - val_loss: 1.6992e-04 - val_mae: 0.0075 - val_mape: 2409.2620 - val_mse: 1.6982e-04
Epoch 84/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4203e-04 - mae: 0.0082 - mape: 264.6112 - mse: 1.4199e-04 - val_loss: 1.6735e-04 - val_mae: 0.0074 - val_mape: 702.7111 - val_mse: 1.6733e-04
Epoch 85/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4676e-04 - mae: 0.0081 - mape: 1086.8105 - mse: 1.4636e-04 - val_loss: 1.6745e-04 - val_mae: 0.0074 - val_mape: 1064.4448 - val_mse: 1.6744e-04
Epoch 86/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4421e-04 - mae: 0.0082 - mape: 616.3105 - mse: 1.4420e-04 - val_loss: 1.6867e-04 - val_mae: 0.0075 - val_mape: 710.3403 - val_mse: 1.6867e-04
Epoch 87/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4875e-04 - mae: 0.0080 - mape: 328.3551 - mse: 1.4860e-04 - val_loss: 1.6859e-04 - val_mae: 0.0075 - val_mape: 653.8500 - val_mse: 1.6855e-04
Epoch 88/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6029e-04 - mae: 0.0084 - mape: 273.4120 - mse: 1.6026e-04 - val_loss: 1.6766e-04 - val_mae: 0.0074 - val_mape: 107.5034 - val_mse: 1.6766e-04
Epoch 89/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4534e-04 - mae: 0.0082 - mape: 224.7295 - mse: 1.4531e-04 - val_loss: 1.6796e-04 - val_mae: 0.0074 - val_mape: 368.5637 - val_mse: 1.6744e-04
Epoch 90/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5935e-04 - mae: 0.0083 - mape: 388.7472 - mse: 1.5913e-04 - val_loss: 1.6795e-04 - val_mae: 0.0074 - val_mape: 1544.1295 - val_mse: 1.6794e-04
Epoch 91/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4765e-04 - mae: 0.0083 - mape: 1176.0830 - mse: 1.4764e-04 - val_loss: 1.6813e-04 - val_mae: 0.0074 - val_mape: 734.5221 - val_mse: 1.6733e-04
Epoch 92/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.6257e-04 - mae: 0.0084 - mape: 281.5510 - mse: 1.6211e-04 - val_loss: 1.6844e-04 - val_mae: 0.0074 - val_mape: 1828.8667 - val_mse: 1.6842e-04
Epoch 93/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5222e-04 - mae: 0.0083 - mape: 314.6148 - mse: 1.5193e-04 - val_loss: 1.6733e-04 - val_mae: 0.0074 - val_mape: 728.1496 - val_mse: 1.6733e-04
Epoch 94/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4290e-04 - mae: 0.0080 - mape: 390.7858 - mse: 1.4290e-04 - val_loss: 1.6900e-04 - val_mae: 0.0076 - val_mape: 853.4347 - val_mse: 1.6900e-04
Epoch 95/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4401e-04 - mae: 0.0080 - mape: 892.0856 - mse: 1.4401e-04 - val_loss: 1.6741e-04 - val_mae: 0.0074 - val_mape: 413.4113 - val_mse: 1.6741e-04
Epoch 96/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5041e-04 - mae: 0.0082 - mape: 207.3196 - mse: 1.5019e-04 - val_loss: 1.6944e-04 - val_mae: 0.0076 - val_mape: 1021.1595 - val_mse: 1.6943e-04
Epoch 97/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5583e-04 - mae: 0.0083 - mape: 240.9816 - mse: 1.5582e-04 - val_loss: 1.6739e-04 - val_mae: 0.0074 - val_mape: 448.4685 - val_mse: 1.6739e-04
Epoch 98/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.7804e-04 - mae: 0.0084 - mape: 1731.4644 - mse: 1.7778e-04 - val_loss: 1.6750e-04 - val_mae: 0.0074 - val_mape: 1147.7490 - val_mse: 1.6750e-04
Epoch 99/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.5346e-04 - mae: 0.0083 - mape: 315.8257 - mse: 1.5346e-04 - val_loss: 1.6741e-04 - val_mae: 0.0074 - val_mape: 997.8314 - val_mse: 1.6741e-04
Epoch 100/100
400/400 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - loss: 1.4603e-04 - mae: 0.0082 - mape: 739.4529 - mse: 1.4588e-04 - val_loss: 1.6965e-04 - val_mae: 0.0076 - val_mape: 1100.7461 - val_mse: 1.6965e-04

plot_performance(historyB, 'loss')
plot_performance(historyB, 'mae')
plot_performance(historyB, 'mse')
plot_performance(historyB, 'mape')
Visualization
Visualization
Visualization
Visualization
plot_prediction_full(modelB(x_testB), modelB_dataset.reset_index())
Visualization
initializer = keras.initializers.Zeros()

inputs = keras.Input(shape=(7,10))

x = LSTM(
    64, activation='relu', 
    kernel_regularizer=regularizers.L2(l2=0.01),
    kernel_initializer=initializer,
    return_sequences=True
)(inputs)

x = BatchNormalization(
        beta_regularizer=regularizers.L2(l2=0.01),
        gamma_regularizer = regularizers.L2(l2=0.01),
    )(x)

x = LSTM(
    64, activation='relu', 
    kernel_regularizer=regularizers.L2(l2=0.01),
    kernel_initializer=initializer
)(x)

x = BatchNormalization(
        beta_regularizer=regularizers.L2(l2=0.01),
        gamma_regularizer = regularizers.L2(l2=0.01),
    )(x)

outputs = Dense(1)(x)

modelB = keras.Model(inputs = inputs, outputs = outputs, name='modelB1')
modelB.summary()

modelB.compile(
    optimizer='adam', 
    loss='mse', 
    metrics=['mae', 'mse', 'mape']
)

historyB = modelB.fit(
    x_trainB, y_trainB, 
    epochs=100, batch_size=32, 
    validation_data=(x_validB, y_validB)
)
Model: "modelB1"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ input_layer_6 (InputLayer)      │ (None, 7, 10)          │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ lstm_7 (LSTM)                   │ (None, 7, 64)          │        19,200 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_6           │ (None, 7, 64)          │           256 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ lstm_8 (LSTM)                   │ (None, 64)             │        33,024 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_7           │ (None, 64)             │           256 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_6 (Dense)                 │ (None, 1)              │            65 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
Total params: 52,801 (206.25 KB)
Trainable params: 52,545 (205.25 KB)
Non-trainable params: 256 (1.00 KB)
Epoch 1/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 5s 16ms/step - loss: 1.2030 - mae: 0.0090 - mape: 435.6741 - mse: 1.7909e-04 - val_loss: 0.9868 - val_mae: 0.0076 - val_mape: 976.8286 - val_mse: 1.6931e-04
Epoch 2/100
125/125 ━━━━━━━━━━━━━━━━━━━━ -0s -2122us/step - loss: 0.9233 - mae: 0.0087 - mape: 596.7189 - mse: 1.7267e-04 - val_loss: 0.7469 - val_mae: 0.0075 - val_mape: 453.0503 - val_mse: 1.6817e-04
Epoch 3/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 0.6957 - mae: 0.0083 - mape: 432.5865 - mse: 1.5028e-04 - val_loss: 0.5543 - val_mae: 0.0074 - val_mape: 147.7315 - val_mse: 1.6772e-04
Epoch 4/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 0.5137 - mae: 0.0084 - mape: 401.6215 - mse: 1.5750e-04 - val_loss: 0.4023 - val_mae: 0.0074 - val_mape: 155.1959 - val_mse: 1.6773e-04
Epoch 5/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 0.3708 - mae: 0.0084 - mape: 520.5400 - mse: 1.5684e-04 - val_loss: 0.2850 - val_mae: 0.0074 - val_mape: 605.9558 - val_mse: 1.6734e-04
Epoch 6/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 0.2610 - mae: 0.0081 - mape: 438.2328 - mse: 1.4468e-04 - val_loss: 0.1965 - val_mae: 0.0074 - val_mape: 1703.2770 - val_mse: 1.6819e-04
Epoch 7/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 0.1787 - mae: 0.0082 - mape: 340.9309 - mse: 1.5275e-04 - val_loss: 0.1315 - val_mae: 0.0075 - val_mape: 521.4443 - val_mse: 1.6829e-04
Epoch 8/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 0.1187 - mae: 0.0081 - mape: 235.7080 - mse: 1.4356e-04 - val_loss: 0.0852 - val_mae: 0.0078 - val_mape: 1565.6587 - val_mse: 1.7114e-04
Epoch 9/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 0.0763 - mae: 0.0082 - mape: 737.3013 - mse: 1.4888e-04 - val_loss: 0.0532 - val_mae: 0.0074 - val_mape: 172.6399 - val_mse: 1.6759e-04
Epoch 10/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 0.0473 - mae: 0.0083 - mape: 598.0237 - mse: 1.5965e-04 - val_loss: 0.0320 - val_mae: 0.0077 - val_mape: 1442.9362 - val_mse: 1.7071e-04
Epoch 11/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 0.0282 - mae: 0.0082 - mape: 969.5480 - mse: 1.4596e-04 - val_loss: 0.0185 - val_mae: 0.0076 - val_mape: 1182.9741 - val_mse: 1.6988e-04
Epoch 12/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 0.0161 - mae: 0.0084 - mape: 316.1877 - mse: 1.7238e-04 - val_loss: 0.0103 - val_mae: 0.0076 - val_mape: 861.5106 - val_mse: 1.6902e-04
Epoch 13/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 0.0088 - mae: 0.0080 - mape: 599.6418 - mse: 1.4065e-04 - val_loss: 0.0054 - val_mae: 0.0074 - val_mape: 995.7842 - val_mse: 1.6740e-04
Epoch 14/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 0.0047 - mae: 0.0083 - mape: 393.6721 - mse: 1.5580e-04 - val_loss: 0.0028 - val_mae: 0.0074 - val_mape: 111.3963 - val_mse: 1.6768e-04
Epoch 15/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 0.0024 - mae: 0.0083 - mape: 674.6592 - mse: 1.5044e-04 - val_loss: 0.0014 - val_mae: 0.0076 - val_mape: 922.4682 - val_mse: 1.6917e-04
Epoch 16/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 0.0012 - mae: 0.0082 - mape: 221.8282 - mse: 1.5901e-04 - val_loss: 7.1395e-04 - val_mae: 0.0074 - val_mape: 620.8022 - val_mse: 1.6734e-04
Epoch 17/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 6.0813e-04 - mae: 0.0084 - mape: 1106.8949 - mse: 1.5936e-04 - val_loss: 3.9551e-04 - val_mae: 0.0075 - val_mape: 402.4179 - val_mse: 1.6809e-04
Epoch 18/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 3.3280e-04 - mae: 0.0081 - mape: 155.8967 - mse: 1.4861e-04 - val_loss: 2.5783e-04 - val_mae: 0.0076 - val_mape: 980.6091 - val_mse: 1.6932e-04
Epoch 19/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 2.3283e-04 - mae: 0.0086 - mape: 553.3635 - mse: 1.6191e-04 - val_loss: 1.9999e-04 - val_mae: 0.0075 - val_mape: 266.5617 - val_mse: 1.6788e-04
Epoch 20/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.7358e-04 - mae: 0.0082 - mape: 1151.6674 - mse: 1.4823e-04 - val_loss: 1.7985e-04 - val_mae: 0.0076 - val_mape: 878.8669 - val_mse: 1.6906e-04
Epoch 21/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.7256e-04 - mae: 0.0084 - mape: 252.2359 - mse: 1.6421e-04 - val_loss: 1.7457e-04 - val_mae: 0.0078 - val_mape: 1550.5503 - val_mse: 1.7108e-04
Epoch 22/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.5562e-04 - mae: 0.0084 - mape: 211.1651 - mse: 1.5257e-04 - val_loss: 1.7067e-04 - val_mae: 0.0076 - val_mape: 1086.5487 - val_mse: 1.6961e-04
Epoch 23/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.4738e-04 - mae: 0.0081 - mape: 246.1841 - mse: 1.4656e-04 - val_loss: 1.6767e-04 - val_mae: 0.0074 - val_mape: 457.4018 - val_mse: 1.6739e-04
Epoch 24/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.5033e-04 - mae: 0.0082 - mape: 152.5246 - mse: 1.5003e-04 - val_loss: 1.6766e-04 - val_mae: 0.0074 - val_mape: 258.4911 - val_mse: 1.6751e-04
Epoch 25/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.4970e-04 - mae: 0.0081 - mape: 304.9364 - mse: 1.4930e-04 - val_loss: 1.6886e-04 - val_mae: 0.0076 - val_mape: 776.6670 - val_mse: 1.6882e-04
Epoch 26/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.4096e-04 - mae: 0.0081 - mape: 342.6165 - mse: 1.4086e-04 - val_loss: 1.6752e-04 - val_mae: 0.0074 - val_mape: 1141.7101 - val_mse: 1.6750e-04
Epoch 27/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.6221e-04 - mae: 0.0083 - mape: 164.4304 - mse: 1.6211e-04 - val_loss: 1.6740e-04 - val_mae: 0.0074 - val_mape: 961.2386 - val_mse: 1.6739e-04
Epoch 28/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5763e-04 - mae: 0.0084 - mape: 1451.0212 - mse: 1.5754e-04 - val_loss: 1.7011e-04 - val_mae: 0.0074 - val_mape: 1994.7638 - val_mse: 1.6876e-04
Epoch 29/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.3943e-04 - mae: 0.0081 - mape: 218.3493 - mse: 1.3911e-04 - val_loss: 1.6857e-04 - val_mae: 0.0074 - val_mape: 1890.0270 - val_mse: 1.6854e-04
Epoch 30/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5085e-04 - mae: 0.0083 - mape: 350.3429 - mse: 1.5052e-04 - val_loss: 1.6931e-04 - val_mae: 0.0076 - val_mape: 857.8584 - val_mse: 1.6901e-04
Epoch 31/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5600e-04 - mae: 0.0084 - mape: 443.3181 - mse: 1.5592e-04 - val_loss: 1.6819e-04 - val_mae: 0.0074 - val_mape: 515.5865 - val_mse: 1.6737e-04
Epoch 32/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5997e-04 - mae: 0.0084 - mape: 271.0178 - mse: 1.5965e-04 - val_loss: 1.6769e-04 - val_mae: 0.0074 - val_mape: 127.5943 - val_mse: 1.6764e-04
Epoch 33/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 8ms/step - loss: 1.6074e-04 - mae: 0.0084 - mape: 400.4386 - mse: 1.6071e-04 - val_loss: 1.7046e-04 - val_mae: 0.0077 - val_mape: 1340.8969 - val_mse: 1.7037e-04
Epoch 34/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 8ms/step - loss: 1.5436e-04 - mae: 0.0083 - mape: 253.9579 - mse: 1.5424e-04 - val_loss: 1.6913e-04 - val_mae: 0.0076 - val_mape: 763.8864 - val_mse: 1.6879e-04
Epoch 35/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.4839e-04 - mae: 0.0082 - mape: 273.2552 - mse: 1.4808e-04 - val_loss: 1.6754e-04 - val_mae: 0.0074 - val_mape: 1117.1104 - val_mse: 1.6748e-04
Epoch 36/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.6199e-04 - mae: 0.0084 - mape: 279.6372 - mse: 1.6197e-04 - val_loss: 1.6787e-04 - val_mae: 0.0074 - val_mape: 1343.7236 - val_mse: 1.6768e-04
Epoch 37/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5890e-04 - mae: 0.0083 - mape: 278.2705 - mse: 1.5836e-04 - val_loss: 1.6741e-04 - val_mae: 0.0074 - val_mape: 546.5812 - val_mse: 1.6736e-04
Epoch 38/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.3582e-04 - mae: 0.0080 - mape: 283.0791 - mse: 1.3571e-04 - val_loss: 1.6754e-04 - val_mae: 0.0074 - val_mape: 259.8494 - val_mse: 1.6751e-04
Epoch 39/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s -58us/step - loss: 1.5680e-04 - mae: 0.0082 - mape: 690.5262 - mse: 1.5677e-04 - val_loss: 1.6927e-04 - val_mae: 0.0074 - val_mape: 1058.6514 - val_mse: 1.6744e-04
Epoch 40/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5440e-04 - mae: 0.0081 - mape: 818.6930 - mse: 1.5312e-04 - val_loss: 1.6764e-04 - val_mae: 0.0074 - val_mape: 674.4964 - val_mse: 1.6733e-04
Epoch 41/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.5067e-04 - mae: 0.0083 - mape: 198.6364 - mse: 1.5050e-04 - val_loss: 1.6870e-04 - val_mae: 0.0074 - val_mape: 1962.9185 - val_mse: 1.6869e-04
Epoch 42/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.6180e-04 - mae: 0.0085 - mape: 1741.8356 - mse: 1.6163e-04 - val_loss: 1.6856e-04 - val_mae: 0.0075 - val_mape: 523.6723 - val_mse: 1.6830e-04
Epoch 43/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.5670e-04 - mae: 0.0083 - mape: 830.3906 - mse: 1.5650e-04 - val_loss: 1.6773e-04 - val_mae: 0.0074 - val_mape: 1371.1201 - val_mse: 1.6772e-04
Epoch 44/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.6509e-04 - mae: 0.0085 - mape: 642.5709 - mse: 1.6506e-04 - val_loss: 1.6749e-04 - val_mae: 0.0074 - val_mape: 466.0258 - val_mse: 1.6738e-04
Epoch 45/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.6482e-04 - mae: 0.0084 - mape: 709.7662 - mse: 1.6473e-04 - val_loss: 1.6761e-04 - val_mae: 0.0074 - val_mape: 219.1685 - val_mse: 1.6755e-04
Epoch 46/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5373e-04 - mae: 0.0082 - mape: 484.6697 - mse: 1.5369e-04 - val_loss: 1.6734e-04 - val_mae: 0.0074 - val_mape: 728.3204 - val_mse: 1.6733e-04
Epoch 47/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.4134e-04 - mae: 0.0080 - mape: 1009.7871 - mse: 1.4113e-04 - val_loss: 1.6903e-04 - val_mae: 0.0076 - val_mape: 853.4592 - val_mse: 1.6900e-04
Epoch 48/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5970e-04 - mae: 0.0085 - mape: 425.6898 - mse: 1.5960e-04 - val_loss: 1.6813e-04 - val_mae: 0.0074 - val_mape: 1465.1425 - val_mse: 1.6783e-04
Epoch 49/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5417e-04 - mae: 0.0084 - mape: 324.3423 - mse: 1.5395e-04 - val_loss: 1.6755e-04 - val_mae: 0.0074 - val_mape: 271.6149 - val_mse: 1.6750e-04
Epoch 50/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.4489e-04 - mae: 0.0081 - mape: 897.3470 - mse: 1.4465e-04 - val_loss: 1.6769e-04 - val_mae: 0.0074 - val_mape: 268.7074 - val_mse: 1.6751e-04
Epoch 51/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.5410e-04 - mae: 0.0082 - mape: 445.0918 - mse: 1.5383e-04 - val_loss: 1.6806e-04 - val_mae: 0.0075 - val_mape: 210.5644 - val_mse: 1.6780e-04
Epoch 52/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.5902e-04 - mae: 0.0084 - mape: 689.7528 - mse: 1.5862e-04 - val_loss: 1.6818e-04 - val_mae: 0.0074 - val_mape: 462.7045 - val_mse: 1.6739e-04
Epoch 53/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.4694e-04 - mae: 0.0082 - mape: 453.3514 - mse: 1.4652e-04 - val_loss: 1.7371e-04 - val_mae: 0.0079 - val_mape: 1924.1819 - val_mse: 1.7254e-04
Epoch 54/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.5325e-04 - mae: 0.0085 - mape: 494.9574 - mse: 1.5257e-04 - val_loss: 1.6897e-04 - val_mae: 0.0076 - val_mape: 834.9657 - val_mse: 1.6895e-04
Epoch 55/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.5734e-04 - mae: 0.0083 - mape: 803.5780 - mse: 1.5722e-04 - val_loss: 1.6760e-04 - val_mae: 0.0074 - val_mape: 1259.3052 - val_mse: 1.6760e-04
Epoch 56/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5216e-04 - mae: 0.0083 - mape: 714.5034 - mse: 1.5170e-04 - val_loss: 1.6749e-04 - val_mae: 0.0074 - val_mape: 534.5056 - val_mse: 1.6736e-04
Epoch 57/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5772e-04 - mae: 0.0082 - mape: 813.4072 - mse: 1.5752e-04 - val_loss: 1.6871e-04 - val_mae: 0.0075 - val_mape: 678.3262 - val_mse: 1.6860e-04
Epoch 58/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5126e-04 - mae: 0.0081 - mape: 1020.2997 - mse: 1.5113e-04 - val_loss: 1.7151e-04 - val_mae: 0.0078 - val_mape: 1652.1248 - val_mse: 1.7146e-04
Epoch 59/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.6029e-04 - mae: 0.0083 - mape: 1107.5422 - mse: 1.5981e-04 - val_loss: 1.6894e-04 - val_mae: 0.0076 - val_mape: 821.4700 - val_mse: 1.6892e-04
Epoch 60/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.4335e-04 - mae: 0.0082 - mape: 1749.8304 - mse: 1.4324e-04 - val_loss: 1.7029e-04 - val_mae: 0.0075 - val_mape: 2464.8081 - val_mse: 1.6999e-04
Epoch 61/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.4365e-04 - mae: 0.0081 - mape: 358.9369 - mse: 1.4271e-04 - val_loss: 1.6747e-04 - val_mae: 0.0074 - val_mape: 771.6898 - val_mse: 1.6734e-04
Epoch 62/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5922e-04 - mae: 0.0082 - mape: 820.1456 - mse: 1.5878e-04 - val_loss: 1.6883e-04 - val_mae: 0.0075 - val_mape: 748.4217 - val_mse: 1.6876e-04
Epoch 63/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.5086e-04 - mae: 0.0083 - mape: 258.4277 - mse: 1.5078e-04 - val_loss: 1.6775e-04 - val_mae: 0.0074 - val_mape: 164.7739 - val_mse: 1.6775e-04
Epoch 64/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5380e-04 - mae: 0.0082 - mape: 257.7812 - mse: 1.5380e-04 - val_loss: 1.6836e-04 - val_mae: 0.0075 - val_mape: 553.7056 - val_mse: 1.6835e-04
Epoch 65/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.4835e-04 - mae: 0.0082 - mape: 233.6370 - mse: 1.4832e-04 - val_loss: 1.6802e-04 - val_mae: 0.0075 - val_mape: 208.0745 - val_mse: 1.6780e-04
Epoch 66/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.5777e-04 - mae: 0.0083 - mape: 227.3891 - mse: 1.5769e-04 - val_loss: 1.6796e-04 - val_mae: 0.0074 - val_mape: 1039.5352 - val_mse: 1.6743e-04
Epoch 67/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.4792e-04 - mae: 0.0082 - mape: 164.0500 - mse: 1.4757e-04 - val_loss: 1.6780e-04 - val_mae: 0.0075 - val_mape: 194.0968 - val_mse: 1.6778e-04
Epoch 68/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.4008e-04 - mae: 0.0080 - mape: 547.7551 - mse: 1.4005e-04 - val_loss: 1.6840e-04 - val_mae: 0.0075 - val_mape: 298.2804 - val_mse: 1.6793e-04
Epoch 69/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5964e-04 - mae: 0.0083 - mape: 256.7431 - mse: 1.5942e-04 - val_loss: 1.7160e-04 - val_mae: 0.0076 - val_mape: 2865.4692 - val_mse: 1.7133e-04
Epoch 70/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.6201e-04 - mae: 0.0086 - mape: 409.8905 - mse: 1.6126e-04 - val_loss: 1.6851e-04 - val_mae: 0.0074 - val_mape: 1648.4878 - val_mse: 1.6810e-04
Epoch 71/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.4979e-04 - mae: 0.0082 - mape: 387.6679 - mse: 1.4933e-04 - val_loss: 1.6859e-04 - val_mae: 0.0075 - val_mape: 641.0791 - val_mse: 1.6853e-04
Epoch 72/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.4424e-04 - mae: 0.0081 - mape: 237.7973 - mse: 1.4397e-04 - val_loss: 1.6738e-04 - val_mae: 0.0074 - val_mape: 765.8429 - val_mse: 1.6734e-04
Epoch 73/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.4669e-04 - mae: 0.0082 - mape: 241.4669 - mse: 1.4653e-04 - val_loss: 1.6848e-04 - val_mae: 0.0074 - val_mape: 1038.8519 - val_mse: 1.6743e-04
Epoch 74/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.6336e-04 - mae: 0.0085 - mape: 430.2130 - mse: 1.6315e-04 - val_loss: 1.6850e-04 - val_mae: 0.0074 - val_mape: 1534.9370 - val_mse: 1.6793e-04
Epoch 75/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.4136e-04 - mae: 0.0080 - mape: 1070.5554 - mse: 1.4080e-04 - val_loss: 1.6817e-04 - val_mae: 0.0075 - val_mape: 413.4415 - val_mse: 1.6810e-04
Epoch 76/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5606e-04 - mae: 0.0084 - mape: 956.1942 - mse: 1.5581e-04 - val_loss: 1.6751e-04 - val_mae: 0.0074 - val_mape: 269.3149 - val_mse: 1.6751e-04
Epoch 77/100
125/125 ━━━━━━━━━━━━━━━━━━━━ -0s -686us/step - loss: 1.4870e-04 - mae: 0.0082 - mape: 687.3671 - mse: 1.4865e-04 - val_loss: 1.6899e-04 - val_mae: 0.0075 - val_mape: 559.7476 - val_mse: 1.6837e-04
Epoch 78/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5474e-04 - mae: 0.0083 - mape: 232.0982 - mse: 1.5372e-04 - val_loss: 1.6761e-04 - val_mae: 0.0074 - val_mape: 667.7231 - val_mse: 1.6733e-04
Epoch 79/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.4453e-04 - mae: 0.0079 - mape: 241.6724 - mse: 1.4441e-04 - val_loss: 1.6735e-04 - val_mae: 0.0074 - val_mape: 623.2974 - val_mse: 1.6734e-04
Epoch 80/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5290e-04 - mae: 0.0082 - mape: 842.9001 - mse: 1.5269e-04 - val_loss: 1.6802e-04 - val_mae: 0.0074 - val_mape: 169.6489 - val_mse: 1.6775e-04
Epoch 81/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.4986e-04 - mae: 0.0081 - mape: 403.7156 - mse: 1.4941e-04 - val_loss: 1.6785e-04 - val_mae: 0.0074 - val_mape: 847.3546 - val_mse: 1.6735e-04
Epoch 82/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 8ms/step - loss: 1.4383e-04 - mae: 0.0080 - mape: 760.9138 - mse: 1.4338e-04 - val_loss: 1.6740e-04 - val_mae: 0.0074 - val_mape: 666.0180 - val_mse: 1.6733e-04
Epoch 83/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5971e-04 - mae: 0.0083 - mape: 1590.2455 - mse: 1.5964e-04 - val_loss: 1.7090e-04 - val_mae: 0.0077 - val_mape: 1418.7247 - val_mse: 1.7063e-04
Epoch 84/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.4123e-04 - mae: 0.0080 - mape: 307.9486 - mse: 1.4084e-04 - val_loss: 1.6968e-04 - val_mae: 0.0076 - val_mape: 998.9339 - val_mse: 1.6937e-04
Epoch 85/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.5227e-04 - mae: 0.0083 - mape: 273.0139 - mse: 1.5200e-04 - val_loss: 1.6745e-04 - val_mae: 0.0074 - val_mape: 976.6664 - val_mse: 1.6740e-04
Epoch 86/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.6271e-04 - mae: 0.0084 - mape: 368.6738 - mse: 1.6246e-04 - val_loss: 1.6848e-04 - val_mae: 0.0075 - val_mape: 337.1367 - val_mse: 1.6798e-04
Epoch 87/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5505e-04 - mae: 0.0081 - mape: 227.0559 - mse: 1.5473e-04 - val_loss: 1.6839e-04 - val_mae: 0.0075 - val_mape: 555.6732 - val_mse: 1.6836e-04
Epoch 88/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.3978e-04 - mae: 0.0080 - mape: 449.4554 - mse: 1.3960e-04 - val_loss: 1.6841e-04 - val_mae: 0.0075 - val_mape: 213.3090 - val_mse: 1.6781e-04
Epoch 89/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5139e-04 - mae: 0.0082 - mape: 688.0635 - mse: 1.5102e-04 - val_loss: 1.6880e-04 - val_mae: 0.0075 - val_mape: 721.9558 - val_mse: 1.6870e-04
Epoch 90/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.5764e-04 - mae: 0.0084 - mape: 413.3983 - mse: 1.5761e-04 - val_loss: 1.7508e-04 - val_mae: 0.0081 - val_mape: 2460.6843 - val_mse: 1.7503e-04
Epoch 91/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5936e-04 - mae: 0.0083 - mape: 643.1550 - mse: 1.5874e-04 - val_loss: 1.6783e-04 - val_mae: 0.0074 - val_mape: 250.5378 - val_mse: 1.6752e-04
Epoch 92/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5874e-04 - mae: 0.0083 - mape: 312.8012 - mse: 1.5842e-04 - val_loss: 1.6806e-04 - val_mae: 0.0074 - val_mape: 665.3387 - val_mse: 1.6733e-04
Epoch 93/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.4442e-04 - mae: 0.0082 - mape: 395.9012 - mse: 1.4413e-04 - val_loss: 1.7321e-04 - val_mae: 0.0075 - val_mape: 642.6756 - val_mse: 1.6853e-04
Epoch 94/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.6212e-04 - mae: 0.0084 - mape: 231.6534 - mse: 1.6081e-04 - val_loss: 1.6884e-04 - val_mae: 0.0075 - val_mape: 2017.2203 - val_mse: 1.6881e-04
Epoch 95/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.6495e-04 - mae: 0.0085 - mape: 310.2065 - mse: 1.6445e-04 - val_loss: 1.6932e-04 - val_mae: 0.0075 - val_mape: 279.0462 - val_mse: 1.6790e-04
Epoch 96/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.6464e-04 - mae: 0.0083 - mape: 216.2633 - mse: 1.6377e-04 - val_loss: 1.6790e-04 - val_mae: 0.0074 - val_mape: 987.2879 - val_mse: 1.6740e-04
Epoch 97/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.4175e-04 - mae: 0.0080 - mape: 291.7022 - mse: 1.4140e-04 - val_loss: 1.7365e-04 - val_mae: 0.0080 - val_mape: 2140.8945 - val_mse: 1.7349e-04
Epoch 98/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.6037e-04 - mae: 0.0084 - mape: 1617.9972 - mse: 1.5986e-04 - val_loss: 1.6842e-04 - val_mae: 0.0074 - val_mape: 871.5241 - val_mse: 1.6736e-04
Epoch 99/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 6ms/step - loss: 1.4385e-04 - mae: 0.0080 - mape: 309.2946 - mse: 1.4358e-04 - val_loss: 1.6936e-04 - val_mae: 0.0076 - val_mape: 857.9138 - val_mse: 1.6901e-04
Epoch 100/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 7ms/step - loss: 1.5130e-04 - mae: 0.0082 - mape: 399.9168 - mse: 1.5075e-04 - val_loss: 1.6786e-04 - val_mae: 0.0074 - val_mape: 780.1967 - val_mse: 1.6734e-04

plot_performance(historyB, 'loss')
plot_performance(historyB, 'mae')
plot_performance(historyB, 'mse')
plot_performance(historyB, 'mape')
plot_prediction_full(modelB(x_testB), modelB_dataset.reset_index())
Visualization
Visualization
Visualization
Visualization
Visualization

It seems like this model structure is not working as intended. So now lets explore splitting them into branches. Where we will split the features to different sub model, and come together to predict the next's day change in close price.

Model C - Reattempting the Model Structure

Datetime Columns

modelB_dataset[datetime_columns]
DayOfWeek DayOfYear DayOfMonth Month WeekNo
Date
2001-01-03 0.50 0.002747 0.066667 0.0 0.018868
2001-01-04 0.75 0.005495 0.100000 0.0 0.018868
2001-01-05 1.00 0.008242 0.133333 0.0 0.018868
2001-01-08 0.00 0.016484 0.233333 0.0 0.037736
2001-01-09 0.25 0.019231 0.266667 0.0 0.037736
... ... ... ... ... ...
2024-12-23 0.00 0.978022 0.733333 1.0 0.981132
2024-12-24 0.25 0.980769 0.766667 1.0 0.981132
2024-12-26 0.75 0.986264 0.833333 1.0 0.981132
2024-12-27 1.00 0.989011 0.866667 1.0 0.981132
2024-12-30 0.00 0.997253 0.966667 1.0 1.000000
modelC_dataset_datetime = modelB_dataset[datetime_columns]
modelC_dataset_datetime
DayOfWeek DayOfYear DayOfMonth Month WeekNo
Date
2001-01-03 0.50 0.002747 0.066667 0.0 0.018868
2001-01-04 0.75 0.005495 0.100000 0.0 0.018868
2001-01-05 1.00 0.008242 0.133333 0.0 0.018868
2001-01-08 0.00 0.016484 0.233333 0.0 0.037736
2001-01-09 0.25 0.019231 0.266667 0.0 0.037736
... ... ... ... ... ...
2024-12-23 0.00 0.978022 0.733333 1.0 0.981132
2024-12-24 0.25 0.980769 0.766667 1.0 0.981132
2024-12-26 0.75 0.986264 0.833333 1.0 0.981132
2024-12-27 1.00 0.989011 0.866667 1.0 0.981132
2024-12-30 0.00 0.997253 0.966667 1.0 1.000000
input = []
for row in range(len(modelC_dataset_datetime)):
    if row > 6:
        input.append(modelC_dataset_datetime.iloc[row].to_numpy().reshape(5,1))

modelC_input_datetime = np.array(input)
modelC_input_datetime
array([[[1.        ],
        [0.02747253],
        [0.36666667],
        [0.        ],
        [0.03773585]],

       [[0.25      ],
        [0.03846154],
        [0.5       ],
        [0.        ],
        [0.05660377]],

       [[0.5       ],
        [0.04120879],
        [0.53333333],
        [0.        ],
        [0.05660377]],

       ...,

       [[0.75      ],
        [0.98626374],
        [0.83333333],
        [1.        ],
        [0.98113208]],

       [[1.        ],
        [0.98901099],
        [0.86666667],
        [1.        ],
        [0.98113208]],

       [[0.        ],
        [0.99725275],
        [0.96666667],
        [1.        ],
        [1.        ]]])
modelC_dateset_price = modelB_dataset[prices_columns]
modelC_dateset_price
Close Open High Low Volume
Date
2001-01-03 0.050099 -0.028032 0.020814 -0.001121 0.665220
2001-01-04 -0.010552 0.050099 0.001840 0.042774 0.133089
2001-01-05 -0.026242 -0.010552 -0.011457 -0.025723 -0.328578
2001-01-08 -0.001918 -0.026242 -0.027286 -0.014410 -0.220366
2001-01-09 0.003812 -0.001918 0.010298 0.014769 0.067952
... ... ... ... ... ...
2024-12-23 0.007287 0.016818 -0.000637 0.012048 -0.563032
2024-12-24 0.011043 0.007471 0.010346 0.013362 -0.510831
2024-12-26 -0.000406 0.006741 0.001598 0.004335 0.652442
2024-12-27 -0.011056 -0.003120 -0.007204 -0.012388 0.087821
2024-12-30 -0.010702 -0.014235 -0.010885 -0.010752 0.086606
input = []
output = []
for row in range(len(modelC_dateset_price) - 7):
    input.append(modelC_dateset_price.iloc[row:row+7].to_numpy().reshape(7,5))
    output.append(modelC_dateset_price['Close'].iloc[row+7])

modelC_input_price = np.array(input) 
modelC_output = np.array(output)

modelC_input_price, modelC_output, modelC_input_price.shape, modelC_output.shape    
(array([[[ 5.00986060e-02, -2.80319394e-02,  2.08137515e-02,
          -1.12068779e-03,  6.65220471e-01],
         [-1.05524742e-02,  5.00986060e-02,  1.84007572e-03,
           4.27735480e-02,  1.33088744e-01],
         [-2.62423621e-02, -1.05524742e-02, -1.14572008e-02,
          -2.57234476e-02, -3.28578132e-01],
         ...,
         [ 3.81218923e-03, -1.91781128e-03,  1.02976820e-02,
           1.47693510e-02,  6.79515912e-02],
         [ 9.58638548e-03,  3.81218923e-03,  1.55523977e-03,
          -6.06883060e-03,  8.83068916e-02],
         [ 1.03177005e-02,  9.58638548e-03,  1.40283853e-02,
           1.74320590e-02,  8.84689549e-02]],
 
        [[-1.05524742e-02,  5.00986060e-02,  1.84007572e-03,
           4.27735480e-02,  1.33088744e-01],
         [-2.62423621e-02, -1.05524742e-02, -1.14572008e-02,
          -2.57234476e-02, -3.28578132e-01],
         [-1.91781128e-03, -2.62423621e-02, -2.72856323e-02,
          -1.44097554e-02, -2.20366229e-01],
         ...,
         [ 9.58638548e-03,  3.81218923e-03,  1.55523977e-03,
          -6.06883060e-03,  8.83068916e-02],
         [ 1.03177005e-02,  9.58638548e-03,  1.40283853e-02,
           1.74320590e-02,  8.84689549e-02],
         [-6.23287092e-03,  1.03177005e-02,  7.65671245e-04,
           1.42778240e-03, -9.58049887e-02]],
 
        [[-2.62423621e-02, -1.05524742e-02, -1.14572008e-02,
          -2.57234476e-02, -3.28578132e-01],
         [-1.91781128e-03, -2.62423621e-02, -2.72856323e-02,
          -1.44097554e-02, -2.20366229e-01],
         [ 3.81218923e-03, -1.91781128e-03,  1.02976820e-02,
           1.47693510e-02,  6.79515912e-02],
         ...,
         [ 1.03177005e-02,  9.58638548e-03,  1.40283853e-02,
           1.74320590e-02,  8.84689549e-02],
         [-6.23287092e-03,  1.03177005e-02,  7.65671245e-04,
           1.42778240e-03, -9.58049887e-02],
         [ 6.14309301e-03, -6.40629501e-03, -4.05030153e-03,
           1.32662667e-03, -5.50940439e-02]],
 
        ...,
 
        [[ 3.79935433e-03, -7.21779856e-04,  1.08740252e-03,
           3.87193632e-03,  2.24867223e-01],
         [-3.86399497e-03, -1.85366484e-03, -4.52077353e-03,
          -3.95273830e-03,  3.49342989e-02],
         [-2.94928464e-02, -8.09560020e-04,  2.14434333e-03,
          -2.77373047e-02,  1.54573660e-01],
         ...,
         [ 1.08691238e-02, -1.19589767e-02,  7.84093709e-03,
          -5.75683900e-03,  6.79277417e-01],
         [ 7.28727347e-03,  1.68178706e-02, -6.36914133e-04,
           1.20484238e-02, -5.63032486e-01],
         [ 1.10427593e-02,  7.47104630e-03,  1.03458533e-02,
           1.33619965e-02, -5.10831330e-01]],
 
        [[-3.86399497e-03, -1.85366484e-03, -4.52077353e-03,
          -3.95273830e-03,  3.49342989e-02],
         [-2.94928464e-02, -8.09560020e-04,  2.14434333e-03,
          -2.77373047e-02,  1.54573660e-01],
         [-8.65112325e-04, -2.23127899e-02, -2.22627657e-02,
          -2.93162303e-04, -6.67205391e-02],
         ...,
         [ 7.28727347e-03,  1.68178706e-02, -6.36914133e-04,
           1.20484238e-02, -5.63032486e-01],
         [ 1.10427593e-02,  7.47104630e-03,  1.03458533e-02,
           1.33619965e-02, -5.10831330e-01],
         [-4.05658786e-04,  6.74065612e-03,  1.59763947e-03,
           4.33510593e-03,  6.52441800e-01]],
 
        [[-2.94928464e-02, -8.09560020e-04,  2.14434333e-03,
          -2.77373047e-02,  1.54573660e-01],
         [-8.65112325e-04, -2.23127899e-02, -2.22627657e-02,
          -2.93162303e-04, -6.67205391e-02],
         [ 1.08691238e-02, -1.19589767e-02,  7.84093709e-03,
          -5.75683900e-03,  6.79277417e-01],
         ...,
         [ 1.10427593e-02,  7.47104630e-03,  1.03458533e-02,
           1.33619965e-02, -5.10831330e-01],
         [-4.05658786e-04,  6.74065612e-03,  1.59763947e-03,
           4.33510593e-03,  6.52441800e-01],
         [-1.10557361e-02, -3.12039600e-03, -7.20361637e-03,
          -1.23881034e-02,  8.78214375e-02]]]),
 array([-0.00623287,  0.00614309,  0.00212561, ..., -0.00040566,
        -0.01105574, -0.010702  ]),
 (6028, 7, 5),
 (6028,))

modelC_input_price_train, modelC_input_price_valid, modelC_input_price_test = train_valid_test_split(modelC_input_price, 4000, 1000)
modelC_output_train, modelC_output_valid, modelC_output_test = ysplit(modelC_output, 4000, 1000)

modelC_input_price_train.shape, modelC_input_price_valid.shape, modelC_input_price_test.shape, modelC_output_train.shape, modelC_output_valid.shape, modelC_output_test.shape
((4000, 7, 5), (1000, 7, 5), (1028, 7, 5), (4000,), (1000,), (1028,))
modelC_input_datetime_train, modelC_input_datetime_valid, modelC_input_datetime_test = train_valid_test_split(modelC_input_datetime, 4000, 1000)

modelC_input_datetime_train.shape, modelC_input_datetime_valid.shape, modelC_input_datetime_test.shape
((4000, 5, 1), (1000, 5, 1), (1028, 5, 1))

The price data will be fed into an LSTM, while the dates will be fed into dense layers.

datetime_input = keras.Input(shape=(5,), name='datetime_input')
price_input = keras.Input(shape=(7,5), name='price_input')

datetime_features = Dense(5, activation='relu')(datetime_input)
datetime_features = BatchNormalization()(datetime_features)
datetime_features = Dense(5, activation='relu')(datetime_features)
datetime_features = keras.layers.Dropout(0.2)(datetime_features)

price_features = LSTM(
    7, activation='relu',
    kernel_regularizer=regularizers.L2(l2=0.01)
)(price_input)

price_features = BatchNormalization(
    beta_regularizer=regularizers.L2(l2=0.01),
    gamma_regularizer = regularizers.L2(l2=0.01))(price_features)

price_features = keras.layers.Dropout(0.2)(price_features)
x = keras.layers.concatenate([datetime_features, price_features])
output = Dense(1)(x)


modelC = keras.Model(inputs = [datetime_input, price_input], outputs = output, name='modelC')
modelC.summary()
keras.utils.plot_model(modelC, "modelC.png", show_shapes=True)
Model: "modelC"
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓
┃ Layer (type)        ┃ Output Shape      ┃    Param # ┃ Connected to      ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩
│ datetime_input      │ (None, 5)         │          0 │ -                 │
│ (InputLayer)        │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ dense_7 (Dense)     │ (None, 5)         │         30 │ datetime_input[0… │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ price_input         │ (None, 7, 5)      │          0 │ -                 │
│ (InputLayer)        │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ batch_normalizatio… │ (None, 5)         │         20 │ dense_7[0][0]     │
│ (BatchNormalizatio… │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ lstm_9 (LSTM)       │ (None, 7)         │        364 │ price_input[0][0] │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ dense_8 (Dense)     │ (None, 5)         │         30 │ batch_normalizat… │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ batch_normalizatio… │ (None, 7)         │         28 │ lstm_9[0][0]      │
│ (BatchNormalizatio… │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ dropout (Dropout)   │ (None, 5)         │          0 │ dense_8[0][0]     │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ dropout_1 (Dropout) │ (None, 7)         │          0 │ batch_normalizat… │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ concatenate         │ (None, 12)        │          0 │ dropout[0][0],    │
│ (Concatenate)       │                   │            │ dropout_1[0][0]   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ dense_9 (Dense)     │ (None, 1)         │         13 │ concatenate[0][0] │
└─────────────────────┴───────────────────┴────────────┴───────────────────┘
Total params: 485 (1.89 KB)
Trainable params: 461 (1.80 KB)
Non-trainable params: 24 (96.00 B)
Visualization
modelC.compile(
    optimizer='adam', 
    loss='mape', 
    metrics=['mae', 'mse', 'mape']
)

historyC = modelC.fit(
    {'datetime_input': modelC_input_datetime_train, 'price_input': modelC_input_price_train}, modelC_output_train,
    validation_data=({'datetime_input': modelC_input_datetime_valid, 'price_input': modelC_input_price_valid}, modelC_output_valid),
    epochs=100, batch_size=32
) 
Epoch 1/100
/home/edtlk1203/anaconda3/envs/SIM-UOL-course/lib/python3.11/site-packages/keras/src/models/functional.py:225: UserWarning: The structure of `inputs` doesn't match the expected structure: ['datetime_input', 'price_input']. Received: the structure of inputs={'datetime_input': '*', 'price_input': '*'}
  warnings.warn(
125/125 ━━━━━━━━━━━━━━━━━━━━ 5s 12ms/step - loss: 128733.5781 - mae: 0.4317 - mape: 128733.4375 - mse: 0.3381 - val_loss: 89138.7500 - val_mae: 0.0966 - val_mape: 89138.5859 - val_mse: 0.0130
Epoch 2/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 72204.6406 - mae: 0.3665 - mape: 72204.4922 - mse: 0.2723 - val_loss: 633162.7500 - val_mae: 0.1317 - val_mape: 633162.7500 - val_mse: 0.0363
Epoch 3/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 119958.4766 - mae: 0.3597 - mape: 119958.2969 - mse: 0.2657 - val_loss: 729828.8750 - val_mae: 0.1691 - val_mape: 729828.6250 - val_mse: 0.0609
Epoch 4/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 117213.2734 - mae: 0.3353 - mape: 117213.1094 - mse: 0.2379 - val_loss: 721377.7500 - val_mae: 0.2009 - val_mape: 721377.5625 - val_mse: 0.0811
Epoch 5/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 44624.1133 - mae: 0.3074 - mape: 44623.9531 - mse: 0.2058 - val_loss: 825303.6875 - val_mae: 0.2339 - val_mape: 825303.5625 - val_mse: 0.1084
Epoch 6/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 122742.0703 - mae: 0.2955 - mape: 122741.9062 - mse: 0.1917 - val_loss: 704744.6875 - val_mae: 0.2369 - val_mape: 704744.6250 - val_mse: 0.1089
Epoch 7/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 41907.5273 - mae: 0.2938 - mape: 41907.3672 - mse: 0.1903 - val_loss: 677079.3750 - val_mae: 0.2658 - val_mape: 677079.1250 - val_mse: 0.1285
Epoch 8/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 168460.6875 - mae: 0.2848 - mape: 168460.5156 - mse: 0.1745 - val_loss: 746470.1250 - val_mae: 0.2790 - val_mape: 746470.0625 - val_mse: 0.1385
Epoch 9/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 179066.5938 - mae: 0.2891 - mape: 179066.4531 - mse: 0.1823 - val_loss: 729591.0625 - val_mae: 0.2911 - val_mape: 729590.7500 - val_mse: 0.1453
Epoch 10/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 82393.2500 - mae: 0.2915 - mape: 82393.0938 - mse: 0.1830 - val_loss: 655406.5000 - val_mae: 0.2246 - val_mape: 655406.3125 - val_mse: 0.1032
Epoch 11/100
125/125 ━━━━━━━━━━━━━━━━━━━━ -0s -3446us/step - loss: 93366.2344 - mae: 0.2517 - mape: 93366.0625 - mse: 0.1456 - val_loss: 849202.0000 - val_mae: 0.2752 - val_mape: 849201.8125 - val_mse: 0.1401
Epoch 12/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 76427.8047 - mae: 0.2530 - mape: 76427.6641 - mse: 0.1517 - val_loss: 635197.5625 - val_mae: 0.2069 - val_mape: 635197.3125 - val_mse: 0.0920
Epoch 13/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 67490.4062 - mae: 0.2256 - mape: 67490.2422 - mse: 0.1176 - val_loss: 453179.0625 - val_mae: 0.2092 - val_mape: 453178.8125 - val_mse: 0.0860
Epoch 14/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 94276.4922 - mae: 0.2331 - mape: 94276.3438 - mse: 0.1238 - val_loss: 600652.2500 - val_mae: 0.1910 - val_mape: 600652.0625 - val_mse: 0.0791
Epoch 15/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 28763.2246 - mae: 0.2179 - mape: 28763.0684 - mse: 0.1092 - val_loss: 499725.6250 - val_mae: 0.1904 - val_mape: 499725.5625 - val_mse: 0.0759
Epoch 16/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 123337.3125 - mae: 0.2109 - mape: 123337.1484 - mse: 0.1056 - val_loss: 654427.5625 - val_mae: 0.2204 - val_mape: 654427.4375 - val_mse: 0.0922
Epoch 17/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 22606.0703 - mae: 0.2166 - mape: 22605.9180 - mse: 0.1070 - val_loss: 408666.2812 - val_mae: 0.1880 - val_mape: 408666.1875 - val_mse: 0.0694
Epoch 18/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 90803.9141 - mae: 0.2021 - mape: 90803.7422 - mse: 0.0938 - val_loss: 604606.3750 - val_mae: 0.2115 - val_mape: 604606.2500 - val_mse: 0.0852
Epoch 19/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 58546.7344 - mae: 0.1990 - mape: 58546.5859 - mse: 0.0976 - val_loss: 452555.0000 - val_mae: 0.1817 - val_mape: 452554.8438 - val_mse: 0.0695
Epoch 20/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 121612.3906 - mae: 0.1891 - mape: 121612.2422 - mse: 0.0862 - val_loss: 503079.6875 - val_mae: 0.1814 - val_mape: 503079.4375 - val_mse: 0.0662
Epoch 21/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 41275.7773 - mae: 0.1722 - mape: 41275.6094 - mse: 0.0713 - val_loss: 453008.3750 - val_mae: 0.1585 - val_mape: 453008.2812 - val_mse: 0.0559
Epoch 22/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 47831.7109 - mae: 0.1617 - mape: 47831.5430 - mse: 0.0675 - val_loss: 343917.8750 - val_mae: 0.1604 - val_mape: 343917.7188 - val_mse: 0.0524
Epoch 23/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 54873.6055 - mae: 0.1649 - mape: 54873.4453 - mse: 0.0646 - val_loss: 279330.2500 - val_mae: 0.1217 - val_mape: 279330.1250 - val_mse: 0.0375
Epoch 24/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 33269.3203 - mae: 0.1394 - mape: 33269.1641 - mse: 0.0506 - val_loss: 303181.6562 - val_mae: 0.1311 - val_mape: 303181.5000 - val_mse: 0.0404
Epoch 25/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 19278.9043 - mae: 0.1446 - mape: 19278.7461 - mse: 0.0524 - val_loss: 310704.6875 - val_mae: 0.1267 - val_mape: 310704.5000 - val_mse: 0.0388
Epoch 26/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 67228.6406 - mae: 0.1463 - mape: 67228.5000 - mse: 0.0537 - val_loss: 313443.6875 - val_mae: 0.1272 - val_mape: 313443.5938 - val_mse: 0.0397
Epoch 27/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 36226.6406 - mae: 0.1353 - mape: 36226.4883 - mse: 0.0493 - val_loss: 222750.2344 - val_mae: 0.1397 - val_mape: 222750.1562 - val_mse: 0.0396
Epoch 28/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 38480.4414 - mae: 0.1271 - mape: 38480.2812 - mse: 0.0436 - val_loss: 162034.3125 - val_mae: 0.1039 - val_mape: 162034.1406 - val_mse: 0.0275
Epoch 29/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 57067.0547 - mae: 0.1182 - mape: 57066.9062 - mse: 0.0379 - val_loss: 181398.3438 - val_mae: 0.1046 - val_mape: 181398.2500 - val_mse: 0.0270
Epoch 30/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 35130.3789 - mae: 0.1145 - mape: 35130.2266 - mse: 0.0348 - val_loss: 144381.9219 - val_mae: 0.0925 - val_mape: 144381.8281 - val_mse: 0.0227
Epoch 31/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 17375.1797 - mae: 0.1147 - mape: 17375.0293 - mse: 0.0335 - val_loss: 112998.0547 - val_mae: 0.0899 - val_mape: 112997.8906 - val_mse: 0.0187
Epoch 32/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 70349.8516 - mae: 0.1104 - mape: 70349.6797 - mse: 0.0302 - val_loss: 120132.1094 - val_mae: 0.0855 - val_mape: 120131.9297 - val_mse: 0.0178
Epoch 33/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 11055.8877 - mae: 0.0989 - mape: 11055.7324 - mse: 0.0246 - val_loss: 88847.1094 - val_mae: 0.0968 - val_mape: 88846.9531 - val_mse: 0.0168
Epoch 34/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 22560.3867 - mae: 0.1166 - mape: 22560.2324 - mse: 0.0262 - val_loss: 105880.3203 - val_mae: 0.0842 - val_mape: 105880.2109 - val_mse: 0.0154
Epoch 35/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 17381.7656 - mae: 0.0967 - mape: 17381.6133 - mse: 0.0220 - val_loss: 90236.3672 - val_mae: 0.0829 - val_mape: 90236.2266 - val_mse: 0.0150
Epoch 36/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 46198.6250 - mae: 0.1010 - mape: 46198.4727 - mse: 0.0251 - val_loss: 98126.6172 - val_mae: 0.0749 - val_mape: 98126.4922 - val_mse: 0.0152
Epoch 37/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 19080.6777 - mae: 0.0948 - mape: 19080.5215 - mse: 0.0241 - val_loss: 88440.5859 - val_mae: 0.0702 - val_mape: 88440.4609 - val_mse: 0.0137
Epoch 38/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 40876.3828 - mae: 0.0902 - mape: 40876.2344 - mse: 0.0226 - val_loss: 88942.4844 - val_mae: 0.0799 - val_mape: 88942.3203 - val_mse: 0.0162
Epoch 39/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 14921.6709 - mae: 0.0901 - mape: 14921.5176 - mse: 0.0228 - val_loss: 57447.8477 - val_mae: 0.0653 - val_mape: 57447.6914 - val_mse: 0.0120
Epoch 40/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 33586.1641 - mae: 0.0828 - mape: 33586.0117 - mse: 0.0195 - val_loss: 118744.5156 - val_mae: 0.0782 - val_mape: 118744.3516 - val_mse: 0.0152
Epoch 41/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 34066.3906 - mae: 0.0871 - mape: 34066.2344 - mse: 0.0191 - val_loss: 67893.8906 - val_mae: 0.0676 - val_mape: 67893.7422 - val_mse: 0.0132
Epoch 42/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 24200.5625 - mae: 0.0772 - mape: 24200.4043 - mse: 0.0172 - val_loss: 90008.4688 - val_mae: 0.0632 - val_mape: 90008.2734 - val_mse: 0.0115
Epoch 43/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 12868.0498 - mae: 0.0786 - mape: 12867.8984 - mse: 0.0175 - val_loss: 61236.3398 - val_mae: 0.0580 - val_mape: 61236.1719 - val_mse: 0.0106
Epoch 44/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 31656.3809 - mae: 0.0767 - mape: 31656.2363 - mse: 0.0159 - val_loss: 66020.3906 - val_mae: 0.0628 - val_mape: 66020.2266 - val_mse: 0.0107
Epoch 45/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 116794.4141 - mae: 0.0694 - mape: 116794.2812 - mse: 0.0144 - val_loss: 38555.9141 - val_mae: 0.0522 - val_mape: 38555.7539 - val_mse: 0.0079
Epoch 46/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 24729.8301 - mae: 0.0651 - mape: 24729.6816 - mse: 0.0126 - val_loss: 13860.0645 - val_mae: 0.0598 - val_mape: 13859.9082 - val_mse: 0.0071
Epoch 47/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 33641.3320 - mae: 0.0622 - mape: 33641.1758 - mse: 0.0109 - val_loss: 37908.4688 - val_mae: 0.0486 - val_mape: 37908.3242 - val_mse: 0.0076
Epoch 48/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 10644.5527 - mae: 0.0587 - mape: 10644.3994 - mse: 0.0112 - val_loss: 24264.8770 - val_mae: 0.0445 - val_mape: 24264.7285 - val_mse: 0.0069
Epoch 49/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 14956.1465 - mae: 0.0584 - mape: 14955.9941 - mse: 0.0099 - val_loss: 18862.5859 - val_mae: 0.0439 - val_mape: 18862.4336 - val_mse: 0.0064
Epoch 50/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 12950.6963 - mae: 0.0529 - mape: 12950.5430 - mse: 0.0090 - val_loss: 48645.1055 - val_mae: 0.0561 - val_mape: 48644.9570 - val_mse: 0.0080
Epoch 51/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 6694.0757 - mae: 0.0496 - mape: 6693.9243 - mse: 0.0082 - val_loss: 49652.0391 - val_mae: 0.0580 - val_mape: 49651.8984 - val_mse: 0.0078
Epoch 52/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 13270.7529 - mae: 0.0498 - mape: 13270.5986 - mse: 0.0083 - val_loss: 38531.5625 - val_mae: 0.0523 - val_mape: 38531.3984 - val_mse: 0.0066
Epoch 53/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 38455.2852 - mae: 0.0539 - mape: 38455.1289 - mse: 0.0092 - val_loss: 8157.0732 - val_mae: 0.0375 - val_mape: 8156.9219 - val_mse: 0.0048
Epoch 54/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 7338.8813 - mae: 0.0453 - mape: 7338.7290 - mse: 0.0068 - val_loss: 26504.2148 - val_mae: 0.0476 - val_mape: 26504.0508 - val_mse: 0.0054
Epoch 55/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 8684.5791 - mae: 0.0470 - mape: 8684.4287 - mse: 0.0066 - val_loss: 6123.9741 - val_mae: 0.0324 - val_mape: 6123.8237 - val_mse: 0.0035
Epoch 56/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 7401.0190 - mae: 0.0408 - mape: 7400.8672 - mse: 0.0050 - val_loss: 5105.1680 - val_mae: 0.0273 - val_mape: 5105.0156 - val_mse: 0.0024
Epoch 57/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 16819.4902 - mae: 0.0428 - mape: 16819.3359 - mse: 0.0052 - val_loss: 15295.8418 - val_mae: 0.0264 - val_mape: 15295.6904 - val_mse: 0.0023
Epoch 58/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 8648.0527 - mae: 0.0347 - mape: 8647.8984 - mse: 0.0041 - val_loss: 22387.7793 - val_mae: 0.0269 - val_mape: 22387.6309 - val_mse: 0.0019
Epoch 59/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 8210.2100 - mae: 0.0340 - mape: 8210.0557 - mse: 0.0035 - val_loss: 28264.0195 - val_mae: 0.0295 - val_mape: 28263.8594 - val_mse: 0.0018
Epoch 60/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 10738.5283 - mae: 0.0353 - mape: 10738.3750 - mse: 0.0036 - val_loss: 6482.4751 - val_mae: 0.0208 - val_mape: 6482.3232 - val_mse: 0.0015
Epoch 61/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 14129.9033 - mae: 0.0286 - mape: 14129.7520 - mse: 0.0027 - val_loss: 4804.9517 - val_mae: 0.0208 - val_mape: 4804.7983 - val_mse: 0.0014
Epoch 62/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 3805.5110 - mae: 0.0281 - mape: 3805.3589 - mse: 0.0028 - val_loss: 12378.7852 - val_mae: 0.0225 - val_mape: 12378.6348 - val_mse: 0.0014
Epoch 63/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 16930.4043 - mae: 0.0273 - mape: 16930.2539 - mse: 0.0025 - val_loss: 5990.0854 - val_mae: 0.0177 - val_mape: 5989.9331 - val_mse: 0.0010
Epoch 64/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 5164.4067 - mae: 0.0230 - mape: 5164.2549 - mse: 0.0017 - val_loss: 12055.7871 - val_mae: 0.0218 - val_mape: 12055.6357 - val_mse: 0.0012
Epoch 65/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 8214.7236 - mae: 0.0227 - mape: 8214.5732 - mse: 0.0017 - val_loss: 7997.6631 - val_mae: 0.0153 - val_mape: 7997.5098 - val_mse: 8.0448e-04
Epoch 66/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 3209.2861 - mae: 0.0212 - mape: 3209.1343 - mse: 0.0016 - val_loss: 3494.8618 - val_mae: 0.0144 - val_mape: 3494.7107 - val_mse: 6.5925e-04
Epoch 67/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 11125.5117 - mae: 0.0219 - mape: 11125.3584 - mse: 0.0016 - val_loss: 16327.5596 - val_mae: 0.0165 - val_mape: 16327.4082 - val_mse: 6.2175e-04
Epoch 68/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 3365.1118 - mae: 0.0256 - mape: 3364.9604 - mse: 0.0012 - val_loss: 4933.0615 - val_mae: 0.0137 - val_mape: 4932.9102 - val_mse: 5.4238e-04
Epoch 69/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 7450.9263 - mae: 0.0209 - mape: 7450.7754 - mse: 0.0010 - val_loss: 7070.6064 - val_mae: 0.0155 - val_mape: 7070.4551 - val_mse: 5.9633e-04
Epoch 70/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 3324.6860 - mae: 0.0165 - mape: 3324.5361 - mse: 7.2705e-04 - val_loss: 2723.4763 - val_mae: 0.0122 - val_mape: 2723.3250 - val_mse: 4.7171e-04
Epoch 71/100
125/125 ━━━━━━━━━━━━━━━━━━━━ -0s -3040us/step - loss: 12587.9551 - mae: 0.0172 - mape: 12587.8047 - mse: 6.7328e-04 - val_loss: 16459.7109 - val_mae: 0.0156 - val_mape: 16459.5605 - val_mse: 4.6517e-04
Epoch 72/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 3833.2776 - mae: 0.0231 - mape: 3833.1265 - mse: 8.2999e-04 - val_loss: 11549.9736 - val_mae: 0.0128 - val_mape: 11549.8232 - val_mse: 3.8479e-04
Epoch 73/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 2320.3433 - mae: 0.0146 - mape: 2320.1931 - mse: 5.1530e-04 - val_loss: 9950.6719 - val_mae: 0.0118 - val_mape: 9950.5244 - val_mse: 3.4504e-04
Epoch 74/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 6134.4985 - mae: 0.0142 - mape: 6134.3481 - mse: 5.2603e-04 - val_loss: 8493.6670 - val_mae: 0.0121 - val_mape: 8493.5166 - val_mse: 3.5516e-04
Epoch 75/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 2576.2722 - mae: 0.0142 - mape: 2576.1211 - mse: 5.3559e-04 - val_loss: 6179.8413 - val_mae: 0.0120 - val_mape: 6179.6943 - val_mse: 3.5101e-04
Epoch 76/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 6562.6943 - mae: 0.0137 - mape: 6562.5439 - mse: 4.2567e-04 - val_loss: 6502.1128 - val_mae: 0.0123 - val_mape: 6501.9614 - val_mse: 3.4598e-04
Epoch 77/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 4062.5571 - mae: 0.0118 - mape: 4062.4065 - mse: 3.9213e-04 - val_loss: 4549.8467 - val_mae: 0.0090 - val_mape: 4549.6963 - val_mse: 2.5398e-04
Epoch 78/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 3816.1213 - mae: 0.0114 - mape: 3815.9709 - mse: 2.9033e-04 - val_loss: 2981.0078 - val_mae: 0.0096 - val_mape: 2980.8577 - val_mse: 2.4738e-04
Epoch 79/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 3011.2185 - mae: 0.0115 - mape: 3011.0686 - mse: 3.0034e-04 - val_loss: 6339.9185 - val_mae: 0.0090 - val_mape: 6339.7676 - val_mse: 2.2891e-04
Epoch 80/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 2956.1257 - mae: 0.0122 - mape: 2955.9753 - mse: 2.9780e-04 - val_loss: 3772.2683 - val_mae: 0.0089 - val_mape: 3772.1177 - val_mse: 2.2610e-04
Epoch 81/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 6966.1538 - mae: 0.0101 - mape: 6966.0034 - mse: 2.6531e-04 - val_loss: 918.1699 - val_mae: 0.0084 - val_mape: 918.0201 - val_mse: 2.1450e-04
Epoch 82/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 6848.1021 - mae: 0.0104 - mape: 6847.9521 - mse: 2.6864e-04 - val_loss: 9246.9873 - val_mae: 0.0127 - val_mape: 9246.8369 - val_mse: 3.0963e-04
Epoch 83/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1004.1231 - mae: 0.0122 - mape: 1003.9734 - mse: 3.1832e-04 - val_loss: 6319.6704 - val_mae: 0.0127 - val_mape: 6319.5210 - val_mse: 3.0992e-04
Epoch 84/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 5233.0537 - mae: 0.0149 - mape: 5232.9038 - mse: 3.8835e-04 - val_loss: 5507.0264 - val_mae: 0.0100 - val_mape: 5506.8774 - val_mse: 2.3345e-04
Epoch 85/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 2667.0823 - mae: 0.0100 - mape: 2666.9321 - mse: 2.4526e-04 - val_loss: 1832.7743 - val_mae: 0.0079 - val_mape: 1832.6237 - val_mse: 1.9526e-04
Epoch 86/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 2378.3706 - mae: 0.0102 - mape: 2378.2207 - mse: 2.5718e-04 - val_loss: 3821.2263 - val_mae: 0.0096 - val_mape: 3821.0757 - val_mse: 2.2266e-04
Epoch 87/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 3576.0735 - mae: 0.0150 - mape: 3575.9238 - mse: 3.9378e-04 - val_loss: 16289.0898 - val_mae: 0.0146 - val_mape: 16288.9414 - val_mse: 3.5247e-04
Epoch 88/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 7775.7412 - mae: 0.0146 - mape: 7775.5923 - mse: 3.8098e-04 - val_loss: 6090.3516 - val_mae: 0.0097 - val_mape: 6090.2007 - val_mse: 2.2091e-04
Epoch 89/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1160.0791 - mae: 0.0103 - mape: 1159.9285 - mse: 2.1071e-04 - val_loss: 1316.5311 - val_mae: 0.0088 - val_mape: 1316.3813 - val_mse: 2.0739e-04
Epoch 90/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1311.2094 - mae: 0.0114 - mape: 1311.0592 - mse: 2.5083e-04 - val_loss: 5275.4287 - val_mae: 0.0093 - val_mape: 5275.2773 - val_mse: 2.1154e-04
Epoch 91/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 925.2780 - mae: 0.0104 - mape: 925.1276 - mse: 2.2589e-04 - val_loss: 992.3976 - val_mae: 0.0098 - val_mape: 992.2476 - val_mse: 2.4927e-04
Epoch 92/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 2863.3296 - mae: 0.0115 - mape: 2863.1807 - mse: 2.6520e-04 - val_loss: 5355.2861 - val_mae: 0.0085 - val_mape: 5355.1382 - val_mse: 1.9134e-04
Epoch 93/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 917.8322 - mae: 0.0096 - mape: 917.6823 - mse: 1.9647e-04 - val_loss: 1310.8267 - val_mae: 0.0088 - val_mape: 1310.6766 - val_mse: 2.0062e-04
Epoch 94/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 3293.9521 - mae: 0.0135 - mape: 3293.8018 - mse: 3.4343e-04 - val_loss: 17240.0059 - val_mae: 0.0163 - val_mape: 17239.8516 - val_mse: 3.8690e-04
Epoch 95/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 7715.4517 - mae: 0.0139 - mape: 7715.3008 - mse: 3.0592e-04 - val_loss: 6746.0005 - val_mae: 0.0093 - val_mape: 6745.8511 - val_mse: 2.0606e-04
Epoch 96/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1313.6979 - mae: 0.0099 - mape: 1313.5482 - mse: 2.1934e-04 - val_loss: 3418.0898 - val_mae: 0.0081 - val_mape: 3417.9402 - val_mse: 1.8004e-04
Epoch 97/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1343.1134 - mae: 0.0088 - mape: 1342.9636 - mse: 1.7150e-04 - val_loss: 1775.1538 - val_mae: 0.0076 - val_mape: 1775.0040 - val_mse: 1.7236e-04
Epoch 98/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 2375.5510 - mae: 0.0106 - mape: 2375.4014 - mse: 2.1992e-04 - val_loss: 1912.3787 - val_mae: 0.0076 - val_mape: 1912.2295 - val_mse: 1.7067e-04
Epoch 99/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 693.1228 - mae: 0.0093 - mape: 692.9731 - mse: 1.7905e-04 - val_loss: 3139.8396 - val_mae: 0.0081 - val_mape: 3139.6904 - val_mse: 1.8086e-04
Epoch 100/100
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 2893.7549 - mae: 0.0096 - mape: 2893.6055 - mse: 1.9206e-04 - val_loss: 529.8143 - val_mae: 0.0074 - val_mape: 529.6647 - val_mse: 1.6843e-04

historyC.history.keys()
dict_keys(['loss', 'mae', 'mape', 'mse', 'val_loss', 'val_mae', 'val_mape', 'val_mse'])
plt.plot(historyC.history['loss'])
plt.plot(historyC.history['val_loss'])
plt.title('model loss')
plt.show()

plt.plot(historyC.history['mae'])
plt.plot(historyC.history['val_mae'])
plt.title('mae loss')
plt.show()

plt.plot(historyC.history['mape'])
plt.plot(historyC.history['val_mape'])
plt.title('mae loss')
plt.show()

plt.plot(historyC.history['mse'])
plt.plot(historyC.history['val_mse'])
plt.title('mae loss')
plt.show()
Visualization
Visualization
Visualization
Visualization
modelC.evaluate({'datetime_input': modelC_input_datetime_test, 'price_input': modelC_input_price_test}, modelC_output_test, return_dict=True)
33/33 ━━━━━━━━━━━━━━━━━━━━ 0s 14ms/step - loss: 150.0849 - mae: 0.0077 - mape: 149.9353 - mse: 1.1089e-04
{'loss': 161.67189025878906,
 'mae': 0.0076824515126645565,
 'mape': 161.52232360839844,
 'mse': 0.00011036694195354357}
predictionC = modelC.predict({'datetime_input': modelC_input_datetime_test, 'price_input': modelC_input_price_test})
print(predictionC)
plt.plot(modelC_output[-len(predictionC):])
plt.plot(predictionC)
33/33 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step
[[ 0.00032689]
 [-0.00336592]
 [ 0.00426118]
 ...
 [ 0.00039666]
 [ 0.00031809]
 [-0.00877421]]
[<matplotlib.lines.Line2D at 0x7f08e4e2cfd0>]
Visualization
modelC.compile(
    optimizer='adam', 
    loss='mape', 
    metrics=['mae', 'mse', 'mape']
)

historyC = modelC.fit(
    {'datetime_input': modelC_input_datetime_train, 'price_input': modelC_input_price_train}, modelC_output_train,
    validation_data=({'datetime_input': modelC_input_datetime_valid, 'price_input': modelC_input_price_valid}, modelC_output_valid),
    epochs=30, batch_size=32
) 
Epoch 1/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 4s 12ms/step - loss: 719.0024 - mae: 0.0092 - mape: 718.8616 - mse: 1.8068e-04 - val_loss: 7448.1191 - val_mae: 0.0104 - val_mape: 7447.9951 - val_mse: 2.1768e-04
Epoch 2/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 4915.1743 - mae: 0.0121 - mape: 4915.0527 - mse: 2.4944e-04 - val_loss: 15045.2646 - val_mae: 0.0131 - val_mape: 15045.1494 - val_mse: 3.0562e-04
Epoch 3/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 2330.3416 - mae: 0.0129 - mape: 2330.2271 - mse: 2.8739e-04 - val_loss: 1773.0826 - val_mae: 0.0082 - val_mape: 1772.9720 - val_mse: 1.8096e-04
Epoch 4/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1111.0969 - mae: 0.0108 - mape: 1110.9868 - mse: 2.2966e-04 - val_loss: 16599.9160 - val_mae: 0.0163 - val_mape: 16599.8105 - val_mse: 4.0148e-04
Epoch 5/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 4054.8652 - mae: 0.0174 - mape: 4054.7581 - mse: 4.4292e-04 - val_loss: 8889.0781 - val_mae: 0.0100 - val_mape: 8888.9668 - val_mse: 2.3467e-04
Epoch 6/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1064.3174 - mae: 0.0101 - mape: 1064.2118 - mse: 2.0368e-04 - val_loss: 1753.9617 - val_mae: 0.0089 - val_mape: 1753.8563 - val_mse: 1.8952e-04
Epoch 7/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 4043.2524 - mae: 0.0097 - mape: 4043.1470 - mse: 1.8106e-04 - val_loss: 3894.6296 - val_mae: 0.0083 - val_mape: 3894.5244 - val_mse: 1.8375e-04
Epoch 8/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1755.5315 - mae: 0.0104 - mape: 1755.4277 - mse: 2.1348e-04 - val_loss: 10900.4160 - val_mae: 0.0150 - val_mape: 10900.3135 - val_mse: 3.5170e-04
Epoch 9/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 4667.3203 - mae: 0.0140 - mape: 4667.2173 - mse: 3.1409e-04 - val_loss: 11958.1543 - val_mae: 0.0168 - val_mape: 11958.0498 - val_mse: 4.3213e-04
Epoch 10/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1695.9280 - mae: 0.0156 - mape: 1695.8248 - mse: 3.8921e-04 - val_loss: 3396.7910 - val_mae: 0.0105 - val_mape: 3396.6875 - val_mse: 2.4677e-04
Epoch 11/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 14477.6592 - mae: 0.0131 - mape: 14477.5547 - mse: 3.0720e-04 - val_loss: 13247.4961 - val_mae: 0.0122 - val_mape: 13247.3916 - val_mse: 2.7355e-04
Epoch 12/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 4894.4580 - mae: 0.0106 - mape: 4894.3560 - mse: 2.0962e-04 - val_loss: 9636.0312 - val_mae: 0.0104 - val_mape: 9635.9258 - val_mse: 2.2821e-04
Epoch 13/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1808.2574 - mae: 0.0115 - mape: 1808.1547 - mse: 2.4250e-04 - val_loss: 9887.3848 - val_mae: 0.0140 - val_mape: 9887.2793 - val_mse: 3.1644e-04
Epoch 14/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 10380.0020 - mae: 0.0121 - mape: 10379.8994 - mse: 2.6241e-04 - val_loss: 7165.2915 - val_mae: 0.0089 - val_mape: 7165.1860 - val_mse: 1.9682e-04
Epoch 15/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1478.2430 - mae: 0.0104 - mape: 1478.1401 - mse: 2.1320e-04 - val_loss: 417.2180 - val_mae: 0.0078 - val_mape: 417.1148 - val_mse: 1.7369e-04
Epoch 16/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1662.2272 - mae: 0.0088 - mape: 1662.1241 - mse: 1.6211e-04 - val_loss: 6369.6177 - val_mae: 0.0100 - val_mape: 6369.5137 - val_mse: 2.2487e-04
Epoch 17/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 2224.0671 - mae: 0.0111 - mape: 2223.9639 - mse: 2.3298e-04 - val_loss: 2006.7623 - val_mae: 0.0075 - val_mape: 2006.6586 - val_mse: 1.6940e-04
Epoch 18/30
125/125 ━━━━━━━━━━━━━━━━━━━━ -0s -3102us/step - loss: 317.7734 - mae: 0.0083 - mape: 317.6703 - mse: 1.5184e-04 - val_loss: 8074.2300 - val_mae: 0.0093 - val_mape: 8074.1245 - val_mse: 2.0442e-04
Epoch 19/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1814.1514 - mae: 0.0099 - mape: 1814.0481 - mse: 1.8808e-04 - val_loss: 2252.0859 - val_mae: 0.0076 - val_mape: 2251.9834 - val_mse: 1.7225e-04
Epoch 20/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 872.9223 - mae: 0.0089 - mape: 872.8192 - mse: 1.6085e-04 - val_loss: 1253.3174 - val_mae: 0.0091 - val_mape: 1253.2139 - val_mse: 1.9826e-04
Epoch 21/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 949.1792 - mae: 0.0098 - mape: 949.0758 - mse: 1.8727e-04 - val_loss: 2490.6189 - val_mae: 0.0075 - val_mape: 2490.5164 - val_mse: 1.6960e-04
Epoch 22/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 2570.2439 - mae: 0.0091 - mape: 2570.1414 - mse: 1.6368e-04 - val_loss: 630.7140 - val_mae: 0.0076 - val_mape: 630.6116 - val_mse: 1.7171e-04
Epoch 23/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 332.4747 - mae: 0.0086 - mape: 332.3724 - mse: 1.6013e-04 - val_loss: 7694.4683 - val_mae: 0.0103 - val_mape: 7694.3652 - val_mse: 2.1263e-04
Epoch 24/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1137.8124 - mae: 0.0089 - mape: 1137.7103 - mse: 1.6231e-04 - val_loss: 268.6172 - val_mae: 0.0080 - val_mape: 268.5153 - val_mse: 1.7579e-04
Epoch 25/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1242.5237 - mae: 0.0087 - mape: 1242.4216 - mse: 1.5735e-04 - val_loss: 868.8937 - val_mae: 0.0087 - val_mape: 868.7919 - val_mse: 1.9450e-04
Epoch 26/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 4462.9863 - mae: 0.0098 - mape: 4462.8853 - mse: 2.0358e-04 - val_loss: 637.8745 - val_mae: 0.0079 - val_mape: 637.7728 - val_mse: 1.7570e-04
Epoch 27/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 609.0927 - mae: 0.0087 - mape: 608.9910 - mse: 1.6356e-04 - val_loss: 1270.0328 - val_mae: 0.0079 - val_mape: 1269.9313 - val_mse: 1.7604e-04
Epoch 28/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 399.9176 - mae: 0.0091 - mape: 399.8159 - mse: 1.7357e-04 - val_loss: 5373.9927 - val_mae: 0.0092 - val_mape: 5373.8921 - val_mse: 1.9442e-04
Epoch 29/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1379.8468 - mae: 0.0092 - mape: 1379.7446 - mse: 1.8082e-04 - val_loss: 204.3456 - val_mae: 0.0075 - val_mape: 204.2434 - val_mse: 1.6945e-04
Epoch 30/30
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 714.0525 - mae: 0.0084 - mape: 713.9504 - mse: 1.5495e-04 - val_loss: 883.9772 - val_mae: 0.0078 - val_mape: 883.8753 - val_mse: 1.7156e-04

plt.plot(historyC.history['loss'])
plt.plot(historyC.history['val_loss'])
plt.title('model loss')
plt.show()

plt.plot(historyC.history['mae'])
plt.plot(historyC.history['val_mae'])
plt.title('mae loss')
plt.show()

plt.plot(historyC.history['mape'])
plt.plot(historyC.history['val_mape'])
plt.title('mae loss')
plt.show()

plt.plot(historyC.history['mse'])
plt.plot(historyC.history['val_mse'])
plt.title('mae loss')
plt.show()
Visualization
Visualization
Visualization
Visualization
predictionC = modelC.predict({'datetime_input': modelC_input_datetime_test, 'price_input': modelC_input_price_test})
plt.plot(modelC_output[-len(predictionC):])
plt.plot(predictionC)
33/33 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step
[<matplotlib.lines.Line2D at 0x7f089f4c5490>]
Visualization
modelC.compile(
    optimizer='sgd', 
    loss='mse', 
    metrics=['mae', 'mse', 'mape']
)

historyC = modelC.fit(
    {'datetime_input': modelC_input_datetime_train, 'price_input': modelC_input_price_train}, modelC_output_train,
    validation_data=({'datetime_input': modelC_input_datetime_valid, 'price_input': modelC_input_price_valid}, modelC_output_valid),
    epochs=50, batch_size=64
) 
Epoch 1/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 5s 39ms/step - loss: 0.1013 - mae: 0.0080 - mape: 366.2579 - mse: 1.4016e-04 - val_loss: 0.0994 - val_mae: 0.0076 - val_mape: 304.0722 - val_mse: 1.6899e-04
Epoch 2/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0988 - mae: 0.0083 - mape: 939.5847 - mse: 1.5595e-04 - val_loss: 0.0970 - val_mae: 0.0075 - val_mape: 486.0417 - val_mse: 1.6846e-04
Epoch 3/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0964 - mae: 0.0084 - mape: 268.8655 - mse: 1.6289e-04 - val_loss: 0.0946 - val_mae: 0.0075 - val_mape: 494.9086 - val_mse: 1.6823e-04
Epoch 4/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0940 - mae: 0.0082 - mape: 459.1048 - mse: 1.4907e-04 - val_loss: 0.0922 - val_mae: 0.0075 - val_mape: 515.6346 - val_mse: 1.6805e-04
Epoch 5/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0916 - mae: 0.0083 - mape: 491.5537 - mse: 1.6369e-04 - val_loss: 0.0899 - val_mae: 0.0075 - val_mape: 427.3191 - val_mse: 1.6798e-04
Epoch 6/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0893 - mae: 0.0082 - mape: 289.4379 - mse: 1.5337e-04 - val_loss: 0.0877 - val_mae: 0.0075 - val_mape: 384.4210 - val_mse: 1.6791e-04
Epoch 7/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0871 - mae: 0.0086 - mape: 591.7212 - mse: 1.7014e-04 - val_loss: 0.0855 - val_mae: 0.0075 - val_mape: 326.4901 - val_mse: 1.6787e-04
Epoch 8/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0850 - mae: 0.0081 - mape: 387.9969 - mse: 1.4781e-04 - val_loss: 0.0834 - val_mae: 0.0075 - val_mape: 285.7696 - val_mse: 1.6781e-04
Epoch 9/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0829 - mae: 0.0084 - mape: 538.6804 - mse: 1.5764e-04 - val_loss: 0.0813 - val_mae: 0.0074 - val_mape: 319.1194 - val_mse: 1.6772e-04
Epoch 10/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0808 - mae: 0.0080 - mape: 675.0651 - mse: 1.3390e-04 - val_loss: 0.0793 - val_mae: 0.0074 - val_mape: 298.2249 - val_mse: 1.6770e-04
Epoch 11/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 0.0788 - mae: 0.0083 - mape: 188.2140 - mse: 1.5618e-04 - val_loss: 0.0773 - val_mae: 0.0075 - val_mape: 210.6106 - val_mse: 1.6772e-04
Epoch 12/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0768 - mae: 0.0083 - mape: 630.0618 - mse: 1.5862e-04 - val_loss: 0.0754 - val_mae: 0.0074 - val_mape: 216.7799 - val_mse: 1.6769e-04
Epoch 13/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0749 - mae: 0.0081 - mape: 144.9830 - mse: 1.4735e-04 - val_loss: 0.0735 - val_mae: 0.0074 - val_mape: 192.3779 - val_mse: 1.6767e-04
Epoch 14/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0731 - mae: 0.0081 - mape: 177.7827 - mse: 1.4964e-04 - val_loss: 0.0717 - val_mae: 0.0074 - val_mape: 235.5659 - val_mse: 1.6763e-04
Epoch 15/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0712 - mae: 0.0080 - mape: 414.8909 - mse: 1.4100e-04 - val_loss: 0.0699 - val_mae: 0.0074 - val_mape: 196.2958 - val_mse: 1.6761e-04
Epoch 16/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0695 - mae: 0.0081 - mape: 201.4917 - mse: 1.4319e-04 - val_loss: 0.0682 - val_mae: 0.0074 - val_mape: 142.1624 - val_mse: 1.6762e-04
Epoch 17/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0678 - mae: 0.0085 - mape: 184.8457 - mse: 1.6052e-04 - val_loss: 0.0665 - val_mae: 0.0075 - val_mape: 181.7871 - val_mse: 1.6768e-04
Epoch 18/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0661 - mae: 0.0082 - mape: 356.7379 - mse: 1.5416e-04 - val_loss: 0.0648 - val_mae: 0.0075 - val_mape: 145.7760 - val_mse: 1.6765e-04
Epoch 19/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0644 - mae: 0.0081 - mape: 245.2079 - mse: 1.4836e-04 - val_loss: 0.0632 - val_mae: 0.0074 - val_mape: 140.7228 - val_mse: 1.6760e-04
Epoch 20/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0628 - mae: 0.0083 - mape: 161.7989 - mse: 1.4909e-04 - val_loss: 0.0617 - val_mae: 0.0074 - val_mape: 215.6209 - val_mse: 1.6753e-04
Epoch 21/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0613 - mae: 0.0082 - mape: 273.4034 - mse: 1.5034e-04 - val_loss: 0.0601 - val_mae: 0.0074 - val_mape: 138.3112 - val_mse: 1.6758e-04
Epoch 22/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0597 - mae: 0.0080 - mape: 337.3200 - mse: 1.5194e-04 - val_loss: 0.0586 - val_mae: 0.0074 - val_mape: 319.5380 - val_mse: 1.6744e-04
Epoch 23/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0583 - mae: 0.0083 - mape: 146.3833 - mse: 1.6447e-04 - val_loss: 0.0572 - val_mae: 0.0074 - val_mape: 347.2429 - val_mse: 1.6742e-04
Epoch 24/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0568 - mae: 0.0081 - mape: 286.5120 - mse: 1.4042e-04 - val_loss: 0.0558 - val_mae: 0.0074 - val_mape: 189.1178 - val_mse: 1.6752e-04
Epoch 25/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0554 - mae: 0.0081 - mape: 137.4382 - mse: 1.5032e-04 - val_loss: 0.0544 - val_mae: 0.0074 - val_mape: 279.1919 - val_mse: 1.6745e-04
Epoch 26/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0540 - mae: 0.0084 - mape: 138.6604 - mse: 1.4890e-04 - val_loss: 0.0530 - val_mae: 0.0074 - val_mape: 342.6252 - val_mse: 1.6740e-04
Epoch 27/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0527 - mae: 0.0082 - mape: 162.6878 - mse: 1.4791e-04 - val_loss: 0.0517 - val_mae: 0.0074 - val_mape: 336.0443 - val_mse: 1.6740e-04
Epoch 28/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0514 - mae: 0.0082 - mape: 129.7441 - mse: 1.5959e-04 - val_loss: 0.0504 - val_mae: 0.0074 - val_mape: 364.9286 - val_mse: 1.6739e-04
Epoch 29/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0501 - mae: 0.0084 - mape: 209.6067 - mse: 1.5779e-04 - val_loss: 0.0492 - val_mae: 0.0074 - val_mape: 357.3193 - val_mse: 1.6739e-04
Epoch 30/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 0.0489 - mae: 0.0082 - mape: 530.0156 - mse: 1.5284e-04 - val_loss: 0.0480 - val_mae: 0.0074 - val_mape: 301.6636 - val_mse: 1.6742e-04
Epoch 31/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0477 - mae: 0.0081 - mape: 211.2270 - mse: 1.4970e-04 - val_loss: 0.0468 - val_mae: 0.0074 - val_mape: 289.3857 - val_mse: 1.6743e-04
Epoch 32/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0465 - mae: 0.0080 - mape: 203.2302 - mse: 1.3934e-04 - val_loss: 0.0456 - val_mae: 0.0074 - val_mape: 288.3865 - val_mse: 1.6744e-04
Epoch 33/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0453 - mae: 0.0081 - mape: 148.2205 - mse: 1.4427e-04 - val_loss: 0.0445 - val_mae: 0.0074 - val_mape: 288.8570 - val_mse: 1.6742e-04
Epoch 34/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0442 - mae: 0.0082 - mape: 145.7498 - mse: 1.5172e-04 - val_loss: 0.0434 - val_mae: 0.0074 - val_mape: 370.3514 - val_mse: 1.6736e-04
Epoch 35/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0431 - mae: 0.0083 - mape: 265.6518 - mse: 1.4882e-04 - val_loss: 0.0423 - val_mae: 0.0074 - val_mape: 309.0104 - val_mse: 1.6739e-04
Epoch 36/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0420 - mae: 0.0083 - mape: 147.1736 - mse: 1.5779e-04 - val_loss: 0.0413 - val_mae: 0.0074 - val_mape: 332.7076 - val_mse: 1.6737e-04
Epoch 37/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0410 - mae: 0.0083 - mape: 267.0205 - mse: 1.6001e-04 - val_loss: 0.0402 - val_mae: 0.0074 - val_mape: 114.0198 - val_mse: 1.6760e-04
Epoch 38/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0400 - mae: 0.0082 - mape: 177.8895 - mse: 1.5561e-04 - val_loss: 0.0392 - val_mae: 0.0074 - val_mape: 208.0695 - val_mse: 1.6749e-04
Epoch 39/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0390 - mae: 0.0080 - mape: 139.7902 - mse: 1.4212e-04 - val_loss: 0.0383 - val_mae: 0.0074 - val_mape: 350.3217 - val_mse: 1.6737e-04
Epoch 40/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0380 - mae: 0.0083 - mape: 320.5175 - mse: 1.5581e-04 - val_loss: 0.0373 - val_mae: 0.0074 - val_mape: 430.0998 - val_mse: 1.6730e-04
Epoch 41/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0371 - mae: 0.0081 - mape: 380.4200 - mse: 1.4601e-04 - val_loss: 0.0364 - val_mae: 0.0074 - val_mape: 283.3206 - val_mse: 1.6739e-04
Epoch 42/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0361 - mae: 0.0083 - mape: 145.6943 - mse: 1.4902e-04 - val_loss: 0.0355 - val_mae: 0.0074 - val_mape: 255.5253 - val_mse: 1.6741e-04
Epoch 43/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0353 - mae: 0.0082 - mape: 180.6179 - mse: 1.5992e-04 - val_loss: 0.0346 - val_mae: 0.0074 - val_mape: 306.9305 - val_mse: 1.6736e-04
Epoch 44/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 0.0344 - mae: 0.0083 - mape: 279.8402 - mse: 1.5865e-04 - val_loss: 0.0338 - val_mae: 0.0074 - val_mape: 275.4842 - val_mse: 1.6738e-04
Epoch 45/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0335 - mae: 0.0085 - mape: 163.6611 - mse: 1.7073e-04 - val_loss: 0.0329 - val_mae: 0.0074 - val_mape: 276.8152 - val_mse: 1.6739e-04
Epoch 46/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0327 - mae: 0.0083 - mape: 139.3360 - mse: 1.5510e-04 - val_loss: 0.0321 - val_mae: 0.0074 - val_mape: 262.7152 - val_mse: 1.6740e-04
Epoch 47/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0319 - mae: 0.0082 - mape: 138.7828 - mse: 1.4687e-04 - val_loss: 0.0313 - val_mae: 0.0074 - val_mape: 281.3709 - val_mse: 1.6739e-04
Epoch 48/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0311 - mae: 0.0083 - mape: 139.4118 - mse: 1.6110e-04 - val_loss: 0.0305 - val_mae: 0.0074 - val_mape: 258.9578 - val_mse: 1.6740e-04
Epoch 49/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0303 - mae: 0.0080 - mape: 140.7471 - mse: 1.3554e-04 - val_loss: 0.0298 - val_mae: 0.0074 - val_mape: 351.4830 - val_mse: 1.6733e-04
Epoch 50/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 0.0296 - mae: 0.0081 - mape: 200.2366 - mse: 1.5128e-04 - val_loss: 0.0290 - val_mae: 0.0074 - val_mape: 340.5100 - val_mse: 1.6734e-04

plt.plot(historyC.history['loss'])
plt.plot(historyC.history['val_loss'])
plt.title('model loss')
plt.show()

plt.plot(historyC.history['mae'])
plt.plot(historyC.history['val_mae'])
plt.title('mae loss')
plt.show()

plt.plot(historyC.history['mape'])
plt.plot(historyC.history['val_mape'])
plt.title('mae loss')
plt.show()

plt.plot(historyC.history['mse'])
plt.plot(historyC.history['val_mse'])
plt.title('mae loss')
plt.show()
Visualization
Visualization
Visualization
Visualization
predictionC = modelC.predict({'datetime_input': modelC_input_datetime_test, 'price_input': modelC_input_price_test})
plt.plot(modelC_output[-len(predictionC):])
plt.plot(predictionC)
33/33 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step
[<matplotlib.lines.Line2D at 0x7f089f2a8b90>]
Visualization
datetime_input = keras.Input(shape=(5,), name='datetime_input')
price_input = keras.Input(shape=(7,5), name='price_input')

datetime_features = Dense(10, activation='tanh')(datetime_input)
datetime_features = BatchNormalization()(datetime_features)
datetime_features = keras.layers.Dropout(0.2)(datetime_features)

price_features = LSTM(
    7, activation='tanh',
    kernel_regularizer=regularizers.L2(l2=0.01)
)(price_input)

price_features = BatchNormalization(
    beta_regularizer=regularizers.L2(l2=0.01),
    gamma_regularizer = regularizers.L2(l2=0.01))(price_features)

price_features = keras.layers.Dropout(0.2)(price_features)
x = keras.layers.concatenate([datetime_features, price_features])
x = Dense(10)(x)
output = Dense(1)(x)


modelC = keras.Model(inputs = [datetime_input, price_input], outputs = output, name='modelC')
modelC.summary()
keras.utils.plot_model(modelC, "modelC.png", show_shapes=True)
Model: "modelC"
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓
┃ Layer (type)        ┃ Output Shape      ┃    Param # ┃ Connected to      ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩
│ datetime_input      │ (None, 5)         │          0 │ -                 │
│ (InputLayer)        │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ price_input         │ (None, 7, 5)      │          0 │ -                 │
│ (InputLayer)        │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ dense_23 (Dense)    │ (None, 10)        │         60 │ datetime_input[0… │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ lstm_15 (LSTM)      │ (None, 7)         │        364 │ price_input[0][0] │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ batch_normalizatio… │ (None, 10)        │         40 │ dense_23[0][0]    │
│ (BatchNormalizatio… │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ batch_normalizatio… │ (None, 7)         │         28 │ lstm_15[0][0]     │
│ (BatchNormalizatio… │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ dropout_12          │ (None, 10)        │          0 │ batch_normalizat… │
│ (Dropout)           │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ dropout_13          │ (None, 7)         │          0 │ batch_normalizat… │
│ (Dropout)           │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ concatenate_6       │ (None, 17)        │          0 │ dropout_12[0][0], │
│ (Concatenate)       │                   │            │ dropout_13[0][0]  │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ dense_24 (Dense)    │ (None, 10)        │        180 │ concatenate_6[0]… │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ dense_25 (Dense)    │ (None, 1)         │         11 │ dense_24[0][0]    │
└─────────────────────┴───────────────────┴────────────┴───────────────────┘
Total params: 683 (2.67 KB)
Trainable params: 649 (2.54 KB)
Non-trainable params: 34 (136.00 B)
Visualization
modelC.compile(
    optimizer='adam', 
    loss='mse', 
    metrics=['mae', 'mse', 'mape']
)

historyC = modelC.fit(
    {'datetime_input': modelC_input_datetime_train.reshape(4000,5), 
     'price_input': modelC_input_price_train}, 
     modelC_output_train,
    validation_data=(
        {'datetime_input': modelC_input_datetime_valid.reshape(1000,5), 
         'price_input': modelC_input_price_valid}, 
         modelC_output_valid),
    epochs=50, batch_size=64
) 
Epoch 1/50
/home/edtlk1203/anaconda3/envs/SIM-UOL-course/lib/python3.11/site-packages/keras/src/models/functional.py:225: UserWarning: The structure of `inputs` doesn't match the expected structure: ['datetime_input', 'price_input']. Received: the structure of inputs={'datetime_input': '*', 'price_input': '*'}
  warnings.warn(
63/63 ━━━━━━━━━━━━━━━━━━━━ 3s 15ms/step - loss: 3.4748 - mae: 1.3949 - mape: 518130.9375 - mse: 3.3346 - val_loss: 0.1369 - val_mae: 0.1095 - val_mape: 70049.3438 - val_mse: 0.0175
Epoch 2/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 0.4146 - mae: 0.4036 - mape: 145252.6406 - mse: 0.3013 - val_loss: 0.0998 - val_mae: 0.0443 - val_mape: 53025.7656 - val_mse: 0.0029
Epoch 3/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 0.3293 - mae: 0.3350 - mape: 225045.1562 - mse: 0.2370 - val_loss: 0.0847 - val_mae: 0.0573 - val_mape: 64457.4336 - val_mse: 0.0048
Epoch 4/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 12ms/step - loss: 0.2517 - mae: 0.2960 - mape: 107018.2344 - mse: 0.1753 - val_loss: 0.0700 - val_mae: 0.0465 - val_mape: 35883.4844 - val_mse: 0.0032
Epoch 5/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 0.2021 - mae: 0.2624 - mape: 85251.4531 - mse: 0.1381 - val_loss: 0.0604 - val_mae: 0.0519 - val_mape: 29964.6465 - val_mse: 0.0039
Epoch 6/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 0.1623 - mae: 0.2303 - mape: 73627.6406 - mse: 0.1080 - val_loss: 0.0523 - val_mae: 0.0525 - val_mape: 8991.5986 - val_mse: 0.0040
Epoch 7/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 12ms/step - loss: 0.1362 - mae: 0.2077 - mape: 184433.6250 - mse: 0.0897 - val_loss: 0.0442 - val_mae: 0.0416 - val_mape: 37790.4297 - val_mse: 0.0025
Epoch 8/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 0.1088 - mae: 0.1832 - mape: 218945.8438 - mse: 0.0686 - val_loss: 0.0390 - val_mae: 0.0442 - val_mape: 55855.3984 - val_mse: 0.0028
Epoch 9/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 12ms/step - loss: 0.0855 - mae: 0.1560 - mape: 80392.1328 - mse: 0.0505 - val_loss: 0.0337 - val_mae: 0.0388 - val_mape: 42975.7305 - val_mse: 0.0022
Epoch 10/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 12ms/step - loss: 0.0745 - mae: 0.1452 - mape: 23205.7754 - mse: 0.0440 - val_loss: 0.0284 - val_mae: 0.0238 - val_mape: 33450.6094 - val_mse: 8.9994e-04
Epoch 11/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 0.0586 - mae: 0.1236 - mape: 27909.2695 - mse: 0.0320 - val_loss: 0.0248 - val_mae: 0.0217 - val_mape: 6560.4473 - val_mse: 7.4308e-04
Epoch 12/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 0.0489 - mae: 0.1102 - mape: 24704.6035 - mse: 0.0257 - val_loss: 0.0215 - val_mae: 0.0168 - val_mape: 15997.3701 - val_mse: 4.8625e-04
Epoch 13/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 0.0397 - mae: 0.0964 - mape: 16727.0039 - mse: 0.0194 - val_loss: 0.0187 - val_mae: 0.0150 - val_mape: 3964.2214 - val_mse: 3.9915e-04
Epoch 14/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 0.0309 - mae: 0.0785 - mape: 14332.2861 - mse: 0.0132 - val_loss: 0.0164 - val_mae: 0.0171 - val_mape: 15696.0225 - val_mse: 4.7695e-04
Epoch 15/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 0.0247 - mae: 0.0678 - mape: 41826.6211 - mse: 0.0094 - val_loss: 0.0140 - val_mae: 0.0113 - val_mape: 5263.9209 - val_mse: 2.5679e-04
Epoch 16/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 0.0201 - mae: 0.0577 - mape: 15252.8213 - mse: 0.0068 - val_loss: 0.0122 - val_mae: 0.0109 - val_mape: 5716.4585 - val_mse: 2.4516e-04
Epoch 17/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 0.0164 - mae: 0.0503 - mape: 31149.3984 - mse: 0.0049 - val_loss: 0.0105 - val_mae: 0.0098 - val_mape: 6448.8472 - val_mse: 2.1583e-04
Epoch 18/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 0.0130 - mae: 0.0394 - mape: 7944.6958 - mse: 0.0031 - val_loss: 0.0091 - val_mae: 0.0091 - val_mape: 5531.1392 - val_mse: 1.9898e-04
Epoch 19/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 0.0108 - mae: 0.0338 - mape: 24199.5078 - mse: 0.0022 - val_loss: 0.0078 - val_mae: 0.0085 - val_mape: 7953.6948 - val_mse: 1.8577e-04
Epoch 20/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 0.0088 - mae: 0.0278 - mape: 15466.1631 - mse: 0.0014 - val_loss: 0.0067 - val_mae: 0.0084 - val_mape: 6645.8247 - val_mse: 1.8326e-04
Epoch 21/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 0.0072 - mae: 0.0218 - mape: 9125.9971 - mse: 9.1015e-04 - val_loss: 0.0057 - val_mae: 0.0081 - val_mape: 3656.9985 - val_mse: 1.7871e-04
Epoch 22/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 0.0060 - mae: 0.0191 - mape: 6638.3047 - mse: 6.7181e-04 - val_loss: 0.0049 - val_mae: 0.0083 - val_mape: 820.0498 - val_mse: 1.8076e-04
Epoch 23/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 0.0050 - mae: 0.0160 - mape: 6926.6157 - mse: 4.7782e-04 - val_loss: 0.0042 - val_mae: 0.0077 - val_mape: 3583.2573 - val_mse: 1.7172e-04
Epoch 24/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 0.0042 - mae: 0.0139 - mape: 4535.2900 - mse: 3.6375e-04 - val_loss: 0.0035 - val_mae: 0.0077 - val_mape: 2143.5244 - val_mse: 1.7121e-04
Epoch 25/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 12ms/step - loss: 0.0035 - mae: 0.0122 - mape: 874.2662 - mse: 2.7928e-04 - val_loss: 0.0030 - val_mae: 0.0075 - val_mape: 3303.3147 - val_mse: 1.6864e-04
Epoch 26/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 0.0029 - mae: 0.0104 - mape: 5320.0010 - mse: 2.0194e-04 - val_loss: 0.0026 - val_mae: 0.0076 - val_mape: 1867.3114 - val_mse: 1.6953e-04
Epoch 27/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 0.0025 - mae: 0.0095 - mape: 1261.9956 - mse: 1.8389e-04 - val_loss: 0.0022 - val_mae: 0.0074 - val_mape: 2187.6968 - val_mse: 1.6786e-04
Epoch 28/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 12ms/step - loss: 0.0021 - mae: 0.0091 - mape: 1279.4066 - mse: 1.7141e-04 - val_loss: 0.0018 - val_mae: 0.0075 - val_mape: 1005.8805 - val_mse: 1.6869e-04
Epoch 29/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 0.0018 - mae: 0.0090 - mape: 1017.8474 - mse: 1.7273e-04 - val_loss: 0.0015 - val_mae: 0.0076 - val_mape: 1035.7888 - val_mse: 1.6952e-04
Epoch 30/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 0.0015 - mae: 0.0087 - mape: 1251.3063 - mse: 1.6519e-04 - val_loss: 0.0013 - val_mae: 0.0075 - val_mape: 988.5530 - val_mse: 1.6809e-04
Epoch 31/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 0.0012 - mae: 0.0083 - mape: 1281.1799 - mse: 1.5603e-04 - val_loss: 0.0011 - val_mae: 0.0075 - val_mape: 338.0407 - val_mse: 1.6822e-04
Epoch 32/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 0.0010 - mae: 0.0082 - mape: 241.7492 - mse: 1.4595e-04 - val_loss: 9.3759e-04 - val_mae: 0.0075 - val_mape: 374.2477 - val_mse: 1.6824e-04
Epoch 33/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 8.8383e-04 - mae: 0.0083 - mape: 725.1608 - mse: 1.5159e-04 - val_loss: 7.9502e-04 - val_mae: 0.0074 - val_mape: 1152.4510 - val_mse: 1.6717e-04
Epoch 34/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 7.5246e-04 - mae: 0.0083 - mape: 1277.4930 - mse: 1.5555e-04 - val_loss: 6.7892e-04 - val_mae: 0.0076 - val_mape: 571.5284 - val_mse: 1.6902e-04
Epoch 35/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 6.4077e-04 - mae: 0.0084 - mape: 517.8556 - mse: 1.5660e-04 - val_loss: 5.8115e-04 - val_mae: 0.0076 - val_mape: 921.3969 - val_mse: 1.6921e-04
Epoch 36/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 5.4874e-04 - mae: 0.0085 - mape: 732.4683 - mse: 1.5810e-04 - val_loss: 4.9913e-04 - val_mae: 0.0075 - val_mape: 1487.7834 - val_mse: 1.6814e-04
Epoch 37/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 4.6285e-04 - mae: 0.0083 - mape: 622.2105 - mse: 1.4940e-04 - val_loss: 4.3220e-04 - val_mae: 0.0075 - val_mape: 310.5345 - val_mse: 1.6777e-04
Epoch 38/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 4.0448e-04 - mae: 0.0083 - mape: 1149.3491 - mse: 1.5442e-04 - val_loss: 3.7824e-04 - val_mae: 0.0075 - val_mape: 617.5167 - val_mse: 1.6827e-04
Epoch 39/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 3.6655e-04 - mae: 0.0085 - mape: 1420.8090 - mse: 1.6829e-04 - val_loss: 3.3318e-04 - val_mae: 0.0074 - val_mape: 529.1122 - val_mse: 1.6747e-04
Epoch 40/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 3.1590e-04 - mae: 0.0082 - mape: 1059.2532 - mse: 1.5967e-04 - val_loss: 2.9790e-04 - val_mae: 0.0075 - val_mape: 777.4059 - val_mse: 1.6798e-04
Epoch 41/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 2.7494e-04 - mae: 0.0083 - mape: 466.2638 - mse: 1.5263e-04 - val_loss: 2.7094e-04 - val_mae: 0.0076 - val_mape: 349.2974 - val_mse: 1.6974e-04
Epoch 42/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 2.6512e-04 - mae: 0.0086 - mape: 1097.4409 - mse: 1.7002e-04 - val_loss: 2.4561e-04 - val_mae: 0.0074 - val_mape: 1065.9697 - val_mse: 1.6738e-04
Epoch 43/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 2.1965e-04 - mae: 0.0081 - mape: 263.4765 - mse: 1.4625e-04 - val_loss: 2.2849e-04 - val_mae: 0.0075 - val_mape: 431.3084 - val_mse: 1.6841e-04
Epoch 44/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 2.1782e-04 - mae: 0.0084 - mape: 517.8192 - mse: 1.6155e-04 - val_loss: 2.1349e-04 - val_mae: 0.0074 - val_mape: 370.0312 - val_mse: 1.6770e-04
Epoch 45/50
63/63 ━━━━━━━━━━━━━━━━━━━━ -0s -6709us/step - loss: 1.9697e-04 - mae: 0.0084 - mape: 358.8634 - mse: 1.5416e-04 - val_loss: 2.0454e-04 - val_mae: 0.0077 - val_mape: 585.3359 - val_mse: 1.6992e-04
Epoch 46/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 1.8483e-04 - mae: 0.0083 - mape: 987.3620 - mse: 1.5253e-04 - val_loss: 1.9851e-04 - val_mae: 0.0079 - val_mape: 2567.5942 - val_mse: 1.7252e-04
Epoch 47/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 1.7826e-04 - mae: 0.0083 - mape: 1119.9526 - mse: 1.5405e-04 - val_loss: 1.8735e-04 - val_mae: 0.0075 - val_mape: 1089.1193 - val_mse: 1.6799e-04
Epoch 48/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 1.7968e-04 - mae: 0.0084 - mape: 561.4748 - mse: 1.6168e-04 - val_loss: 1.8225e-04 - val_mae: 0.0075 - val_mape: 1005.8050 - val_mse: 1.6794e-04
Epoch 49/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 1.5311e-04 - mae: 0.0080 - mape: 854.4969 - mse: 1.3983e-04 - val_loss: 1.7844e-04 - val_mae: 0.0075 - val_mape: 283.1095 - val_mse: 1.6794e-04
Epoch 50/50
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 11ms/step - loss: 1.5353e-04 - mae: 0.0082 - mape: 244.1267 - mse: 1.4381e-04 - val_loss: 1.7600e-04 - val_mae: 0.0075 - val_mape: 895.3248 - val_mse: 1.6834e-04

modelC_input_datetime_test.reshape(1028,5)
array([[1.        , 0.90659341, 0.86666667, 0.90909091, 0.88679245],
       [0.        , 0.91483516, 0.96666667, 0.90909091, 0.90566038],
       [0.25      , 0.91758242, 0.        , 1.        , 0.90566038],
       ...,
       [0.75      , 0.98626374, 0.83333333, 1.        , 0.98113208],
       [1.        , 0.98901099, 0.86666667, 1.        , 0.98113208],
       [0.        , 0.99725275, 0.96666667, 1.        , 1.        ]])
plt.plot(historyC.history['loss'])
plt.plot(historyC.history['val_loss'])
plt.title('model loss')
plt.show()

plt.plot(historyC.history['mae'])
plt.plot(historyC.history['val_mae'])
plt.title('mae loss')
plt.show()

plt.plot(historyC.history['mape'])
plt.plot(historyC.history['val_mape'])
plt.title('mae loss')
plt.show()

plt.plot(historyC.history['mse'])
plt.plot(historyC.history['val_mse'])
plt.title('mae loss')
plt.show()

predictionC = modelC.predict({'datetime_input': modelC_input_datetime_test, 'price_input': modelC_input_price_test})
plt.plot(modelC_output[-len(predictionC):])
plt.plot(predictionC)
Visualization
Visualization
Visualization
Visualization
33/33 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step
[<matplotlib.lines.Line2D at 0x7f08cec57350>]
Visualization

The result currently shows that it cannot pass 0.01 and there is a repeated pattern noted.

price_input = keras.Input(shape=(7,5), name='price_input')

price_features = LSTM(
    7, activation='sigmoid',
    kernel_regularizer=regularizers.L2(l2=0.01)
)(price_input)

price_features = BatchNormalization(
    beta_regularizer=regularizers.L2(l2=0.01),
    gamma_regularizer = regularizers.L2(l2=0.01))(price_features)

output = Dense(1)(price_features)


modelC = keras.Model(inputs = price_input, outputs = output, name='modelC')
modelC.summary()
keras.utils.plot_model(modelC, "modelC.png", show_shapes=True)
Model: "modelC"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ price_input (InputLayer)        │ (None, 7, 5)           │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ lstm_34 (LSTM)                  │ (None, 7)              │           364 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_43          │ (None, 7)              │            28 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dropout_29 (Dropout)            │ (None, 7)              │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_51 (Dense)                │ (None, 1)              │             8 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
Total params: 400 (1.56 KB)
Trainable params: 386 (1.51 KB)
Non-trainable params: 14 (56.00 B)
Visualization
modelC.compile(
    optimizer='adam', 
    loss='mse', 
    metrics=['mae', 'mse', 'mape']
)

historyC = modelC.fit(
     modelC_input_price_train, 
     modelC_output_train,
    validation_data= (modelC_input_price_valid, modelC_output_valid),
    epochs=75, batch_size=32
) 

plt.plot(historyC.history['loss'])
plt.plot(historyC.history['val_loss'])
plt.title('model loss')
plt.show()

plt.plot(historyC.history['mae'])
plt.plot(historyC.history['val_mae'])
plt.title('mae loss')
plt.show()

plt.plot(historyC.history['mape'])
plt.plot(historyC.history['val_mape'])
plt.title('mae loss')
plt.show()

plt.plot(historyC.history['mse'])
plt.plot(historyC.history['val_mse'])
plt.title('mae loss')
plt.show()

predictionC = modelC.predict(modelC_input_price_test)
plt.plot(modelC_output[-len(predictionC):])
plt.plot(predictionC)
Epoch 1/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 3s 12ms/step - loss: 1.6522e-04 - mae: 0.0085 - mape: 272.6206 - mse: 1.6511e-04 - val_loss: 1.6928e-04 - val_mae: 0.0076 - val_mape: 938.8939 - val_mse: 1.6921e-04
Epoch 2/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5475e-04 - mae: 0.0082 - mape: 398.5596 - mse: 1.5457e-04 - val_loss: 1.6734e-04 - val_mae: 0.0074 - val_mape: 661.1548 - val_mse: 1.6733e-04
Epoch 3/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4615e-04 - mae: 0.0081 - mape: 154.1408 - mse: 1.4614e-04 - val_loss: 1.6740e-04 - val_mae: 0.0074 - val_mape: 433.8565 - val_mse: 1.6740e-04
Epoch 4/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.4787e-04 - mae: 0.0081 - mape: 341.4914 - mse: 1.4787e-04 - val_loss: 1.6835e-04 - val_mae: 0.0075 - val_mape: 551.3569 - val_mse: 1.6835e-04
Epoch 5/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4601e-04 - mae: 0.0081 - mape: 761.7272 - mse: 1.4601e-04 - val_loss: 1.6910e-04 - val_mae: 0.0076 - val_mape: 895.7386 - val_mse: 1.6910e-04
Epoch 6/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.4021e-04 - mae: 0.0080 - mape: 664.9464 - mse: 1.4021e-04 - val_loss: 1.6738e-04 - val_mae: 0.0074 - val_mape: 925.6245 - val_mse: 1.6737e-04
Epoch 7/75
125/125 ━━━━━━━━━━━━━━━━━━━━ -1s -4274us/step - loss: 1.5590e-04 - mae: 0.0083 - mape: 454.0804 - mse: 1.5580e-04 - val_loss: 1.6829e-04 - val_mae: 0.0074 - val_mape: 1550.2971 - val_mse: 1.6795e-04
Epoch 8/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5311e-04 - mae: 0.0084 - mape: 2141.8035 - mse: 1.5287e-04 - val_loss: 1.6750e-04 - val_mae: 0.0074 - val_mape: 427.5997 - val_mse: 1.6740e-04
Epoch 9/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5830e-04 - mae: 0.0083 - mape: 310.8352 - mse: 1.5813e-04 - val_loss: 1.6742e-04 - val_mae: 0.0074 - val_mape: 410.1947 - val_mse: 1.6741e-04
Epoch 10/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5797e-04 - mae: 0.0083 - mape: 307.6433 - mse: 1.5796e-04 - val_loss: 1.6769e-04 - val_mae: 0.0074 - val_mape: 1350.2301 - val_mse: 1.6769e-04
Epoch 11/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4089e-04 - mae: 0.0079 - mape: 187.7886 - mse: 1.4088e-04 - val_loss: 1.6754e-04 - val_mae: 0.0074 - val_mape: 1184.8281 - val_mse: 1.6753e-04
Epoch 12/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4091e-04 - mae: 0.0079 - mape: 559.4398 - mse: 1.4090e-04 - val_loss: 1.6833e-04 - val_mae: 0.0075 - val_mape: 526.2937 - val_mse: 1.6830e-04
Epoch 13/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.3949e-04 - mae: 0.0081 - mape: 1288.1483 - mse: 1.3948e-04 - val_loss: 1.6932e-04 - val_mae: 0.0076 - val_mape: 977.8922 - val_mse: 1.6931e-04
Epoch 14/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.4198e-04 - mae: 0.0081 - mape: 897.5038 - mse: 1.4198e-04 - val_loss: 1.6738e-04 - val_mae: 0.0074 - val_mape: 494.0124 - val_mse: 1.6737e-04
Epoch 15/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.4699e-04 - mae: 0.0082 - mape: 280.0605 - mse: 1.4694e-04 - val_loss: 1.6813e-04 - val_mae: 0.0074 - val_mape: 1654.7334 - val_mse: 1.6811e-04
Epoch 16/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4902e-04 - mae: 0.0081 - mape: 209.4275 - mse: 1.4875e-04 - val_loss: 1.6747e-04 - val_mae: 0.0074 - val_mape: 388.0824 - val_mse: 1.6742e-04
Epoch 17/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5356e-04 - mae: 0.0082 - mape: 163.0827 - mse: 1.5348e-04 - val_loss: 1.7091e-04 - val_mae: 0.0077 - val_mape: 1498.2915 - val_mse: 1.7090e-04
Epoch 18/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5826e-04 - mae: 0.0085 - mape: 252.7638 - mse: 1.5826e-04 - val_loss: 1.6805e-04 - val_mae: 0.0075 - val_mape: 379.7856 - val_mse: 1.6805e-04
Epoch 19/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4845e-04 - mae: 0.0082 - mape: 838.2509 - mse: 1.4845e-04 - val_loss: 1.6778e-04 - val_mae: 0.0075 - val_mape: 195.3277 - val_mse: 1.6778e-04
Epoch 20/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5177e-04 - mae: 0.0083 - mape: 455.3717 - mse: 1.5177e-04 - val_loss: 1.6736e-04 - val_mae: 0.0074 - val_mape: 897.0451 - val_mse: 1.6736e-04
Epoch 21/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6093e-04 - mae: 0.0085 - mape: 695.5737 - mse: 1.6092e-04 - val_loss: 1.6804e-04 - val_mae: 0.0074 - val_mape: 1610.6790 - val_mse: 1.6804e-04
Epoch 22/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.4896e-04 - mae: 0.0083 - mape: 368.6169 - mse: 1.4896e-04 - val_loss: 1.6743e-04 - val_mae: 0.0074 - val_mape: 375.4044 - val_mse: 1.6743e-04
Epoch 23/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.4887e-04 - mae: 0.0082 - mape: 1775.7705 - mse: 1.4884e-04 - val_loss: 1.6758e-04 - val_mae: 0.0074 - val_mape: 1071.8170 - val_mse: 1.6745e-04
Epoch 24/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5442e-04 - mae: 0.0083 - mape: 429.4447 - mse: 1.5439e-04 - val_loss: 1.6840e-04 - val_mae: 0.0075 - val_mape: 578.6801 - val_mse: 1.6840e-04
Epoch 25/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4990e-04 - mae: 0.0083 - mape: 260.7707 - mse: 1.4990e-04 - val_loss: 1.6779e-04 - val_mae: 0.0075 - val_mape: 197.8337 - val_mse: 1.6779e-04
Epoch 26/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5262e-04 - mae: 0.0083 - mape: 274.2537 - mse: 1.5262e-04 - val_loss: 1.6771e-04 - val_mae: 0.0074 - val_mape: 138.9126 - val_mse: 1.6771e-04
Epoch 27/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5989e-04 - mae: 0.0083 - mape: 328.6049 - mse: 1.5989e-04 - val_loss: 1.7365e-04 - val_mae: 0.0077 - val_mape: 3420.1887 - val_mse: 1.7362e-04
Epoch 28/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5043e-04 - mae: 0.0083 - mape: 284.4088 - mse: 1.5035e-04 - val_loss: 1.6897e-04 - val_mae: 0.0075 - val_mape: 740.1540 - val_mse: 1.6874e-04
Epoch 29/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4365e-04 - mae: 0.0082 - mape: 881.1996 - mse: 1.4359e-04 - val_loss: 1.6745e-04 - val_mae: 0.0074 - val_mape: 912.7524 - val_mse: 1.6737e-04
Epoch 30/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5381e-04 - mae: 0.0084 - mape: 537.3011 - mse: 1.5376e-04 - val_loss: 1.6857e-04 - val_mae: 0.0075 - val_mape: 662.0120 - val_mse: 1.6857e-04
Epoch 31/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4564e-04 - mae: 0.0082 - mape: 296.1514 - mse: 1.4562e-04 - val_loss: 1.6734e-04 - val_mae: 0.0074 - val_mape: 629.6318 - val_mse: 1.6734e-04
Epoch 32/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.4743e-04 - mae: 0.0082 - mape: 339.0505 - mse: 1.4743e-04 - val_loss: 1.6775e-04 - val_mae: 0.0074 - val_mape: 164.2797 - val_mse: 1.6774e-04
Epoch 33/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4204e-04 - mae: 0.0081 - mape: 535.4504 - mse: 1.4186e-04 - val_loss: 1.6756e-04 - val_mae: 0.0074 - val_mape: 1209.3317 - val_mse: 1.6755e-04
Epoch 34/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.5618e-04 - mae: 0.0084 - mape: 274.4471 - mse: 1.5612e-04 - val_loss: 1.6932e-04 - val_mae: 0.0076 - val_mape: 981.0414 - val_mse: 1.6932e-04
Epoch 35/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4772e-04 - mae: 0.0081 - mape: 440.9581 - mse: 1.4768e-04 - val_loss: 1.6742e-04 - val_mae: 0.0074 - val_mape: 401.4402 - val_mse: 1.6742e-04
Epoch 36/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5324e-04 - mae: 0.0083 - mape: 496.0716 - mse: 1.5324e-04 - val_loss: 1.6801e-04 - val_mae: 0.0075 - val_mape: 350.6417 - val_mse: 1.6800e-04
Epoch 37/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.4175e-04 - mae: 0.0081 - mape: 674.8279 - mse: 1.4169e-04 - val_loss: 1.6772e-04 - val_mae: 0.0074 - val_mape: 1338.4083 - val_mse: 1.6768e-04
Epoch 38/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.4804e-04 - mae: 0.0082 - mape: 1184.9064 - mse: 1.4786e-04 - val_loss: 1.6842e-04 - val_mae: 0.0075 - val_mape: 519.0214 - val_mse: 1.6829e-04
Epoch 39/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5989e-04 - mae: 0.0084 - mape: 605.4998 - mse: 1.5984e-04 - val_loss: 1.6779e-04 - val_mae: 0.0074 - val_mape: 1387.9113 - val_mse: 1.6773e-04
Epoch 40/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.4790e-04 - mae: 0.0084 - mape: 577.8339 - mse: 1.4777e-04 - val_loss: 1.6813e-04 - val_mae: 0.0075 - val_mape: 207.7346 - val_mse: 1.6780e-04
Epoch 41/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4490e-04 - mae: 0.0082 - mape: 493.2614 - mse: 1.4430e-04 - val_loss: 1.6743e-04 - val_mae: 0.0074 - val_mape: 442.8470 - val_mse: 1.6740e-04
Epoch 42/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5748e-04 - mae: 0.0083 - mape: 383.7026 - mse: 1.5744e-04 - val_loss: 1.6759e-04 - val_mae: 0.0074 - val_mape: 1173.3413 - val_mse: 1.6752e-04
Epoch 43/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6670e-04 - mae: 0.0083 - mape: 403.4610 - mse: 1.6665e-04 - val_loss: 1.6750e-04 - val_mae: 0.0074 - val_mape: 294.4489 - val_mse: 1.6749e-04
Epoch 44/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.5130e-04 - mae: 0.0083 - mape: 517.2940 - mse: 1.5128e-04 - val_loss: 1.6734e-04 - val_mae: 0.0074 - val_mape: 665.0409 - val_mse: 1.6733e-04
Epoch 45/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5509e-04 - mae: 0.0083 - mape: 149.1383 - mse: 1.5509e-04 - val_loss: 1.6870e-04 - val_mae: 0.0075 - val_mape: 715.7061 - val_mse: 1.6868e-04
Epoch 46/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5797e-04 - mae: 0.0084 - mape: 404.4983 - mse: 1.5796e-04 - val_loss: 1.7122e-04 - val_mae: 0.0078 - val_mape: 1582.3953 - val_mse: 1.7120e-04
Epoch 47/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5271e-04 - mae: 0.0082 - mape: 667.9109 - mse: 1.5269e-04 - val_loss: 1.6747e-04 - val_mae: 0.0074 - val_mape: 1099.7118 - val_mse: 1.6747e-04
Epoch 48/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5331e-04 - mae: 0.0084 - mape: 424.7808 - mse: 1.5330e-04 - val_loss: 1.6763e-04 - val_mae: 0.0074 - val_mape: 139.0129 - val_mse: 1.6762e-04
Epoch 49/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6346e-04 - mae: 0.0084 - mape: 413.4647 - mse: 1.6346e-04 - val_loss: 1.6747e-04 - val_mae: 0.0074 - val_mape: 1104.7435 - val_mse: 1.6747e-04
Epoch 50/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4452e-04 - mae: 0.0080 - mape: 703.7923 - mse: 1.4452e-04 - val_loss: 1.6746e-04 - val_mae: 0.0074 - val_mape: 330.9168 - val_mse: 1.6746e-04
Epoch 51/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5729e-04 - mae: 0.0083 - mape: 872.7383 - mse: 1.5729e-04 - val_loss: 1.6819e-04 - val_mae: 0.0074 - val_mape: 1700.8148 - val_mse: 1.6819e-04
Epoch 52/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4698e-04 - mae: 0.0081 - mape: 727.7070 - mse: 1.4697e-04 - val_loss: 1.6790e-04 - val_mae: 0.0074 - val_mape: 139.7823 - val_mse: 1.6762e-04
Epoch 53/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4190e-04 - mae: 0.0081 - mape: 270.8882 - mse: 1.4159e-04 - val_loss: 1.6896e-04 - val_mae: 0.0075 - val_mape: 669.4344 - val_mse: 1.6859e-04
Epoch 54/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4680e-04 - mae: 0.0082 - mape: 1092.0826 - mse: 1.4664e-04 - val_loss: 1.6794e-04 - val_mae: 0.0074 - val_mape: 161.3054 - val_mse: 1.6774e-04
Epoch 55/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5341e-04 - mae: 0.0084 - mape: 584.8161 - mse: 1.5329e-04 - val_loss: 1.6779e-04 - val_mae: 0.0075 - val_mape: 187.8822 - val_mse: 1.6777e-04
Epoch 56/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4009e-04 - mae: 0.0080 - mape: 167.8610 - mse: 1.4009e-04 - val_loss: 1.6879e-04 - val_mae: 0.0076 - val_mape: 764.0095 - val_mse: 1.6879e-04
Epoch 57/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6640e-04 - mae: 0.0085 - mape: 926.0536 - mse: 1.6638e-04 - val_loss: 1.6885e-04 - val_mae: 0.0076 - val_mape: 762.9620 - val_mse: 1.6879e-04
Epoch 58/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5522e-04 - mae: 0.0082 - mape: 519.4350 - mse: 1.5506e-04 - val_loss: 1.6746e-04 - val_mae: 0.0074 - val_mape: 381.3578 - val_mse: 1.6743e-04
Epoch 59/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.4755e-04 - mae: 0.0081 - mape: 238.2744 - mse: 1.4750e-04 - val_loss: 1.6834e-04 - val_mae: 0.0074 - val_mape: 1781.8213 - val_mse: 1.6833e-04
Epoch 60/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5867e-04 - mae: 0.0084 - mape: 1062.4437 - mse: 1.5866e-04 - val_loss: 1.7246e-04 - val_mae: 0.0079 - val_mape: 1902.5696 - val_mse: 1.7245e-04
Epoch 61/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5226e-04 - mae: 0.0083 - mape: 384.0329 - mse: 1.5218e-04 - val_loss: 1.6790e-04 - val_mae: 0.0074 - val_mape: 1511.4130 - val_mse: 1.6789e-04
Epoch 62/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.5180e-04 - mae: 0.0084 - mape: 189.8821 - mse: 1.5175e-04 - val_loss: 1.6891e-04 - val_mae: 0.0075 - val_mape: 2056.2217 - val_mse: 1.6890e-04
Epoch 63/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5004e-04 - mae: 0.0082 - mape: 378.5822 - mse: 1.4963e-04 - val_loss: 1.6750e-04 - val_mae: 0.0074 - val_mape: 901.3068 - val_mse: 1.6737e-04
Epoch 64/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6749e-04 - mae: 0.0087 - mape: 1115.4215 - mse: 1.6739e-04 - val_loss: 1.6877e-04 - val_mae: 0.0075 - val_mape: 736.5402 - val_mse: 1.6873e-04
Epoch 65/75
125/125 ━━━━━━━━━━━━━━━━━━━━ -1s -4584us/step - loss: 1.5989e-04 - mae: 0.0085 - mape: 287.3508 - mse: 1.5988e-04 - val_loss: 1.6749e-04 - val_mae: 0.0074 - val_mape: 297.2775 - val_mse: 1.6748e-04
Epoch 66/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5682e-04 - mae: 0.0082 - mape: 513.3104 - mse: 1.5681e-04 - val_loss: 1.7069e-04 - val_mae: 0.0077 - val_mape: 1435.5513 - val_mse: 1.7068e-04
Epoch 67/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4936e-04 - mae: 0.0082 - mape: 238.2730 - mse: 1.4936e-04 - val_loss: 1.6749e-04 - val_mae: 0.0074 - val_mape: 1125.5148 - val_mse: 1.6748e-04
Epoch 68/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.4823e-04 - mae: 0.0082 - mape: 378.5616 - mse: 1.4823e-04 - val_loss: 1.6755e-04 - val_mae: 0.0074 - val_mape: 1207.2832 - val_mse: 1.6755e-04
Epoch 69/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.5485e-04 - mae: 0.0083 - mape: 365.6557 - mse: 1.5485e-04 - val_loss: 1.6836e-04 - val_mae: 0.0075 - val_mape: 555.7369 - val_mse: 1.6836e-04
Epoch 70/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.5389e-04 - mae: 0.0082 - mape: 845.2125 - mse: 1.5389e-04 - val_loss: 1.6755e-04 - val_mae: 0.0074 - val_mape: 1202.6100 - val_mse: 1.6755e-04
Epoch 71/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.7411e-04 - mae: 0.0085 - mape: 661.5126 - mse: 1.7410e-04 - val_loss: 1.6809e-04 - val_mae: 0.0074 - val_mape: 1609.7552 - val_mse: 1.6804e-04
Epoch 72/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5137e-04 - mae: 0.0082 - mape: 550.1717 - mse: 1.5132e-04 - val_loss: 1.6926e-04 - val_mae: 0.0076 - val_mape: 860.7728 - val_mse: 1.6902e-04
Epoch 73/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5397e-04 - mae: 0.0083 - mape: 528.2687 - mse: 1.5391e-04 - val_loss: 1.6916e-04 - val_mae: 0.0075 - val_mape: 2155.7036 - val_mse: 1.6914e-04
Epoch 74/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5730e-04 - mae: 0.0083 - mape: 635.9603 - mse: 1.5729e-04 - val_loss: 1.6771e-04 - val_mae: 0.0074 - val_mape: 136.9231 - val_mse: 1.6771e-04
Epoch 75/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.4750e-04 - mae: 0.0081 - mape: 317.5479 - mse: 1.4750e-04 - val_loss: 1.6733e-04 - val_mae: 0.0074 - val_mape: 679.9623 - val_mse: 1.6733e-04

Visualization
Visualization
Visualization
Visualization
33/33 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step
[<matplotlib.lines.Line2D at 0x7f08af680b90>]
Visualization

The LSTM model or the use of the change of price dataset, seems to always produce an output there is very flat. So lets try to use the datetime dataset to predict the percentage change in price.

datetime_input = keras.Input(shape=(5,), name='datetime_input')

datetime_features = Dense(10, activation='tanh')(datetime_input)
datetime_features = BatchNormalization()(datetime_features)
datetime_features = keras.layers.Dropout(0.2)(datetime_features)
x = Dense(10)(datetime_features)
output = Dense(1)(x)

modelD = keras.Model(inputs = datetime_input, outputs = output, name='modelD')
modelD.summary()
keras.utils.plot_model(modelD, "modelD.png", show_shapes=True)

modelD.compile(
    optimizer='adam', 
    loss='mse', 
    metrics=['mae', 'mse', 'mape']
)

historyD = modelD.fit(
    modelC_input_datetime_train, modelC_output_train,
    validation_data= (modelC_input_datetime_valid, modelC_output_valid),
    epochs=75, batch_size=32
)

plt.plot(historyD.history['loss'])
plt.plot(historyD.history['val_loss'])
plt.title('model loss')
plt.show()

plt.plot(historyD.history['mae'])
plt.plot(historyD.history['val_mae'])
plt.title('mae loss')
plt.show()

plt.plot(historyD.history['mape'])
plt.plot(historyD.history['val_mape'])
plt.title('mae loss')
plt.show()

plt.plot(historyD.history['mse'])
plt.plot(historyD.history['val_mse'])
plt.title('mae loss')
plt.show()

predictionD = modelD.predict({'datetime_input': modelC_input_datetime_test, 'price_input': modelC_input_price_test})
plt.plot(modelC_output[-len(predictionC):])
plt.plot(predictionD)
Model: "modelD"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ datetime_input (InputLayer)     │ (None, 5)              │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_52 (Dense)                │ (None, 10)             │            60 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_44          │ (None, 10)             │            40 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dropout_30 (Dropout)            │ (None, 10)             │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_53 (Dense)                │ (None, 10)             │           110 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_54 (Dense)                │ (None, 1)              │            11 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
Total params: 221 (884.00 B)
Trainable params: 201 (804.00 B)
Non-trainable params: 20 (80.00 B)
Epoch 1/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 2s 7ms/step - loss: 0.8044 - mae: 0.6495 - mape: 112758.7422 - mse: 0.8044 - val_loss: 0.0162 - val_mae: 0.1084 - val_mape: 121223.7734 - val_mse: 0.0162
Epoch 2/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.1540 - mae: 0.2896 - mape: 44775.2773 - mse: 0.1540 - val_loss: 0.0187 - val_mae: 0.1159 - val_mape: 101762.4531 - val_mse: 0.0187
Epoch 3/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0649 - mae: 0.1827 - mape: 30103.4531 - mse: 0.0649 - val_loss: 0.0068 - val_mae: 0.0691 - val_mape: 60178.0508 - val_mse: 0.0068
Epoch 4/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0240 - mae: 0.1088 - mape: 83862.4844 - mse: 0.0240 - val_loss: 0.0017 - val_mae: 0.0338 - val_mape: 28810.7109 - val_mse: 0.0017
Epoch 5/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0064 - mae: 0.0569 - mape: 11429.5596 - mse: 0.0064 - val_loss: 2.8208e-04 - val_mae: 0.0124 - val_mape: 5867.5801 - val_mse: 2.8208e-04
Epoch 6/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0018 - mae: 0.0303 - mape: 35459.1211 - mse: 0.0018 - val_loss: 1.7493e-04 - val_mae: 0.0080 - val_mape: 1633.9921 - val_mse: 1.7493e-04
Epoch 7/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 5.3730e-04 - mae: 0.0169 - mape: 6620.6904 - mse: 5.3730e-04 - val_loss: 1.6804e-04 - val_mae: 0.0075 - val_mape: 1118.0718 - val_mse: 1.6804e-04
Epoch 8/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.2755e-04 - mae: 0.0110 - mape: 5385.3901 - mse: 2.2755e-04 - val_loss: 1.6867e-04 - val_mae: 0.0075 - val_mape: 2161.7180 - val_mse: 1.6867e-04
Epoch 9/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7205e-04 - mae: 0.0090 - mape: 1983.0278 - mse: 1.7205e-04 - val_loss: 1.6907e-04 - val_mae: 0.0075 - val_mape: 1581.6910 - val_mse: 1.6907e-04
Epoch 10/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5322e-04 - mae: 0.0085 - mape: 331.7247 - mse: 1.5322e-04 - val_loss: 1.6896e-04 - val_mae: 0.0075 - val_mape: 1557.5295 - val_mse: 1.6896e-04
Epoch 11/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6675e-04 - mae: 0.0085 - mape: 1144.1931 - mse: 1.6675e-04 - val_loss: 1.6984e-04 - val_mae: 0.0076 - val_mape: 1579.2172 - val_mse: 1.6984e-04
Epoch 12/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6321e-04 - mae: 0.0086 - mape: 327.2558 - mse: 1.6321e-04 - val_loss: 1.6815e-04 - val_mae: 0.0074 - val_mape: 941.3961 - val_mse: 1.6815e-04
Epoch 13/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6340e-04 - mae: 0.0085 - mape: 1489.5779 - mse: 1.6340e-04 - val_loss: 1.7013e-04 - val_mae: 0.0076 - val_mape: 1800.0374 - val_mse: 1.7013e-04
Epoch 14/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5036e-04 - mae: 0.0082 - mape: 528.4880 - mse: 1.5036e-04 - val_loss: 1.7002e-04 - val_mae: 0.0077 - val_mape: 931.6909 - val_mse: 1.7002e-04
Epoch 15/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7029e-04 - mae: 0.0087 - mape: 841.6742 - mse: 1.7029e-04 - val_loss: 1.6791e-04 - val_mae: 0.0075 - val_mape: 853.7216 - val_mse: 1.6791e-04
Epoch 16/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5554e-04 - mae: 0.0084 - mape: 552.8186 - mse: 1.5554e-04 - val_loss: 1.6914e-04 - val_mae: 0.0075 - val_mape: 2125.3054 - val_mse: 1.6914e-04
Epoch 17/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.4003e-04 - mae: 0.0082 - mape: 1649.7247 - mse: 1.4003e-04 - val_loss: 1.7099e-04 - val_mae: 0.0076 - val_mape: 3169.1079 - val_mse: 1.7099e-04
Epoch 18/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5785e-04 - mae: 0.0085 - mape: 1367.0223 - mse: 1.5785e-04 - val_loss: 1.6772e-04 - val_mae: 0.0074 - val_mape: 1482.3492 - val_mse: 1.6772e-04
Epoch 19/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5825e-04 - mae: 0.0084 - mape: 1126.6378 - mse: 1.5825e-04 - val_loss: 1.7286e-04 - val_mae: 0.0078 - val_mape: 1724.5920 - val_mse: 1.7286e-04
Epoch 20/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7076e-04 - mae: 0.0086 - mape: 807.5335 - mse: 1.7076e-04 - val_loss: 1.6753e-04 - val_mae: 0.0074 - val_mape: 514.0081 - val_mse: 1.6753e-04
Epoch 21/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6016e-04 - mae: 0.0084 - mape: 547.3721 - mse: 1.6016e-04 - val_loss: 1.6836e-04 - val_mae: 0.0075 - val_mape: 1156.1422 - val_mse: 1.6836e-04
Epoch 22/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6501e-04 - mae: 0.0086 - mape: 1523.6746 - mse: 1.6501e-04 - val_loss: 1.6896e-04 - val_mae: 0.0075 - val_mape: 716.4579 - val_mse: 1.6896e-04
Epoch 23/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5899e-04 - mae: 0.0085 - mape: 2032.8384 - mse: 1.5899e-04 - val_loss: 1.7376e-04 - val_mae: 0.0078 - val_mape: 2619.1140 - val_mse: 1.7376e-04
Epoch 24/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6641e-04 - mae: 0.0087 - mape: 2115.0596 - mse: 1.6641e-04 - val_loss: 1.6859e-04 - val_mae: 0.0075 - val_mape: 1761.6132 - val_mse: 1.6859e-04
Epoch 25/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8201e-04 - mae: 0.0087 - mape: 1097.5447 - mse: 1.8201e-04 - val_loss: 1.6754e-04 - val_mae: 0.0074 - val_mape: 963.4312 - val_mse: 1.6754e-04
Epoch 26/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6296e-04 - mae: 0.0085 - mape: 1136.3932 - mse: 1.6296e-04 - val_loss: 1.7461e-04 - val_mae: 0.0079 - val_mape: 5179.2183 - val_mse: 1.7461e-04
Epoch 27/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5422e-04 - mae: 0.0084 - mape: 1003.3646 - mse: 1.5422e-04 - val_loss: 1.7199e-04 - val_mae: 0.0078 - val_mape: 3377.9263 - val_mse: 1.7199e-04
Epoch 28/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6097e-04 - mae: 0.0086 - mape: 3697.8811 - mse: 1.6097e-04 - val_loss: 1.6931e-04 - val_mae: 0.0076 - val_mape: 1880.4348 - val_mse: 1.6931e-04
Epoch 29/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6135e-04 - mae: 0.0084 - mape: 715.1796 - mse: 1.6135e-04 - val_loss: 1.7200e-04 - val_mae: 0.0077 - val_mape: 2700.6526 - val_mse: 1.7200e-04
Epoch 30/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5551e-04 - mae: 0.0086 - mape: 576.3250 - mse: 1.5551e-04 - val_loss: 1.7683e-04 - val_mae: 0.0081 - val_mape: 920.4055 - val_mse: 1.7683e-04
Epoch 31/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6638e-04 - mae: 0.0088 - mape: 602.7813 - mse: 1.6638e-04 - val_loss: 1.7525e-04 - val_mae: 0.0081 - val_mape: 1820.4819 - val_mse: 1.7525e-04
Epoch 32/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6901e-04 - mae: 0.0087 - mape: 1655.9215 - mse: 1.6901e-04 - val_loss: 1.6873e-04 - val_mae: 0.0075 - val_mape: 1791.2605 - val_mse: 1.6873e-04
Epoch 33/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5560e-04 - mae: 0.0086 - mape: 988.9609 - mse: 1.5560e-04 - val_loss: 1.7193e-04 - val_mae: 0.0077 - val_mape: 1739.0172 - val_mse: 1.7193e-04
Epoch 34/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5861e-04 - mae: 0.0086 - mape: 569.6761 - mse: 1.5861e-04 - val_loss: 1.7155e-04 - val_mae: 0.0077 - val_mape: 3402.9048 - val_mse: 1.7155e-04
Epoch 35/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.6375e-04 - mae: 0.0086 - mape: 2769.9819 - mse: 1.6375e-04 - val_loss: 1.7724e-04 - val_mae: 0.0080 - val_mape: 2513.8965 - val_mse: 1.7724e-04
Epoch 36/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6216e-04 - mae: 0.0086 - mape: 2213.5156 - mse: 1.6216e-04 - val_loss: 1.7966e-04 - val_mae: 0.0080 - val_mape: 4293.1597 - val_mse: 1.7966e-04
Epoch 37/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5302e-04 - mae: 0.0086 - mape: 330.3478 - mse: 1.5302e-04 - val_loss: 1.7456e-04 - val_mae: 0.0078 - val_mape: 1594.8558 - val_mse: 1.7456e-04
Epoch 38/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5310e-04 - mae: 0.0084 - mape: 2916.3123 - mse: 1.5310e-04 - val_loss: 1.7700e-04 - val_mae: 0.0080 - val_mape: 3316.5383 - val_mse: 1.7700e-04
Epoch 39/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.4433e-04 - mae: 0.0084 - mape: 495.6545 - mse: 1.4433e-04 - val_loss: 1.7149e-04 - val_mae: 0.0077 - val_mape: 1616.2090 - val_mse: 1.7149e-04
Epoch 40/75
125/125 ━━━━━━━━━━━━━━━━━━━━ -1s -6826us/step - loss: 1.6031e-04 - mae: 0.0086 - mape: 1241.6084 - mse: 1.6031e-04 - val_loss: 1.7008e-04 - val_mae: 0.0076 - val_mape: 497.7310 - val_mse: 1.7008e-04
Epoch 41/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7746e-04 - mae: 0.0092 - mape: 1652.3303 - mse: 1.7746e-04 - val_loss: 1.9981e-04 - val_mae: 0.0092 - val_mape: 6564.3960 - val_mse: 1.9981e-04
Epoch 42/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6949e-04 - mae: 0.0089 - mape: 1206.0098 - mse: 1.6949e-04 - val_loss: 1.7900e-04 - val_mae: 0.0082 - val_mape: 4635.4360 - val_mse: 1.7900e-04
Epoch 43/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6880e-04 - mae: 0.0090 - mape: 2147.1614 - mse: 1.6880e-04 - val_loss: 1.9529e-04 - val_mae: 0.0089 - val_mape: 5602.6943 - val_mse: 1.9529e-04
Epoch 44/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8525e-04 - mae: 0.0094 - mape: 2803.5056 - mse: 1.8525e-04 - val_loss: 1.7804e-04 - val_mae: 0.0081 - val_mape: 1494.0505 - val_mse: 1.7804e-04
Epoch 45/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6105e-04 - mae: 0.0088 - mape: 2120.8831 - mse: 1.6105e-04 - val_loss: 2.0079e-04 - val_mae: 0.0093 - val_mape: 4572.1035 - val_mse: 2.0079e-04
Epoch 46/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6963e-04 - mae: 0.0091 - mape: 2636.1897 - mse: 1.6963e-04 - val_loss: 1.7811e-04 - val_mae: 0.0081 - val_mape: 1721.8073 - val_mse: 1.7811e-04
Epoch 47/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7209e-04 - mae: 0.0090 - mape: 851.6979 - mse: 1.7209e-04 - val_loss: 1.8634e-04 - val_mae: 0.0084 - val_mape: 1043.5033 - val_mse: 1.8634e-04
Epoch 48/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5664e-04 - mae: 0.0087 - mape: 1078.3616 - mse: 1.5664e-04 - val_loss: 1.6842e-04 - val_mae: 0.0074 - val_mape: 2287.7358 - val_mse: 1.6842e-04
Epoch 49/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6704e-04 - mae: 0.0091 - mape: 2791.7410 - mse: 1.6704e-04 - val_loss: 1.6900e-04 - val_mae: 0.0074 - val_mape: 1089.1014 - val_mse: 1.6900e-04
Epoch 50/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5715e-04 - mae: 0.0085 - mape: 2592.5354 - mse: 1.5715e-04 - val_loss: 1.7398e-04 - val_mae: 0.0079 - val_mape: 1226.4031 - val_mse: 1.7398e-04
Epoch 51/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5761e-04 - mae: 0.0090 - mape: 3082.1067 - mse: 1.5761e-04 - val_loss: 1.7983e-04 - val_mae: 0.0082 - val_mape: 3232.4338 - val_mse: 1.7983e-04
Epoch 52/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6266e-04 - mae: 0.0090 - mape: 4510.4331 - mse: 1.6266e-04 - val_loss: 1.9319e-04 - val_mae: 0.0089 - val_mape: 5903.5391 - val_mse: 1.9319e-04
Epoch 53/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6444e-04 - mae: 0.0090 - mape: 1372.2440 - mse: 1.6444e-04 - val_loss: 1.9170e-04 - val_mae: 0.0088 - val_mape: 5957.4492 - val_mse: 1.9170e-04
Epoch 54/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7098e-04 - mae: 0.0092 - mape: 1427.4690 - mse: 1.7098e-04 - val_loss: 1.7562e-04 - val_mae: 0.0079 - val_mape: 2062.0583 - val_mse: 1.7562e-04
Epoch 55/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8648e-04 - mae: 0.0097 - mape: 1130.9558 - mse: 1.8648e-04 - val_loss: 1.7214e-04 - val_mae: 0.0078 - val_mape: 2961.8523 - val_mse: 1.7214e-04
Epoch 56/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7346e-04 - mae: 0.0093 - mape: 942.4798 - mse: 1.7346e-04 - val_loss: 1.7819e-04 - val_mae: 0.0082 - val_mape: 2876.7737 - val_mse: 1.7819e-04
Epoch 57/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6788e-04 - mae: 0.0090 - mape: 5113.3076 - mse: 1.6788e-04 - val_loss: 2.0065e-04 - val_mae: 0.0092 - val_mape: 3834.1030 - val_mse: 2.0065e-04
Epoch 58/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7928e-04 - mae: 0.0095 - mape: 2658.2026 - mse: 1.7928e-04 - val_loss: 1.9507e-04 - val_mae: 0.0088 - val_mape: 4557.0029 - val_mse: 1.9507e-04
Epoch 59/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7690e-04 - mae: 0.0095 - mape: 1713.7032 - mse: 1.7690e-04 - val_loss: 2.0078e-04 - val_mae: 0.0093 - val_mape: 1712.3402 - val_mse: 2.0078e-04
Epoch 60/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7157e-04 - mae: 0.0092 - mape: 1078.5931 - mse: 1.7157e-04 - val_loss: 1.8384e-04 - val_mae: 0.0085 - val_mape: 2737.5315 - val_mse: 1.8384e-04
Epoch 61/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8467e-04 - mae: 0.0097 - mape: 668.1204 - mse: 1.8467e-04 - val_loss: 1.6998e-04 - val_mae: 0.0076 - val_mape: 3078.7661 - val_mse: 1.6998e-04
Epoch 62/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9085e-04 - mae: 0.0093 - mape: 5866.3638 - mse: 1.9085e-04 - val_loss: 2.6597e-04 - val_mae: 0.0116 - val_mape: 9970.9902 - val_mse: 2.6597e-04
Epoch 63/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.1396e-04 - mae: 0.0104 - mape: 2805.8613 - mse: 2.1396e-04 - val_loss: 2.0744e-04 - val_mae: 0.0095 - val_mape: 8666.7676 - val_mse: 2.0744e-04
Epoch 64/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8705e-04 - mae: 0.0097 - mape: 3318.9883 - mse: 1.8705e-04 - val_loss: 1.7123e-04 - val_mae: 0.0078 - val_mape: 2500.0671 - val_mse: 1.7123e-04
Epoch 65/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7514e-04 - mae: 0.0095 - mape: 3093.3435 - mse: 1.7514e-04 - val_loss: 2.4008e-04 - val_mae: 0.0109 - val_mape: 3253.4661 - val_mse: 2.4008e-04
Epoch 66/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8467e-04 - mae: 0.0098 - mape: 8798.4014 - mse: 1.8467e-04 - val_loss: 2.0987e-04 - val_mae: 0.0095 - val_mape: 6493.7764 - val_mse: 2.0987e-04
Epoch 67/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9114e-04 - mae: 0.0096 - mape: 4125.7402 - mse: 1.9114e-04 - val_loss: 1.9207e-04 - val_mae: 0.0088 - val_mape: 882.3829 - val_mse: 1.9207e-04
Epoch 68/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6666e-04 - mae: 0.0091 - mape: 7277.7363 - mse: 1.6666e-04 - val_loss: 1.7149e-04 - val_mae: 0.0077 - val_mape: 3414.2375 - val_mse: 1.7149e-04
Epoch 69/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9478e-04 - mae: 0.0098 - mape: 2701.7847 - mse: 1.9478e-04 - val_loss: 2.3423e-04 - val_mae: 0.0105 - val_mape: 2863.7891 - val_mse: 2.3423e-04
Epoch 70/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.1584e-04 - mae: 0.0102 - mape: 2157.8252 - mse: 2.1584e-04 - val_loss: 1.7244e-04 - val_mae: 0.0079 - val_mape: 250.2711 - val_mse: 1.7244e-04
Epoch 71/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.0971e-04 - mae: 0.0101 - mape: 5491.4937 - mse: 2.0971e-04 - val_loss: 1.9122e-04 - val_mae: 0.0089 - val_mape: 590.6789 - val_mse: 1.9122e-04
Epoch 72/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8365e-04 - mae: 0.0093 - mape: 2194.4258 - mse: 1.8365e-04 - val_loss: 2.3755e-04 - val_mae: 0.0105 - val_mape: 7511.0308 - val_mse: 2.3755e-04
Epoch 73/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9583e-04 - mae: 0.0102 - mape: 7403.7412 - mse: 1.9583e-04 - val_loss: 1.9038e-04 - val_mae: 0.0089 - val_mape: 6768.0820 - val_mse: 1.9038e-04
Epoch 74/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6726e-04 - mae: 0.0092 - mape: 1676.6392 - mse: 1.6726e-04 - val_loss: 1.8071e-04 - val_mae: 0.0081 - val_mape: 5187.3140 - val_mse: 1.8071e-04
Epoch 75/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7456e-04 - mae: 0.0093 - mape: 2220.2651 - mse: 1.7456e-04 - val_loss: 2.4382e-04 - val_mae: 0.0109 - val_mape: 12572.2148 - val_mse: 2.4382e-04

Visualization
Visualization
Visualization
Visualization
1/33 ━━━━━━━━━━━━━━━━━━━━ 3s 94ms/step
/home/edtlk1203/anaconda3/envs/SIM-UOL-course/lib/python3.11/site-packages/keras/src/models/functional.py:225: UserWarning: The structure of `inputs` doesn't match the expected structure: datetime_input. Received: the structure of inputs={'datetime_input': '*', 'price_input': '*'}
  warnings.warn(
33/33 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step
[<matplotlib.lines.Line2D at 0x7f08cd998b90>]
Visualization

Because the datetime columns or the dataset, it has commonly repeating inputs, in which the model has likely to model the feature. The output seems very consistent as well. It might also be overfitted where the model becomes very deterministic with its values.

datetime_input = keras.Input(shape=(5,), name='datetime_input')

datetime_features = Dense(20, activation='tanh')(datetime_input)
datetime_features = BatchNormalization()(datetime_features)
datetime_features = keras.layers.Dropout(0.2)(datetime_features)

x = Dense(10)(datetime_features)
output = Dense(1)(x)

modelD = keras.Model(inputs = datetime_input, outputs = output, name='modelD')
modelD.summary()
keras.utils.plot_model(modelD, "modelD.png", show_shapes=True)

modelD.compile(
    optimizer='adam', 
    loss='mse', 
    metrics=['mae', 'mse', 'mape']
)

historyD = modelD.fit(
    modelC_input_datetime_train, modelC_output_train,
    validation_data= (modelC_input_datetime_valid, modelC_output_valid),
    epochs=75, batch_size=32
)

plt.plot(historyD.history['loss'])
plt.plot(historyD.history['val_loss'])
plt.title('model loss')
plt.show()

plt.plot(historyD.history['mae'])
plt.plot(historyD.history['val_mae'])
plt.title('mae loss')
plt.show()

plt.plot(historyD.history['mape'])
plt.plot(historyD.history['val_mape'])
plt.title('mae loss')
plt.show()

plt.plot(historyD.history['mse'])
plt.plot(historyD.history['val_mse'])
plt.title('mae loss')
plt.show()

predictionD = modelD.predict({'datetime_input': modelC_input_datetime_test, 'price_input': modelC_input_price_test})
plt.plot(modelC_output[-len(predictionC):])
plt.plot(predictionD)
Model: "modelD"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ datetime_input (InputLayer)     │ (None, 5)              │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_63 (Dense)                │ (None, 20)             │           120 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_49          │ (None, 20)             │            80 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dropout_35 (Dropout)            │ (None, 20)             │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_64 (Dense)                │ (None, 10)             │           210 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_65 (Dense)                │ (None, 1)              │            11 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
Total params: 421 (1.64 KB)
Trainable params: 381 (1.49 KB)
Non-trainable params: 40 (160.00 B)
Epoch 1/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 2s 7ms/step - loss: 0.6505 - mae: 0.5890 - mape: 234680.7656 - mse: 0.6505 - val_loss: 0.0064 - val_mae: 0.0663 - val_mape: 17342.3945 - val_mse: 0.0064
Epoch 2/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.1292 - mae: 0.2611 - mape: 77219.7500 - mse: 0.1292 - val_loss: 0.0026 - val_mae: 0.0424 - val_mape: 6485.5308 - val_mse: 0.0026
Epoch 3/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0264 - mae: 0.1185 - mape: 84449.3984 - mse: 0.0264 - val_loss: 0.0010 - val_mae: 0.0265 - val_mape: 35541.5508 - val_mse: 0.0010
Epoch 4/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0039 - mae: 0.0448 - mape: 12236.0303 - mse: 0.0039 - val_loss: 2.0146e-04 - val_mae: 0.0093 - val_mape: 7225.3706 - val_mse: 2.0146e-04
Epoch 5/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 5.6967e-04 - mae: 0.0175 - mape: 3361.7271 - mse: 5.6967e-04 - val_loss: 1.7287e-04 - val_mae: 0.0078 - val_mape: 446.2154 - val_mse: 1.7287e-04
Epoch 6/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9629e-04 - mae: 0.0098 - mape: 2824.5625 - mse: 1.9629e-04 - val_loss: 1.7025e-04 - val_mae: 0.0076 - val_mape: 643.7207 - val_mse: 1.7025e-04
Epoch 7/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6875e-04 - mae: 0.0086 - mape: 3871.0095 - mse: 1.6875e-04 - val_loss: 1.6907e-04 - val_mae: 0.0075 - val_mape: 1984.2802 - val_mse: 1.6907e-04
Epoch 8/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6177e-04 - mae: 0.0085 - mape: 6126.5762 - mse: 1.6177e-04 - val_loss: 1.6976e-04 - val_mae: 0.0076 - val_mape: 1384.3812 - val_mse: 1.6976e-04
Epoch 9/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5588e-04 - mae: 0.0085 - mape: 802.7013 - mse: 1.5588e-04 - val_loss: 1.7172e-04 - val_mae: 0.0077 - val_mape: 478.9084 - val_mse: 1.7172e-04
Epoch 10/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6537e-04 - mae: 0.0084 - mape: 1323.7391 - mse: 1.6537e-04 - val_loss: 1.7106e-04 - val_mae: 0.0077 - val_mape: 1054.0790 - val_mse: 1.7106e-04
Epoch 11/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5787e-04 - mae: 0.0085 - mape: 813.6808 - mse: 1.5787e-04 - val_loss: 1.6839e-04 - val_mae: 0.0075 - val_mape: 244.5675 - val_mse: 1.6839e-04
Epoch 12/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.4945e-04 - mae: 0.0083 - mape: 2413.3770 - mse: 1.4945e-04 - val_loss: 1.8089e-04 - val_mae: 0.0083 - val_mape: 4996.1709 - val_mse: 1.8089e-04
Epoch 13/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5957e-04 - mae: 0.0087 - mape: 1319.2533 - mse: 1.5957e-04 - val_loss: 1.7657e-04 - val_mae: 0.0079 - val_mape: 3306.3347 - val_mse: 1.7657e-04
Epoch 14/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6192e-04 - mae: 0.0086 - mape: 1334.7734 - mse: 1.6192e-04 - val_loss: 1.6934e-04 - val_mae: 0.0076 - val_mape: 1776.2274 - val_mse: 1.6934e-04
Epoch 15/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5699e-04 - mae: 0.0085 - mape: 354.2984 - mse: 1.5699e-04 - val_loss: 1.7201e-04 - val_mae: 0.0078 - val_mape: 651.0861 - val_mse: 1.7201e-04
Epoch 16/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5791e-04 - mae: 0.0087 - mape: 3659.7351 - mse: 1.5791e-04 - val_loss: 1.7161e-04 - val_mae: 0.0077 - val_mape: 807.7540 - val_mse: 1.7161e-04
Epoch 17/75
125/125 ━━━━━━━━━━━━━━━━━━━━ -1s -6706us/step - loss: 1.4971e-04 - mae: 0.0085 - mape: 1199.6300 - mse: 1.4971e-04 - val_loss: 1.7637e-04 - val_mae: 0.0080 - val_mape: 5485.9380 - val_mse: 1.7637e-04
Epoch 18/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.6665e-04 - mae: 0.0087 - mape: 5464.7886 - mse: 1.6665e-04 - val_loss: 1.8023e-04 - val_mae: 0.0082 - val_mape: 5193.5957 - val_mse: 1.8023e-04
Epoch 19/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6652e-04 - mae: 0.0089 - mape: 1560.0798 - mse: 1.6652e-04 - val_loss: 1.6985e-04 - val_mae: 0.0076 - val_mape: 1216.0916 - val_mse: 1.6985e-04
Epoch 20/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6052e-04 - mae: 0.0087 - mape: 607.8508 - mse: 1.6052e-04 - val_loss: 1.6918e-04 - val_mae: 0.0076 - val_mape: 2372.4573 - val_mse: 1.6918e-04
Epoch 21/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5581e-04 - mae: 0.0087 - mape: 3324.0649 - mse: 1.5581e-04 - val_loss: 1.8420e-04 - val_mae: 0.0085 - val_mape: 8303.2969 - val_mse: 1.8420e-04
Epoch 22/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5781e-04 - mae: 0.0089 - mape: 1577.7832 - mse: 1.5781e-04 - val_loss: 1.7001e-04 - val_mae: 0.0076 - val_mape: 1716.4554 - val_mse: 1.7001e-04
Epoch 23/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.7372e-04 - mae: 0.0090 - mape: 1115.9010 - mse: 1.7372e-04 - val_loss: 1.7045e-04 - val_mae: 0.0077 - val_mape: 2303.9775 - val_mse: 1.7045e-04
Epoch 24/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6630e-04 - mae: 0.0088 - mape: 420.4584 - mse: 1.6630e-04 - val_loss: 1.7462e-04 - val_mae: 0.0079 - val_mape: 607.7708 - val_mse: 1.7462e-04
Epoch 25/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - loss: 1.6269e-04 - mae: 0.0088 - mape: 1986.2097 - mse: 1.6269e-04 - val_loss: 1.7160e-04 - val_mae: 0.0078 - val_mape: 2219.1956 - val_mse: 1.7160e-04
Epoch 26/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6695e-04 - mae: 0.0089 - mape: 1329.6727 - mse: 1.6695e-04 - val_loss: 1.7887e-04 - val_mae: 0.0081 - val_mape: 4331.4390 - val_mse: 1.7887e-04
Epoch 27/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7068e-04 - mae: 0.0090 - mape: 2849.7905 - mse: 1.7068e-04 - val_loss: 1.8244e-04 - val_mae: 0.0083 - val_mape: 1840.2249 - val_mse: 1.8244e-04
Epoch 28/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5542e-04 - mae: 0.0088 - mape: 1732.7465 - mse: 1.5542e-04 - val_loss: 2.1281e-04 - val_mae: 0.0099 - val_mape: 13637.6719 - val_mse: 2.1281e-04
Epoch 29/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9202e-04 - mae: 0.0095 - mape: 2441.2690 - mse: 1.9202e-04 - val_loss: 1.9141e-04 - val_mae: 0.0088 - val_mape: 9597.2285 - val_mse: 1.9141e-04
Epoch 30/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7588e-04 - mae: 0.0091 - mape: 3274.0127 - mse: 1.7588e-04 - val_loss: 1.7630e-04 - val_mae: 0.0080 - val_mape: 5008.1685 - val_mse: 1.7630e-04
Epoch 31/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9039e-04 - mae: 0.0096 - mape: 3308.4927 - mse: 1.9039e-04 - val_loss: 1.7591e-04 - val_mae: 0.0079 - val_mape: 1873.1135 - val_mse: 1.7591e-04
Epoch 32/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6360e-04 - mae: 0.0090 - mape: 6012.0571 - mse: 1.6360e-04 - val_loss: 1.7941e-04 - val_mae: 0.0082 - val_mape: 5988.0371 - val_mse: 1.7941e-04
Epoch 33/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8710e-04 - mae: 0.0097 - mape: 15295.6406 - mse: 1.8710e-04 - val_loss: 1.7753e-04 - val_mae: 0.0081 - val_mape: 923.7822 - val_mse: 1.7753e-04
Epoch 34/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8134e-04 - mae: 0.0092 - mape: 2652.4841 - mse: 1.8134e-04 - val_loss: 1.9987e-04 - val_mae: 0.0093 - val_mape: 10703.5264 - val_mse: 1.9987e-04
Epoch 35/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7913e-04 - mae: 0.0093 - mape: 5123.5146 - mse: 1.7913e-04 - val_loss: 1.7129e-04 - val_mae: 0.0077 - val_mape: 2238.4062 - val_mse: 1.7129e-04
Epoch 36/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7641e-04 - mae: 0.0094 - mape: 6701.3662 - mse: 1.7641e-04 - val_loss: 2.3928e-04 - val_mae: 0.0109 - val_mape: 12322.1748 - val_mse: 2.3928e-04
Epoch 37/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8168e-04 - mae: 0.0096 - mape: 3616.5225 - mse: 1.8168e-04 - val_loss: 2.5485e-04 - val_mae: 0.0114 - val_mape: 14718.3779 - val_mse: 2.5485e-04
Epoch 38/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.0271e-04 - mae: 0.0103 - mape: 1540.7013 - mse: 2.0271e-04 - val_loss: 1.8062e-04 - val_mae: 0.0081 - val_mape: 7287.1304 - val_mse: 1.8062e-04
Epoch 39/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8336e-04 - mae: 0.0095 - mape: 2548.3784 - mse: 1.8336e-04 - val_loss: 1.6991e-04 - val_mae: 0.0076 - val_mape: 2209.9360 - val_mse: 1.6991e-04
Epoch 40/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9335e-04 - mae: 0.0101 - mape: 2519.0173 - mse: 1.9335e-04 - val_loss: 1.7119e-04 - val_mae: 0.0077 - val_mape: 2315.4758 - val_mse: 1.7119e-04
Epoch 41/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7608e-04 - mae: 0.0096 - mape: 2238.2830 - mse: 1.7608e-04 - val_loss: 2.0602e-04 - val_mae: 0.0096 - val_mape: 11577.9756 - val_mse: 2.0602e-04
Epoch 42/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8723e-04 - mae: 0.0098 - mape: 1664.8998 - mse: 1.8723e-04 - val_loss: 1.9672e-04 - val_mae: 0.0091 - val_mape: 10073.5488 - val_mse: 1.9672e-04
Epoch 43/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9912e-04 - mae: 0.0101 - mape: 5546.2617 - mse: 1.9912e-04 - val_loss: 2.2607e-04 - val_mae: 0.0104 - val_mape: 13331.7168 - val_mse: 2.2607e-04
Epoch 44/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8879e-04 - mae: 0.0098 - mape: 1677.9319 - mse: 1.8879e-04 - val_loss: 2.6500e-04 - val_mae: 0.0115 - val_mape: 15841.1602 - val_mse: 2.6500e-04
Epoch 45/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.0647e-04 - mae: 0.0103 - mape: 1721.4519 - mse: 2.0647e-04 - val_loss: 1.7958e-04 - val_mae: 0.0083 - val_mape: 6633.0454 - val_mse: 1.7958e-04
Epoch 46/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.0931e-04 - mae: 0.0105 - mape: 3057.4707 - mse: 2.0931e-04 - val_loss: 2.0098e-04 - val_mae: 0.0090 - val_mape: 1882.1260 - val_mse: 2.0098e-04
Epoch 47/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.1805e-04 - mae: 0.0106 - mape: 5244.9380 - mse: 2.1805e-04 - val_loss: 1.9637e-04 - val_mae: 0.0091 - val_mape: 8004.0986 - val_mse: 1.9637e-04
Epoch 48/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7652e-04 - mae: 0.0097 - mape: 563.6208 - mse: 1.7652e-04 - val_loss: 1.9515e-04 - val_mae: 0.0088 - val_mape: 6645.2080 - val_mse: 1.9515e-04
Epoch 49/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.0129e-04 - mae: 0.0101 - mape: 5640.7954 - mse: 2.0129e-04 - val_loss: 3.1288e-04 - val_mae: 0.0133 - val_mape: 8969.4326 - val_mse: 3.1288e-04
Epoch 50/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 3.0679e-04 - mae: 0.0129 - mape: 8817.4980 - mse: 3.0679e-04 - val_loss: 1.7886e-04 - val_mae: 0.0080 - val_mape: 461.4332 - val_mse: 1.7886e-04
Epoch 51/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8927e-04 - mae: 0.0099 - mape: 875.7701 - mse: 1.8927e-04 - val_loss: 2.1959e-04 - val_mae: 0.0100 - val_mape: 5425.6660 - val_mse: 2.1959e-04
Epoch 52/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8959e-04 - mae: 0.0099 - mape: 1633.6549 - mse: 1.8959e-04 - val_loss: 1.9602e-04 - val_mae: 0.0090 - val_mape: 994.9257 - val_mse: 1.9602e-04
Epoch 53/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8822e-04 - mae: 0.0099 - mape: 1547.9067 - mse: 1.8822e-04 - val_loss: 1.8220e-04 - val_mae: 0.0084 - val_mape: 1809.0596 - val_mse: 1.8220e-04
Epoch 54/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.1511e-04 - mae: 0.0107 - mape: 1837.4563 - mse: 2.1511e-04 - val_loss: 2.4257e-04 - val_mae: 0.0109 - val_mape: 18420.5703 - val_mse: 2.4257e-04
Epoch 55/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8845e-04 - mae: 0.0100 - mape: 2493.5613 - mse: 1.8845e-04 - val_loss: 1.8253e-04 - val_mae: 0.0083 - val_mape: 368.4644 - val_mse: 1.8253e-04
Epoch 56/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.3457e-04 - mae: 0.0113 - mape: 4417.1934 - mse: 2.3457e-04 - val_loss: 1.9743e-04 - val_mae: 0.0091 - val_mape: 10870.6865 - val_mse: 1.9743e-04
Epoch 57/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.2706e-04 - mae: 0.0109 - mape: 1838.5507 - mse: 2.2706e-04 - val_loss: 1.7296e-04 - val_mae: 0.0078 - val_mape: 2007.8768 - val_mse: 1.7296e-04
Epoch 58/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8301e-04 - mae: 0.0098 - mape: 1599.9448 - mse: 1.8301e-04 - val_loss: 2.8138e-04 - val_mae: 0.0121 - val_mape: 3552.3977 - val_mse: 2.8138e-04
Epoch 59/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.1918e-04 - mae: 0.0110 - mape: 1754.5240 - mse: 2.1918e-04 - val_loss: 1.9457e-04 - val_mae: 0.0088 - val_mape: 3385.8647 - val_mse: 1.9457e-04
Epoch 60/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9891e-04 - mae: 0.0103 - mape: 2400.6409 - mse: 1.9891e-04 - val_loss: 2.0959e-04 - val_mae: 0.0095 - val_mape: 4777.1670 - val_mse: 2.0959e-04
Epoch 61/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.0633e-04 - mae: 0.0104 - mape: 6671.6001 - mse: 2.0633e-04 - val_loss: 1.7953e-04 - val_mae: 0.0082 - val_mape: 5437.6943 - val_mse: 1.7953e-04
Epoch 62/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9714e-04 - mae: 0.0103 - mape: 8839.9082 - mse: 1.9714e-04 - val_loss: 1.8987e-04 - val_mae: 0.0088 - val_mape: 7006.0259 - val_mse: 1.8987e-04
Epoch 63/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9130e-04 - mae: 0.0098 - mape: 1307.3403 - mse: 1.9130e-04 - val_loss: 2.2400e-04 - val_mae: 0.0102 - val_mape: 6895.5273 - val_mse: 2.2400e-04
Epoch 64/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.0808e-04 - mae: 0.0106 - mape: 1525.5756 - mse: 2.0808e-04 - val_loss: 1.8319e-04 - val_mae: 0.0083 - val_mape: 4422.1196 - val_mse: 1.8319e-04
Epoch 65/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9026e-04 - mae: 0.0099 - mape: 1101.6812 - mse: 1.9026e-04 - val_loss: 2.3590e-04 - val_mae: 0.0107 - val_mape: 9592.4863 - val_mse: 2.3590e-04
Epoch 66/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.1786e-04 - mae: 0.0106 - mape: 23921.3516 - mse: 2.1786e-04 - val_loss: 1.7778e-04 - val_mae: 0.0081 - val_mape: 5180.8501 - val_mse: 1.7778e-04
Epoch 67/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.1401e-04 - mae: 0.0108 - mape: 7738.7974 - mse: 2.1401e-04 - val_loss: 1.7144e-04 - val_mae: 0.0077 - val_mape: 1211.1626 - val_mse: 1.7144e-04
Epoch 68/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.3508e-04 - mae: 0.0108 - mape: 1442.1818 - mse: 2.3508e-04 - val_loss: 1.7743e-04 - val_mae: 0.0083 - val_mape: 3014.4961 - val_mse: 1.7743e-04
Epoch 69/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.1396e-04 - mae: 0.0105 - mape: 2714.3120 - mse: 2.1396e-04 - val_loss: 2.2762e-04 - val_mae: 0.0105 - val_mape: 14389.8281 - val_mse: 2.2762e-04
Epoch 70/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8634e-04 - mae: 0.0098 - mape: 1966.6469 - mse: 1.8634e-04 - val_loss: 1.7322e-04 - val_mae: 0.0078 - val_mape: 2586.3381 - val_mse: 1.7322e-04
Epoch 71/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9506e-04 - mae: 0.0100 - mape: 17863.1328 - mse: 1.9506e-04 - val_loss: 1.7514e-04 - val_mae: 0.0079 - val_mape: 6851.6475 - val_mse: 1.7514e-04
Epoch 72/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.0591e-04 - mae: 0.0100 - mape: 12818.4102 - mse: 2.0591e-04 - val_loss: 1.8416e-04 - val_mae: 0.0085 - val_mape: 834.5134 - val_mse: 1.8416e-04
Epoch 73/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9554e-04 - mae: 0.0103 - mape: 3228.9502 - mse: 1.9554e-04 - val_loss: 1.7749e-04 - val_mae: 0.0081 - val_mape: 1893.7869 - val_mse: 1.7749e-04
Epoch 74/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.1581e-04 - mae: 0.0104 - mape: 7368.6548 - mse: 2.1581e-04 - val_loss: 1.7575e-04 - val_mae: 0.0079 - val_mape: 3895.7505 - val_mse: 1.7575e-04
Epoch 75/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.0602e-04 - mae: 0.0104 - mape: 5435.3926 - mse: 2.0602e-04 - val_loss: 1.9883e-04 - val_mae: 0.0092 - val_mape: 5531.8018 - val_mse: 1.9883e-04

Visualization
Visualization
Visualization
Visualization
1/33 ━━━━━━━━━━━━━━━━━━━━ 2s 87ms/step
/home/edtlk1203/anaconda3/envs/SIM-UOL-course/lib/python3.11/site-packages/keras/src/models/functional.py:225: UserWarning: The structure of `inputs` doesn't match the expected structure: datetime_input. Received: the structure of inputs={'datetime_input': '*', 'price_input': '*'}
  warnings.warn(
33/33 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step
[<matplotlib.lines.Line2D at 0x7f08adc577d0>]
Visualization

Seems to be the case that by using the datetime dataset alone, this is the output. Based on this result, in the combined model, we noted that there are repeating patterns. It is cause by the datetime model and it might also be because of the change of price dataset and its output, it shrinks the repeating shown.

datetime_input = keras.Input(shape=(5,), name='datetime_input')

datetime_features = Dense(64, activation='tanh')(datetime_input)
datetime_features = BatchNormalization()(datetime_features)
datetime_features = keras.layers.Dropout(0.2)(datetime_features)

datetime_features = Dense(10, activation='tanh')(datetime_features)
datetime_features = BatchNormalization()(datetime_features)
datetime_features = keras.layers.Dropout(0.2)(datetime_features)

datetime_features = Dense(5, activation='tanh')(datetime_features)
datetime_features = BatchNormalization()(datetime_features)
datetime_features = keras.layers.Dropout(0.2)(datetime_features)

output = Dense(1)(datetime_features)

modelD = keras.Model(inputs = datetime_input, outputs = output, name='modelD')
modelD.summary()
keras.utils.plot_model(modelD, "modelD.png", show_shapes=True)

modelD.compile(
    optimizer='adam', 
    loss='mse', 
    metrics=['mae', 'mse', 'mape']
)

historyD = modelD.fit(
    modelC_input_datetime_train, modelC_output_train,
    validation_data= (modelC_input_datetime_valid, modelC_output_valid),
    epochs=75, batch_size=32
)

plt.plot(historyD.history['loss'])
plt.plot(historyD.history['val_loss'])
plt.title('model loss')
plt.show()

plt.plot(historyD.history['mae'])
plt.plot(historyD.history['val_mae'])
plt.title('mae loss')
plt.show()

plt.plot(historyD.history['mape'])
plt.plot(historyD.history['val_mape'])
plt.title('mae loss')
plt.show()

plt.plot(historyD.history['mse'])
plt.plot(historyD.history['val_mse'])
plt.title('mae loss')
plt.show()

predictionD = modelD.predict({'datetime_input': modelC_input_datetime_test, 'price_input': modelC_input_price_test})
plt.plot(modelC_output[-len(predictionC):])
plt.plot(predictionD)
Model: "modelD"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ datetime_input (InputLayer)     │ (None, 5)              │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_78 (Dense)                │ (None, 64)             │           384 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_58          │ (None, 64)             │           256 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dropout_44 (Dropout)            │ (None, 64)             │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_79 (Dense)                │ (None, 10)             │           650 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_59          │ (None, 10)             │            40 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dropout_45 (Dropout)            │ (None, 10)             │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_80 (Dense)                │ (None, 5)              │            55 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_60          │ (None, 5)              │            20 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dropout_46 (Dropout)            │ (None, 5)              │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_81 (Dense)                │ (None, 1)              │             6 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
Total params: 1,411 (5.51 KB)
Trainable params: 1,253 (4.89 KB)
Non-trainable params: 158 (632.00 B)
Epoch 1/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 4s 7ms/step - loss: 2.0860 - mae: 1.1393 - mape: 132694.8750 - mse: 2.0860 - val_loss: 0.0180 - val_mae: 0.1151 - val_mape: 40926.5156 - val_mse: 0.0180
Epoch 2/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.7414 - mae: 0.6902 - mape: 158809.3438 - mse: 0.7414 - val_loss: 0.0201 - val_mae: 0.1172 - val_mape: 249027.8125 - val_mse: 0.0201
Epoch 3/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.4757 - mae: 0.5494 - mape: 168908.9219 - mse: 0.4757 - val_loss: 0.0144 - val_mae: 0.0960 - val_mape: 251976.1094 - val_mse: 0.0144
Epoch 4/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.3083 - mae: 0.4396 - mape: 230182.2031 - mse: 0.3083 - val_loss: 0.0111 - val_mae: 0.0797 - val_mape: 111660.4219 - val_mse: 0.0111
Epoch 5/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.2397 - mae: 0.3824 - mape: 133765.5938 - mse: 0.2397 - val_loss: 0.0071 - val_mae: 0.0641 - val_mape: 62603.7656 - val_mse: 0.0071
Epoch 6/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.1799 - mae: 0.3347 - mape: 271129.2812 - mse: 0.1799 - val_loss: 0.0049 - val_mae: 0.0578 - val_mape: 64309.0781 - val_mse: 0.0049
Epoch 7/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.1369 - mae: 0.2894 - mape: 58788.0586 - mse: 0.1369 - val_loss: 0.0034 - val_mae: 0.0474 - val_mape: 37093.5430 - val_mse: 0.0034
Epoch 8/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.1037 - mae: 0.2484 - mape: 310259.4688 - mse: 0.1037 - val_loss: 0.0023 - val_mae: 0.0380 - val_mape: 43587.7812 - val_mse: 0.0023
Epoch 9/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0784 - mae: 0.2152 - mape: 30097.5723 - mse: 0.0784 - val_loss: 0.0021 - val_mae: 0.0372 - val_mape: 40557.5469 - val_mse: 0.0021
Epoch 10/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0627 - mae: 0.1923 - mape: 141631.7344 - mse: 0.0627 - val_loss: 0.0015 - val_mae: 0.0313 - val_mape: 19908.8828 - val_mse: 0.0015
Epoch 11/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0492 - mae: 0.1733 - mape: 177089.9219 - mse: 0.0492 - val_loss: 0.0013 - val_mae: 0.0281 - val_mape: 8085.5664 - val_mse: 0.0013
Epoch 12/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0395 - mae: 0.1530 - mape: 30469.0039 - mse: 0.0395 - val_loss: 0.0012 - val_mae: 0.0270 - val_mape: 13090.2451 - val_mse: 0.0012
Epoch 13/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0326 - mae: 0.1413 - mape: 37991.3750 - mse: 0.0326 - val_loss: 8.2405e-04 - val_mae: 0.0212 - val_mape: 9525.0674 - val_mse: 8.2405e-04
Epoch 14/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0243 - mae: 0.1203 - mape: 66090.3594 - mse: 0.0243 - val_loss: 7.9032e-04 - val_mae: 0.0218 - val_mape: 14330.8916 - val_mse: 7.9032e-04
Epoch 15/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0181 - mae: 0.1037 - mape: 125628.3906 - mse: 0.0181 - val_loss: 6.5130e-04 - val_mae: 0.0194 - val_mape: 13487.7656 - val_mse: 6.5130e-04
Epoch 16/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0164 - mae: 0.0975 - mape: 45104.4922 - mse: 0.0164 - val_loss: 5.9260e-04 - val_mae: 0.0179 - val_mape: 18073.6387 - val_mse: 5.9260e-04
Epoch 17/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0127 - mae: 0.0849 - mape: 81052.6719 - mse: 0.0127 - val_loss: 4.4887e-04 - val_mae: 0.0149 - val_mape: 15731.7354 - val_mse: 4.4887e-04
Epoch 18/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0108 - mae: 0.0797 - mape: 14508.9736 - mse: 0.0108 - val_loss: 3.8187e-04 - val_mae: 0.0136 - val_mape: 11309.8721 - val_mse: 3.8187e-04
Epoch 19/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0089 - mae: 0.0726 - mape: 84226.7578 - mse: 0.0089 - val_loss: 3.0318e-04 - val_mae: 0.0121 - val_mape: 6328.5776 - val_mse: 3.0318e-04
Epoch 20/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0067 - mae: 0.0628 - mape: 34173.1602 - mse: 0.0067 - val_loss: 2.6408e-04 - val_mae: 0.0110 - val_mape: 4621.7339 - val_mse: 2.6408e-04
Epoch 21/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0060 - mae: 0.0596 - mape: 37521.8125 - mse: 0.0060 - val_loss: 2.3450e-04 - val_mae: 0.0103 - val_mape: 2680.4309 - val_mse: 2.3450e-04
Epoch 22/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0049 - mae: 0.0536 - mape: 9966.9629 - mse: 0.0049 - val_loss: 2.1568e-04 - val_mae: 0.0096 - val_mape: 1276.1893 - val_mse: 2.1568e-04
Epoch 23/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0036 - mae: 0.0459 - mape: 62753.5508 - mse: 0.0036 - val_loss: 2.0472e-04 - val_mae: 0.0093 - val_mape: 525.2862 - val_mse: 2.0472e-04
Epoch 24/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0029 - mae: 0.0415 - mape: 41220.2734 - mse: 0.0029 - val_loss: 1.9897e-04 - val_mae: 0.0092 - val_mape: 3504.1489 - val_mse: 1.9897e-04
Epoch 25/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0024 - mae: 0.0368 - mape: 7282.1416 - mse: 0.0024 - val_loss: 1.8981e-04 - val_mae: 0.0087 - val_mape: 2770.0857 - val_mse: 1.8981e-04
Epoch 26/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0021 - mae: 0.0345 - mape: 23608.8867 - mse: 0.0021 - val_loss: 1.9338e-04 - val_mae: 0.0090 - val_mape: 5433.8257 - val_mse: 1.9338e-04
Epoch 27/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0017 - mae: 0.0318 - mape: 15538.2305 - mse: 0.0017 - val_loss: 1.8525e-04 - val_mae: 0.0086 - val_mape: 3975.8584 - val_mse: 1.8525e-04
Epoch 28/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0015 - mae: 0.0289 - mape: 13813.7275 - mse: 0.0015 - val_loss: 1.7978e-04 - val_mae: 0.0082 - val_mape: 1830.4553 - val_mse: 1.7978e-04
Epoch 29/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0012 - mae: 0.0260 - mape: 28600.3672 - mse: 0.0012 - val_loss: 1.7863e-04 - val_mae: 0.0082 - val_mape: 970.5786 - val_mse: 1.7863e-04
Epoch 30/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.0010 - mae: 0.0241 - mape: 9184.1201 - mse: 0.0010 - val_loss: 1.7930e-04 - val_mae: 0.0083 - val_mape: 2368.1584 - val_mse: 1.7930e-04
Epoch 31/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 9.0468e-04 - mae: 0.0231 - mape: 6120.2729 - mse: 9.0468e-04 - val_loss: 1.7687e-04 - val_mae: 0.0081 - val_mape: 4090.7068 - val_mse: 1.7687e-04
Epoch 32/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 7.3264e-04 - mae: 0.0208 - mape: 19892.8359 - mse: 7.3264e-04 - val_loss: 1.7507e-04 - val_mae: 0.0080 - val_mape: 3023.7405 - val_mse: 1.7507e-04
Epoch 33/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 6.3745e-04 - mae: 0.0192 - mape: 9741.8896 - mse: 6.3745e-04 - val_loss: 1.7577e-04 - val_mae: 0.0081 - val_mape: 2944.2217 - val_mse: 1.7577e-04
Epoch 34/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 5.9553e-04 - mae: 0.0189 - mape: 11759.5146 - mse: 5.9553e-04 - val_loss: 1.7436e-04 - val_mae: 0.0080 - val_mape: 3161.5212 - val_mse: 1.7436e-04
Epoch 35/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 4.9563e-04 - mae: 0.0169 - mape: 19516.4219 - mse: 4.9563e-04 - val_loss: 1.7340e-04 - val_mae: 0.0079 - val_mape: 2414.3945 - val_mse: 1.7340e-04
Epoch 36/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 4.4313e-04 - mae: 0.0161 - mape: 1975.2980 - mse: 4.4313e-04 - val_loss: 1.7109e-04 - val_mae: 0.0077 - val_mape: 1059.6799 - val_mse: 1.7109e-04
Epoch 37/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 3.6584e-04 - mae: 0.0147 - mape: 2983.7944 - mse: 3.6584e-04 - val_loss: 1.7262e-04 - val_mae: 0.0078 - val_mape: 789.9581 - val_mse: 1.7262e-04
Epoch 38/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 3.0895e-04 - mae: 0.0133 - mape: 1898.3628 - mse: 3.0895e-04 - val_loss: 1.7082e-04 - val_mae: 0.0077 - val_mape: 1839.9640 - val_mse: 1.7082e-04
Epoch 39/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.8474e-04 - mae: 0.0127 - mape: 1486.3293 - mse: 2.8474e-04 - val_loss: 1.7157e-04 - val_mae: 0.0078 - val_mape: 2053.4236 - val_mse: 1.7157e-04
Epoch 40/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.5425e-04 - mae: 0.0122 - mape: 2964.4426 - mse: 2.5425e-04 - val_loss: 1.6948e-04 - val_mae: 0.0076 - val_mape: 1649.2528 - val_mse: 1.6948e-04
Epoch 41/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.3506e-04 - mae: 0.0114 - mape: 6578.5088 - mse: 2.3506e-04 - val_loss: 1.7018e-04 - val_mae: 0.0077 - val_mape: 1516.8623 - val_mse: 1.7018e-04
Epoch 42/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.1905e-04 - mae: 0.0107 - mape: 2345.3059 - mse: 2.1905e-04 - val_loss: 1.6924e-04 - val_mae: 0.0076 - val_mape: 1884.4343 - val_mse: 1.6924e-04
Epoch 43/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 2.1755e-04 - mae: 0.0104 - mape: 2717.1880 - mse: 2.1755e-04 - val_loss: 1.6892e-04 - val_mae: 0.0076 - val_mape: 485.2090 - val_mse: 1.6892e-04
Epoch 44/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7914e-04 - mae: 0.0098 - mape: 2728.5337 - mse: 1.7914e-04 - val_loss: 1.6852e-04 - val_mae: 0.0075 - val_mape: 842.4827 - val_mse: 1.6852e-04
Epoch 45/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8060e-04 - mae: 0.0096 - mape: 866.3688 - mse: 1.8060e-04 - val_loss: 1.6922e-04 - val_mae: 0.0076 - val_mape: 2035.6401 - val_mse: 1.6922e-04
Epoch 46/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6537e-04 - mae: 0.0090 - mape: 2252.5549 - mse: 1.6537e-04 - val_loss: 1.6775e-04 - val_mae: 0.0074 - val_mape: 609.3773 - val_mse: 1.6775e-04
Epoch 47/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6527e-04 - mae: 0.0089 - mape: 4594.7363 - mse: 1.6527e-04 - val_loss: 1.6740e-04 - val_mae: 0.0074 - val_mape: 565.3281 - val_mse: 1.6740e-04
Epoch 48/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5771e-04 - mae: 0.0088 - mape: 483.2268 - mse: 1.5771e-04 - val_loss: 1.6864e-04 - val_mae: 0.0075 - val_mape: 318.3311 - val_mse: 1.6864e-04
Epoch 49/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5911e-04 - mae: 0.0086 - mape: 608.5223 - mse: 1.5911e-04 - val_loss: 1.6865e-04 - val_mae: 0.0075 - val_mape: 1056.9960 - val_mse: 1.6865e-04
Epoch 50/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5078e-04 - mae: 0.0083 - mape: 1483.1378 - mse: 1.5078e-04 - val_loss: 1.6832e-04 - val_mae: 0.0075 - val_mape: 516.7338 - val_mse: 1.6832e-04
Epoch 51/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.4994e-04 - mae: 0.0083 - mape: 495.2984 - mse: 1.4994e-04 - val_loss: 1.6835e-04 - val_mae: 0.0075 - val_mape: 173.2652 - val_mse: 1.6835e-04
Epoch 52/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.4829e-04 - mae: 0.0082 - mape: 2743.7158 - mse: 1.4829e-04 - val_loss: 1.6828e-04 - val_mae: 0.0075 - val_mape: 1019.8170 - val_mse: 1.6828e-04
Epoch 53/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5585e-04 - mae: 0.0083 - mape: 275.6898 - mse: 1.5585e-04 - val_loss: 1.6850e-04 - val_mae: 0.0075 - val_mape: 892.9154 - val_mse: 1.6850e-04
Epoch 54/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7011e-04 - mae: 0.0085 - mape: 1617.1630 - mse: 1.7011e-04 - val_loss: 1.6871e-04 - val_mae: 0.0075 - val_mape: 1911.5564 - val_mse: 1.6871e-04
Epoch 55/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5688e-04 - mae: 0.0083 - mape: 399.3836 - mse: 1.5688e-04 - val_loss: 1.6855e-04 - val_mae: 0.0075 - val_mape: 357.5268 - val_mse: 1.6855e-04
Epoch 56/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.4073e-04 - mae: 0.0080 - mape: 776.9605 - mse: 1.4073e-04 - val_loss: 1.6871e-04 - val_mae: 0.0075 - val_mape: 151.5964 - val_mse: 1.6871e-04
Epoch 57/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.4763e-04 - mae: 0.0082 - mape: 226.8158 - mse: 1.4763e-04 - val_loss: 1.6759e-04 - val_mae: 0.0074 - val_mape: 443.5065 - val_mse: 1.6759e-04
Epoch 58/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.4732e-04 - mae: 0.0080 - mape: 332.0960 - mse: 1.4732e-04 - val_loss: 1.6746e-04 - val_mae: 0.0074 - val_mape: 502.9794 - val_mse: 1.6746e-04
Epoch 59/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.8056e-04 - mae: 0.0086 - mape: 247.8773 - mse: 1.8056e-04 - val_loss: 1.6842e-04 - val_mae: 0.0075 - val_mape: 966.7780 - val_mse: 1.6842e-04
Epoch 60/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6181e-04 - mae: 0.0085 - mape: 347.6263 - mse: 1.6181e-04 - val_loss: 1.7069e-04 - val_mae: 0.0077 - val_mape: 2846.6223 - val_mse: 1.7069e-04
Epoch 61/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5423e-04 - mae: 0.0083 - mape: 1364.8972 - mse: 1.5423e-04 - val_loss: 1.6842e-04 - val_mae: 0.0075 - val_mape: 1137.6448 - val_mse: 1.6842e-04
Epoch 62/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5035e-04 - mae: 0.0083 - mape: 1057.9099 - mse: 1.5035e-04 - val_loss: 1.6778e-04 - val_mae: 0.0074 - val_mape: 957.8946 - val_mse: 1.6778e-04
Epoch 63/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.4041e-04 - mae: 0.0079 - mape: 307.0705 - mse: 1.4041e-04 - val_loss: 1.6754e-04 - val_mae: 0.0074 - val_mape: 158.0596 - val_mse: 1.6754e-04
Epoch 64/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5351e-04 - mae: 0.0083 - mape: 253.5955 - mse: 1.5351e-04 - val_loss: 1.6796e-04 - val_mae: 0.0075 - val_mape: 777.1265 - val_mse: 1.6796e-04
Epoch 65/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5685e-04 - mae: 0.0084 - mape: 581.8508 - mse: 1.5685e-04 - val_loss: 1.6793e-04 - val_mae: 0.0075 - val_mape: 598.3649 - val_mse: 1.6793e-04
Epoch 66/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5764e-04 - mae: 0.0084 - mape: 675.2267 - mse: 1.5764e-04 - val_loss: 1.6775e-04 - val_mae: 0.0074 - val_mape: 441.4164 - val_mse: 1.6775e-04
Epoch 67/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6231e-04 - mae: 0.0083 - mape: 236.3635 - mse: 1.6231e-04 - val_loss: 1.6896e-04 - val_mae: 0.0076 - val_mape: 1022.7287 - val_mse: 1.6896e-04
Epoch 68/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.4831e-04 - mae: 0.0082 - mape: 585.8362 - mse: 1.4831e-04 - val_loss: 1.7329e-04 - val_mae: 0.0079 - val_mape: 436.3025 - val_mse: 1.7329e-04
Epoch 69/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5733e-04 - mae: 0.0085 - mape: 523.1213 - mse: 1.5733e-04 - val_loss: 1.6872e-04 - val_mae: 0.0075 - val_mape: 1779.4418 - val_mse: 1.6872e-04
Epoch 70/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.7611e-04 - mae: 0.0086 - mape: 571.9774 - mse: 1.7611e-04 - val_loss: 1.6793e-04 - val_mae: 0.0074 - val_mape: 2034.4456 - val_mse: 1.6793e-04
Epoch 71/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6760e-04 - mae: 0.0086 - mape: 692.4510 - mse: 1.6760e-04 - val_loss: 1.7167e-04 - val_mae: 0.0078 - val_mape: 1304.9198 - val_mse: 1.7167e-04
Epoch 72/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5119e-04 - mae: 0.0083 - mape: 293.2763 - mse: 1.5119e-04 - val_loss: 1.6777e-04 - val_mae: 0.0074 - val_mape: 943.5166 - val_mse: 1.6777e-04
Epoch 73/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5618e-04 - mae: 0.0083 - mape: 1583.2603 - mse: 1.5618e-04 - val_loss: 1.6850e-04 - val_mae: 0.0075 - val_mape: 736.8768 - val_mse: 1.6850e-04
Epoch 74/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5406e-04 - mae: 0.0083 - mape: 214.4575 - mse: 1.5406e-04 - val_loss: 1.6761e-04 - val_mae: 0.0074 - val_mape: 290.8688 - val_mse: 1.6761e-04
Epoch 75/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.5509e-04 - mae: 0.0083 - mape: 748.8026 - mse: 1.5509e-04 - val_loss: 1.6966e-04 - val_mae: 0.0076 - val_mape: 1248.1492 - val_mse: 1.6966e-04

Visualization
Visualization
Visualization
Visualization
1/33 ━━━━━━━━━━━━━━━━━━━━ 4s 146ms/step
/home/edtlk1203/anaconda3/envs/SIM-UOL-course/lib/python3.11/site-packages/keras/src/models/functional.py:225: UserWarning: The structure of `inputs` doesn't match the expected structure: datetime_input. Received: the structure of inputs={'datetime_input': '*', 'price_input': '*'}
  warnings.warn(
33/33 ━━━━━━━━━━━━━━━━━━━━ 0s 10ms/step
[<matplotlib.lines.Line2D at 0x7f08ad038b90>]
Visualization
price_input = keras.Input(shape=(7,5), name='price_input')

conv1 = keras.layers.Conv1D(64, 3, activation='relu')(price_input)
conv1 = BatchNormalization()(conv1)
conv1 = keras.layers.MaxPooling1D(2)(conv1)
dropout = keras.layers.Dropout(0.2)(conv1)
lstm = LSTM(7, activation='relu')(dropout)
lstm = BatchNormalization()(lstm)
output = Dense(1)(lstm)

modelE = keras.Model(inputs = price_input, outputs = output, name='modelE')
modelE.summary()
keras.utils.plot_model(modelE, "modelE.png", show_shapes=True)
Model: "modelE"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ price_input (InputLayer)        │ (None, 7, 5)           │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ conv1d_4 (Conv1D)               │ (None, 5, 64)          │         1,024 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_61          │ (None, 5, 64)          │           256 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ max_pooling1d_4 (MaxPooling1D)  │ (None, 2, 64)          │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dropout_47 (Dropout)            │ (None, 2, 64)          │             0 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ lstm_35 (LSTM)                  │ (None, 7)              │         2,016 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_62          │ (None, 7)              │            28 │
│ (BatchNormalization)            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_82 (Dense)                │ (None, 1)              │             8 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
Total params: 3,332 (13.02 KB)
Trainable params: 3,190 (12.46 KB)
Non-trainable params: 142 (568.00 B)
Visualization
modelE.compile(
    optimizer='adam', 
    loss='mse', 
    metrics=['mae', 'mse', 'mape']
)

historyE = modelE.fit(
    modelC_input_price_train, modelC_output_train,
    validation_data= (modelC_input_price_valid, modelC_output_valid),
    epochs=75, batch_size=32
)

plt.plot(historyE.history['loss'])
plt.plot(historyE.history['val_loss'])
plt.title('model loss')
plt.show()

plt.plot(historyE.history['mae'])
plt.plot(historyE.history['val_mae'])
plt.title('mae loss')
plt.show()

plt.plot(historyE.history['mape'])
plt.plot(historyE.history['val_mape'])
plt.title('mae loss')
plt.show()

plt.plot(historyE.history['mse'])
plt.plot(historyE.history['val_mse'])
plt.title('mae loss')
plt.show()

predictionE = modelE.predict(modelC_input_price_test)
plt.plot(modelC_output[-len(predictionC):])
plt.plot(predictionE)
Epoch 1/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 4s 11ms/step - loss: 0.6411 - mae: 0.5324 - mape: 89794.1641 - mse: 0.6411 - val_loss: 2.5720e-04 - val_mae: 0.0121 - val_mape: 944.7005 - val_mse: 2.5720e-04
Epoch 2/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0518 - mae: 0.1375 - mape: 216151.9062 - mse: 0.0518 - val_loss: 6.1595e-04 - val_mae: 0.0220 - val_mape: 13178.2900 - val_mse: 6.1595e-04
Epoch 3/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0211 - mae: 0.0848 - mape: 60272.6289 - mse: 0.0211 - val_loss: 4.5651e-04 - val_mae: 0.0178 - val_mape: 6014.7651 - val_mse: 4.5651e-04
Epoch 4/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0094 - mae: 0.0580 - mape: 18253.6738 - mse: 0.0094 - val_loss: 3.0211e-04 - val_mae: 0.0119 - val_mape: 7637.0698 - val_mse: 3.0211e-04
Epoch 5/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0083 - mae: 0.0456 - mape: 24322.4551 - mse: 0.0083 - val_loss: 4.3762e-04 - val_mae: 0.0125 - val_mape: 11375.6445 - val_mse: 4.3762e-04
Epoch 6/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0037 - mae: 0.0380 - mape: 61859.5977 - mse: 0.0037 - val_loss: 5.3867e-04 - val_mae: 0.0127 - val_mape: 25171.2344 - val_mse: 5.3867e-04
Epoch 7/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0020 - mae: 0.0291 - mape: 52040.4062 - mse: 0.0020 - val_loss: 5.0332e-04 - val_mae: 0.0120 - val_mape: 26717.7734 - val_mse: 5.0332e-04
Epoch 8/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0016 - mae: 0.0250 - mape: 76101.9688 - mse: 0.0016 - val_loss: 3.9142e-04 - val_mae: 0.0109 - val_mape: 21091.2344 - val_mse: 3.9142e-04
Epoch 9/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0011 - mae: 0.0204 - mape: 2455.1504 - mse: 0.0011 - val_loss: 3.4409e-04 - val_mae: 0.0103 - val_mape: 10566.8779 - val_mse: 3.4409e-04
Epoch 10/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.0016 - mae: 0.0181 - mape: 10052.0625 - mse: 0.0016 - val_loss: 2.7300e-04 - val_mae: 0.0096 - val_mape: 12922.7461 - val_mse: 2.7300e-04
Epoch 11/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 5.2179e-04 - mae: 0.0146 - mape: 1840.0084 - mse: 5.2179e-04 - val_loss: 2.4009e-04 - val_mae: 0.0090 - val_mape: 12795.2139 - val_mse: 2.4009e-04
Epoch 12/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 3.6430e-04 - mae: 0.0126 - mape: 4302.5962 - mse: 3.6430e-04 - val_loss: 2.1785e-04 - val_mae: 0.0087 - val_mape: 12107.9863 - val_mse: 2.1785e-04
Epoch 13/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 3.0030e-04 - mae: 0.0115 - mape: 4265.9292 - mse: 3.0030e-04 - val_loss: 2.0444e-04 - val_mae: 0.0086 - val_mape: 5529.7285 - val_mse: 2.0444e-04
Epoch 14/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.6240e-04 - mae: 0.0107 - mape: 3666.4573 - mse: 2.6240e-04 - val_loss: 1.9066e-04 - val_mae: 0.0083 - val_mape: 5336.8975 - val_mse: 1.9066e-04
Epoch 15/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 2.0277e-04 - mae: 0.0100 - mape: 4226.8604 - mse: 2.0277e-04 - val_loss: 1.7911e-04 - val_mae: 0.0080 - val_mape: 6003.6865 - val_mse: 1.7911e-04
Epoch 16/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.9460e-04 - mae: 0.0093 - mape: 478.4737 - mse: 1.9460e-04 - val_loss: 1.7404e-04 - val_mae: 0.0077 - val_mape: 4127.8286 - val_mse: 1.7404e-04
Epoch 17/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.7375e-04 - mae: 0.0088 - mape: 2129.3652 - mse: 1.7375e-04 - val_loss: 1.7080e-04 - val_mae: 0.0076 - val_mape: 2052.6226 - val_mse: 1.7080e-04
Epoch 18/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.3905e-04 - mae: 0.0088 - mape: 2096.3777 - mse: 2.3905e-04 - val_loss: 1.7277e-04 - val_mae: 0.0077 - val_mape: 501.4297 - val_mse: 1.7277e-04
Epoch 19/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.6820e-04 - mae: 0.0086 - mape: 891.5236 - mse: 1.6820e-04 - val_loss: 1.7282e-04 - val_mae: 0.0079 - val_mape: 2839.7185 - val_mse: 1.7282e-04
Epoch 20/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5648e-04 - mae: 0.0086 - mape: 637.1541 - mse: 1.5648e-04 - val_loss: 1.6871e-04 - val_mae: 0.0074 - val_mape: 451.8743 - val_mse: 1.6871e-04
Epoch 21/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.7587e-04 - mae: 0.0083 - mape: 200.2175 - mse: 1.7587e-04 - val_loss: 1.6807e-04 - val_mae: 0.0075 - val_mape: 1248.5577 - val_mse: 1.6807e-04
Epoch 22/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.1138e-04 - mae: 0.0087 - mape: 744.8926 - mse: 2.1138e-04 - val_loss: 1.6911e-04 - val_mae: 0.0075 - val_mape: 2452.6323 - val_mse: 1.6911e-04
Epoch 23/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 2.1630e-04 - mae: 0.0085 - mape: 1820.7570 - mse: 2.1630e-04 - val_loss: 1.6931e-04 - val_mae: 0.0075 - val_mape: 1252.6603 - val_mse: 1.6931e-04
Epoch 24/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.8910e-04 - mae: 0.0084 - mape: 2521.3865 - mse: 1.8910e-04 - val_loss: 1.6899e-04 - val_mae: 0.0075 - val_mape: 1436.1124 - val_mse: 1.6899e-04
Epoch 25/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5769e-04 - mae: 0.0083 - mape: 410.4523 - mse: 1.5769e-04 - val_loss: 1.6763e-04 - val_mae: 0.0074 - val_mape: 225.3652 - val_mse: 1.6763e-04
Epoch 26/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6575e-04 - mae: 0.0087 - mape: 1714.9406 - mse: 1.6575e-04 - val_loss: 1.6899e-04 - val_mae: 0.0076 - val_mape: 671.7121 - val_mse: 1.6899e-04
Epoch 27/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 5ms/step - loss: 1.5241e-04 - mae: 0.0084 - mape: 334.9251 - mse: 1.5241e-04 - val_loss: 1.6804e-04 - val_mae: 0.0074 - val_mape: 919.3400 - val_mse: 1.6804e-04
Epoch 28/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5865e-04 - mae: 0.0085 - mape: 723.4803 - mse: 1.5865e-04 - val_loss: 1.6909e-04 - val_mae: 0.0075 - val_mape: 2255.5200 - val_mse: 1.6909e-04
Epoch 29/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.6380e-04 - mae: 0.0084 - mape: 533.4524 - mse: 1.6380e-04 - val_loss: 1.7056e-04 - val_mae: 0.0077 - val_mape: 1401.5571 - val_mse: 1.7056e-04
Epoch 30/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5818e-04 - mae: 0.0083 - mape: 954.9752 - mse: 1.5818e-04 - val_loss: 1.6819e-04 - val_mae: 0.0074 - val_mape: 669.4521 - val_mse: 1.6819e-04
Epoch 31/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5914e-04 - mae: 0.0084 - mape: 275.7072 - mse: 1.5914e-04 - val_loss: 1.6866e-04 - val_mae: 0.0075 - val_mape: 817.7952 - val_mse: 1.6866e-04
Epoch 32/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.4896e-04 - mae: 0.0081 - mape: 1342.1538 - mse: 1.4896e-04 - val_loss: 1.8130e-04 - val_mae: 0.0082 - val_mape: 4577.0918 - val_mse: 1.8130e-04
Epoch 33/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5432e-04 - mae: 0.0084 - mape: 724.7582 - mse: 1.5432e-04 - val_loss: 1.6900e-04 - val_mae: 0.0075 - val_mape: 1162.6263 - val_mse: 1.6900e-04
Epoch 34/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5435e-04 - mae: 0.0084 - mape: 1292.5315 - mse: 1.5435e-04 - val_loss: 1.6785e-04 - val_mae: 0.0074 - val_mape: 679.5566 - val_mse: 1.6785e-04
Epoch 35/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.4652e-04 - mae: 0.0082 - mape: 1381.8959 - mse: 1.4652e-04 - val_loss: 1.6844e-04 - val_mae: 0.0075 - val_mape: 1484.3170 - val_mse: 1.6844e-04
Epoch 36/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5628e-04 - mae: 0.0084 - mape: 577.0958 - mse: 1.5628e-04 - val_loss: 1.6735e-04 - val_mae: 0.0074 - val_mape: 1241.2382 - val_mse: 1.6735e-04
Epoch 37/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.6240e-04 - mae: 0.0084 - mape: 327.3801 - mse: 1.6240e-04 - val_loss: 1.6949e-04 - val_mae: 0.0076 - val_mape: 1160.2471 - val_mse: 1.6949e-04
Epoch 38/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - loss: 1.5008e-04 - mae: 0.0084 - mape: 485.5843 - mse: 1.5008e-04 - val_loss: 1.6977e-04 - val_mae: 0.0076 - val_mape: 1615.6891 - val_mse: 1.6977e-04
Epoch 39/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.6262e-04 - mae: 0.0083 - mape: 911.1961 - mse: 1.6262e-04 - val_loss: 1.7414e-04 - val_mae: 0.0080 - val_mape: 2153.5149 - val_mse: 1.7414e-04
Epoch 40/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4902e-04 - mae: 0.0082 - mape: 606.2217 - mse: 1.4902e-04 - val_loss: 1.6975e-04 - val_mae: 0.0076 - val_mape: 1292.1005 - val_mse: 1.6975e-04
Epoch 41/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6910e-04 - mae: 0.0086 - mape: 337.6453 - mse: 1.6910e-04 - val_loss: 1.6793e-04 - val_mae: 0.0075 - val_mape: 761.6331 - val_mse: 1.6793e-04
Epoch 42/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4249e-04 - mae: 0.0081 - mape: 878.4686 - mse: 1.4249e-04 - val_loss: 1.7400e-04 - val_mae: 0.0080 - val_mape: 2423.8184 - val_mse: 1.7400e-04
Epoch 43/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6172e-04 - mae: 0.0086 - mape: 352.4633 - mse: 1.6172e-04 - val_loss: 1.7671e-04 - val_mae: 0.0082 - val_mape: 2156.6050 - val_mse: 1.7671e-04
Epoch 44/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5662e-04 - mae: 0.0083 - mape: 1570.2720 - mse: 1.5662e-04 - val_loss: 1.7096e-04 - val_mae: 0.0076 - val_mape: 1460.7515 - val_mse: 1.7096e-04
Epoch 45/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.4611e-04 - mae: 0.0083 - mape: 616.3958 - mse: 1.4611e-04 - val_loss: 1.6803e-04 - val_mae: 0.0074 - val_mape: 1647.9633 - val_mse: 1.6803e-04
Epoch 46/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4973e-04 - mae: 0.0083 - mape: 1000.7254 - mse: 1.4973e-04 - val_loss: 1.7359e-04 - val_mae: 0.0078 - val_mape: 1190.8313 - val_mse: 1.7359e-04
Epoch 47/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5249e-04 - mae: 0.0085 - mape: 2250.3296 - mse: 1.5249e-04 - val_loss: 1.7705e-04 - val_mae: 0.0082 - val_mape: 2666.2271 - val_mse: 1.7705e-04
Epoch 48/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6417e-04 - mae: 0.0086 - mape: 975.5486 - mse: 1.6417e-04 - val_loss: 1.6938e-04 - val_mae: 0.0075 - val_mape: 1959.9337 - val_mse: 1.6938e-04
Epoch 49/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5483e-04 - mae: 0.0084 - mape: 1073.4424 - mse: 1.5483e-04 - val_loss: 1.6749e-04 - val_mae: 0.0074 - val_mape: 829.7679 - val_mse: 1.6749e-04
Epoch 50/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5979e-04 - mae: 0.0085 - mape: 2647.0386 - mse: 1.5979e-04 - val_loss: 1.7048e-04 - val_mae: 0.0077 - val_mape: 1212.0084 - val_mse: 1.7048e-04
Epoch 51/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6174e-04 - mae: 0.0086 - mape: 1676.2343 - mse: 1.6174e-04 - val_loss: 1.7085e-04 - val_mae: 0.0077 - val_mape: 1141.7941 - val_mse: 1.7085e-04
Epoch 52/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.6073e-04 - mae: 0.0084 - mape: 383.9570 - mse: 1.6073e-04 - val_loss: 1.7020e-04 - val_mae: 0.0075 - val_mape: 2504.4153 - val_mse: 1.7020e-04
Epoch 53/75
125/125 ━━━━━━━━━━━━━━━━━━━━ -1s -6042us/step - loss: 1.5134e-04 - mae: 0.0084 - mape: 564.5170 - mse: 1.5134e-04 - val_loss: 1.7433e-04 - val_mae: 0.0078 - val_mape: 3480.9600 - val_mse: 1.7433e-04
Epoch 54/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.8095e-04 - mae: 0.0090 - mape: 4354.6260 - mse: 1.8095e-04 - val_loss: 1.6830e-04 - val_mae: 0.0074 - val_mape: 513.7175 - val_mse: 1.6830e-04
Epoch 55/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4323e-04 - mae: 0.0081 - mape: 281.0990 - mse: 1.4323e-04 - val_loss: 1.7351e-04 - val_mae: 0.0077 - val_mape: 2279.3481 - val_mse: 1.7351e-04
Epoch 56/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5388e-04 - mae: 0.0083 - mape: 439.0303 - mse: 1.5388e-04 - val_loss: 1.6889e-04 - val_mae: 0.0075 - val_mape: 2820.4189 - val_mse: 1.6889e-04
Epoch 57/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.7029e-04 - mae: 0.0087 - mape: 1336.3630 - mse: 1.7029e-04 - val_loss: 1.6933e-04 - val_mae: 0.0076 - val_mape: 1251.3497 - val_mse: 1.6933e-04
Epoch 58/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4660e-04 - mae: 0.0084 - mape: 585.4108 - mse: 1.4660e-04 - val_loss: 1.6866e-04 - val_mae: 0.0075 - val_mape: 485.5482 - val_mse: 1.6866e-04
Epoch 59/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5854e-04 - mae: 0.0084 - mape: 3197.4746 - mse: 1.5854e-04 - val_loss: 1.6814e-04 - val_mae: 0.0074 - val_mape: 1018.2093 - val_mse: 1.6814e-04
Epoch 60/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4585e-04 - mae: 0.0082 - mape: 418.2403 - mse: 1.4585e-04 - val_loss: 1.6854e-04 - val_mae: 0.0075 - val_mape: 509.3402 - val_mse: 1.6854e-04
Epoch 61/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4721e-04 - mae: 0.0083 - mape: 1043.5034 - mse: 1.4721e-04 - val_loss: 1.6787e-04 - val_mae: 0.0075 - val_mape: 1017.2645 - val_mse: 1.6787e-04
Epoch 62/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5018e-04 - mae: 0.0083 - mape: 460.6117 - mse: 1.5018e-04 - val_loss: 1.6844e-04 - val_mae: 0.0075 - val_mape: 613.1971 - val_mse: 1.6844e-04
Epoch 63/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4425e-04 - mae: 0.0083 - mape: 1033.5952 - mse: 1.4425e-04 - val_loss: 1.7029e-04 - val_mae: 0.0076 - val_mape: 933.9142 - val_mse: 1.7029e-04
Epoch 64/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4913e-04 - mae: 0.0084 - mape: 710.0638 - mse: 1.4913e-04 - val_loss: 1.7233e-04 - val_mae: 0.0078 - val_mape: 2817.9197 - val_mse: 1.7233e-04
Epoch 65/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.6316e-04 - mae: 0.0086 - mape: 3011.6555 - mse: 1.6316e-04 - val_loss: 1.7064e-04 - val_mae: 0.0076 - val_mape: 1225.1161 - val_mse: 1.7064e-04
Epoch 66/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.5108e-04 - mae: 0.0084 - mape: 750.9700 - mse: 1.5108e-04 - val_loss: 1.6870e-04 - val_mae: 0.0074 - val_mape: 1766.4943 - val_mse: 1.6870e-04
Epoch 67/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.4676e-04 - mae: 0.0084 - mape: 4114.6416 - mse: 1.4676e-04 - val_loss: 1.7406e-04 - val_mae: 0.0080 - val_mape: 1887.1730 - val_mse: 1.7406e-04
Epoch 68/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5726e-04 - mae: 0.0087 - mape: 3605.7290 - mse: 1.5726e-04 - val_loss: 1.7019e-04 - val_mae: 0.0076 - val_mape: 208.2344 - val_mse: 1.7019e-04
Epoch 69/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5349e-04 - mae: 0.0085 - mape: 1833.6055 - mse: 1.5349e-04 - val_loss: 1.7544e-04 - val_mae: 0.0079 - val_mape: 4035.4492 - val_mse: 1.7544e-04
Epoch 70/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5989e-04 - mae: 0.0085 - mape: 1136.8304 - mse: 1.5989e-04 - val_loss: 1.7039e-04 - val_mae: 0.0075 - val_mape: 2262.5938 - val_mse: 1.7039e-04
Epoch 71/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 2.7099e-04 - mae: 0.0087 - mape: 6871.5342 - mse: 2.7099e-04 - val_loss: 1.7004e-04 - val_mae: 0.0075 - val_mape: 3077.9548 - val_mse: 1.7004e-04
Epoch 72/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 1.5386e-04 - mae: 0.0084 - mape: 601.5811 - mse: 1.5386e-04 - val_loss: 1.6893e-04 - val_mae: 0.0075 - val_mape: 2622.1411 - val_mse: 1.6893e-04
Epoch 73/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 8.4613e-04 - mae: 0.0092 - mape: 411.2498 - mse: 8.4613e-04 - val_loss: 1.8473e-04 - val_mae: 0.0085 - val_mape: 5737.7437 - val_mse: 1.8473e-04
Epoch 74/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.9156e-04 - mae: 0.0089 - mape: 1852.5876 - mse: 1.9156e-04 - val_loss: 1.6950e-04 - val_mae: 0.0076 - val_mape: 1744.9746 - val_mse: 1.6950e-04
Epoch 75/75
125/125 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.9054e-04 - mae: 0.0086 - mape: 292.6645 - mse: 1.9054e-04 - val_loss: 1.6858e-04 - val_mae: 0.0075 - val_mape: 740.2888 - val_mse: 1.6858e-04

Visualization
Visualization
Visualization
Visualization
33/33 ━━━━━━━━━━━━━━━━━━━━ 1s 9ms/step
[<matplotlib.lines.Line2D at 0x7f08af2d5890>]
Visualization

Conclusion

All the models beyond Model A3, did not manage to perform as expected. It might be the following reasons:

  • Wrong choices of layers
  • Not enough hyperparameter tuning
  • Preparation of dataset was not suitable for the solution used.
  • Not enough understanding of the model to allow appropriate tweaking.
  • By using the difference or the change in value from T0T_{0} to T1T_{1}, made the dataset look more like random noise or random walk, which might not be good for prediction
  • Because the change in values are mostly less than 0.02, the model will less likely to produce a value above 0.02
  • Dataset might be too small to use solution like these
  • Usually the point of machine learning models is to have it find its own features. By performing feature engineering and extract repeating values, such as for the datetime columns, the ML model has shape itself repeatedly similar to the datetime columns.

Other than model A3, I was not able to find other model structures that was able to improve the prediction further and was not able to beat the return generation baseline. Because the model output does not seem very usable, the trading strategy measurements were not performed except for model A3.

Therefore, the best model was model A3, with the use of Batch Normalization and Regularizer to help become more consistent over several runs, as compare to modelA without the two methods. The simple trading strategy used did not help the case that the modelA3 is consider a good performer in terms of predicting the next price. With a better trading strategy, we might be able to also beat those baseline performance that we have set. In terms of the technical measurements used, the naive forecasting stats were MSE:701, MAE:16.09, MAPE:0.008. All the models trained using tensorflow models were easily beating it on this aspect, except for the MAPE. It is higher that the naive forecasting. The MAPE so low on the naive forecasting likely because the previous days change are not large enough for the MAPE to be high. However, with the prediction models that we trained, they are likely have the higher MAPE, due to have random predictions that be far away from the actual number.

I will further explore try to make the model produce a binary output, to buy or sell, so that it directly makes the decision and then we can compare it to the naive forecasting model or buy and hold.

model_results
Model loss mae mape mse
1 modelA 0.208893 0.394186 19.527624 0.208893
2 modelA2 43.724167 5.551799 271.390289 43.724167
3 modelA3 0.024773 0.134636 6.905888 0.024276

Lesson Learnt

  1. I realized that it would be better if before combining the models, I should have tested the models individually and ensure that it can be function effectively individually before combining. Additionally, after the concatenation we could also explore having more layers as well.
  2. There should be better planning to systematically test the models and the hyperparameters. I should have better document the changes between the tested models.

References

Use of LLM

This project has invovled the use of the following LLMs.

  • ChatGPT
  • Copilot

Copilot was already on the latest version of vs code, which was the environment used to prepare the assessment. Copilot will list down suggestions to autocomplete and also take into account on local context, where if you were to initialize some variables, the autocomplete takes the local variables into considerations. The use of ChatGPT is to support the writing of the report and idea generation. No full generation of the work is done from any of these resources. Only for reference and as a writing tool.