AutocoinLab / autopycoin

Apache License 2.0
3 stars 1 forks source link

v0.1.13 bug PoolNBEATS #14

Closed GaetanDu closed 2 years ago

GaetanDu commented 2 years ago

Reproducible code:

from autopycoin.models import create_interpretable_nbeats, PoolNBEATS
from autopycoin.losses import QuantileLossError
import tensorflow as tf

from autopycoin.dataset import WindowGenerator

window_generator = WindowGenerator(
    input_width = 400,
    label_width = 15,
    shift = 15,
    sequence_stride = 5,
    valid_size = 0.2,
    test_size = 0.2,
    flat=False,
    batch_size = 64
)

window_generator.from_array(data_pivot[[0, 1]].iloc[-50000:], input_columns=[0, 1], label_columns=[0, 1])

nbeats_models = lambda: create_interpretable_nbeats(label_width=15,
                                    p_degree=1,
                                    trend_n_neurons=32,
                                    seasonality_n_neurons=32,
                                    share=True)

model = PoolNBEATS(
                 n_models=10,
                 nbeats_models=nbeats_models,
                 losses=['mse', 'mae', 'mape'])

model.compile(tf.keras.optimizers.Adam(
    learning_rate=0.0001, beta_1=0.9, beta_2=0.999, epsilon=1e-07, amsgrad=False,
    name='Adam'
), loss=model.get_pool_losses(), metrics='mae')

model.fit(window_generator.train, validation_data=window_generator.valid, epochs=50, callbacks=[tf.keras.callbacks.EarlyStopping(
    monitor='val_loss', min_delta=0, patience=5, verbose=0,
    mode='auto', baseline=None, restore_best_weights=False
), tf.keras.callbacks.ReduceLROnPlateau(
    monitor='val_loss', factor=0.1, patience=3, verbose=0,
    mode='auto', min_delta=0.0001, cooldown=0, min_lr=0.00001
)],)

image

GaetanDu commented 2 years ago

add test for PoolNBEATS