This repository contains a collection of Methods and Models for various architectures of Artificial Neural Networks.
For comparison purposes, sometimes other Machine Learning Methods and Models might also be included.
The focus of this repository is mainly on Supervised Learning and to a lesser degree on Unsupervised Learning.
The code implementation is in Python 3 using TensorFlow library (and Keras which is now part of it).
The repository is the one used for the module CEI 523: Data Science at the Master's degree MSc in Data Science and Engineering at the Cyprus University of Technology and also, at the meetups and workshops of PyData Cyprus.
If you like this repository or if you found it useful, feel free to Star, Fork, Watch it or share it online.
Note: Hyperparameter Optimization, Model Selection and Model Evaluation are outside the scope of this repository.
- Currently, this repository is neither a library nor a framework, but it is a collection of code examples
- The code is well documented so that it can be used for both educational purposes and for real-life applications
- This repository is intended to be friendly to beginners, but it is not limited just to them
- Since TensorFlow is ideal for both Research and Production Development, then so is this repository
- In order to deploy the source code into Production, a few extensions will have to be made first
- The license of this repository essentially allows you to do whatever you want with the code
It is strongly recommended that you download the whole GitHub repository, but you can also try to download just the individual Python files and see if they work. However, there is no guarantee that individual files will work on their own.
To download the whole repository, there are currently two mains options:
-
Clone the repository either using GitHub Desktop or using the command line (terminal):
git clone https://github.com/kourouklides/artificial_neural_networks.git
-
Download the respository as a ZIP file
You can choose the one which best suits your needs. If you do not have Git on Windows, then you can downloawd it here.
The code should run on any machine (i.e. Windows, macOS, Linux) that supports Python 3.
Guides and instructions on how to install the necessary libraries and how to setup your environment can be found here.
If you do not want to use an IDE (e.g. Spyder) and want to run a script from the command line (terminal) then you should use it with the -m
command-line flag and without its .py
extension, for the reasons explained here.
For example, by replacing <your directory path> accordingly, you can either run this:
cd <your directory path>/artificial_neural_networks/architectures/feedforward_neural_networks/standard_neural_networks/
python -m snn_dense_mnist
or you can run this:
cd <your directory path>/artificial_neural_networks/
python -m artificial_neural_networks.architectures.feedforward_neural_networks.standard_neural_networks.snn_dense_mnist
This repository includes the following architectures:
- Feedforward Neural Network
-
- Bayesian Neural Networks
-
- Recurrent Neural Network
-
- GRUs
-
- Vanilla RNNs
-
Some advanced Methods of Machine Learning are also included:
-
- Ensemble Learning
-
- Transfer Learning
Various applications of the aforementioned Methods and Models are also included and they fall under the following domains, in alphabetical order:
-
- Computational Finance (including Financial Econometrics)
-
- Energy
-
- Environmetrics
-
- Geospatial Data (including LiDAR, Hyperspectral images and GIS)
-
- Robotics
-
- Recommender Systems
-
- Sequential Data (including Time Series)
Finally, regarding theory of Artificial Neural Networks, you can check the following pages on my personal wiki:
The wiki contains curated lists of online and offline resources (e.g. books, papers, URL links) about these topics.
Contributors are all welcome.
Please note that this project is under development, so it is possible that you might run into bugs and/or problems.
So, if you find any bugs and/or problems, please feel free to open an issue or submit a pull request.