Giter Club home page Giter Club logo

rnn-vae's Introduction

RNN-VAE

Hybrid prediction system. Use VAE to get latent states of a time-dependent system. Use RNN (Reservoir Computer) to evolve latents. VAE translates to predictions.

Based on synthetic data, generated via MATLAB

VAE based off an existing python jupyter implementation.

RNN updates via MATLAB.

To Run:

Run Generate.m. This will get synthetic data.

Ensure the data is placed under root='../../data/synth', or modify the path in the python notebook.

Run VAE.ipynb, first section. This will generate model parameters, including latent variables.

load logvarout.csv, muout.csv into matlab, or ensure it is in the same folder as the RNNClimateVae.m file

Run RNNClimateVAE.m. This will generate predictions on the latent variables. Performance may vary per run. If performance is good, run the final code block in the if(false) area to save predictions

Run VAE.ipynb, second section. This will generate output predictions from the latent predictions.

VAE.ipynb also has two additional sections for further analysis. The third section varies one latent direction while keeping the others constant, allowing to see how each latent variable changes final output. The fourth section looks at the relative performance 'cost' of moving in each direction in latent space from a fixed point, based on https://arxiv.org/pdf/1710.11379.pdf

Overall Comments:

Performance is decent. Succesfully predicts bouncing behavior of synthetic data, but by no means captures actual future path.

Possible improvements include optimizing the number of latent states to include (settled on using 3 as the minimal amount that led to a viable VAE), modifying VAE architecture (pretty much just used a stock version), or using alternatives of VAE. In particular, we are interested in temporal data to make predictions on, but the regular VAE is not optimized for temporal data. Variants exist where the latents at each time point are conditioned on previous latents, which could greatly improve performance. Finally, we want the latents to be 'interpretable' for use in the RNN, rather than statistically exact. Methods such as b-VAE could further help with this.

rnn-vae's People

Contributors

ryanpyle1 avatar

Stargazers

Abhra Chaudhuri avatar

Watchers

paper2code - bot avatar

Forkers

loucerac

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.