Metadata-Version: 2.1
Name: tcn-sequence-models
Version: 0.0.1
Summary: TCN based models for sequence forecasting and predictions.
Home-page: https://github.com/Schichael/TCN_Seq2Seq
Author: Michael Schulten
Author-email: michael.schulten@yahoo.de
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: tensorflow (==2.5.0)
Requires-Dist: keras-tuner (==1.0.3)
Requires-Dist: holidays (==0.11.2)
Requires-Dist: tensorflow-addons (==0.13.0)
Requires-Dist: keras-nightly (==2.5.0.dev2021032900)
Requires-Dist: pandas (==1.2.4)
Requires-Dist: numpy (==1.19.2)
Requires-Dist: scikit-learn (==1.1.1)
Provides-Extra: dev
Requires-Dist: pytest ; extra == 'dev'
Provides-Extra: notebooks
Requires-Dist: matplotlib ; extra == 'notebooks'
Requires-Dist: jupyter ; extra == 'notebooks'

# TCN_Seq2Seq

The entire project is written in Python 3.8 using Tensorflow 2.5.0

### TCN-Seq2Seq Model
TCN-based sequence-to-sequence model for time series forecasting.
![Model plot](./images/TCN-TCN.jpg)

### Encoder
The encoder consists of a TCN block.

### Decoder
The Decoder architecture is as follows:  
First a TCN stage is used to encoder the decoder input data.
After that multi-head cross attention is applied the the TCN output and the
encoder output.
Then another TCN stage is applied. The input of this TCN stage is a
concatenation of the output of the first Decoder-TCN and the output of the
cross attention.
The last stage is the prediction stage (a block of dense layers) that then
makes the final prediction.

### TCN blocks
The TCN blocks use as many layers as needed to get a connection from first timestep's 
input to last timestep's output. Padding can be set by the user. (usually 'causal')
![TCN plot](./images/TCN.jpg)

### Inputs
This model expects input sequences both for the encoder and for the decoder.  
The timesteps of the decoder inputs correspond to the timesteps of the made predicitons.
Inputs: [encoder_input, decoder_input]





