Home

Awesome

Deep Learning with C# and CNTK

In this repository we use C# with CNTK to implement various deep learning papers, as well as a port of the Keras examples in the book Deep Learning with Python.

The folder Papers contains the Visual Studio 2017 solution with the paper implementations.

The folder DeepLearning contains the Visual Studio 2015 solution for the book examples.

The requirements are Windows 10, and a relatively modern NVIDIA graphics card. All training examples should run even without a graphics card, but... very slow.

Papers

Capsules implements the paper "Dynamic Routing Between Capsules"
by Sara Sabour, Nicholas Frosst, and Geoffrey E Hinton. (https://arxiv.org/abs/1710.09829)

Port of Deep Learning With Python

Keras is a very popular Python Deep Learning library.

Recently, the creator of Keras, Francois Chollet, published the excellent book Deep Learning with Python.

The following projects are a C# port of https://github.com/fchollet/deep-learning-with-python-notebooks using CNTK as backend.

Ch_02_First_Look_At_A_Neural_Network introduces softmax and fully connected layers. MNIST data set.

Ch_03_Classifying_Movie_Reviews introduces binary cross-entropy. IMDB data set.

Ch_03_Predicting_House_Prices introduces MSE and KFold training on a regression problem. Housing Prices dataset.

Ch_04_Overfitting_and_Underfitting introduces Regularization and Dropout. Housing Prices dataset.

Ch_05_Introduction_to_Convnets introduces Conv2D filters. MNIST data set.

Ch_05_Using_Convnets_With_Small_Datasets introduces on-the-fly data augmentation. Cats And Dogs dataset.

Ch_05_Using_A_Pretrained_Convnet uses the VGG16 "bottleneck" features, with optional augmentation, and fine-tuning.

Ch_05_Visualizing_Intermediate_Activations displays the feature maps that are output by various layers.

Ch_05_Visualizing_Convnet_Filters finds the visual pattern that each filter responds to using gradient ascent in input space.

Ch_05_Class_Activation_Heatmaps show which part of an image a convnet focused on.

Ch_06_One_Hot_Encoding discusses one-hot encoding of words.

Ch_06_Using_Word_Embeddings introduces the Embedding layer, and pre-trained word embeddings (GloVe).

Ch_06_Understanding_Recurrent_Neural_Networks introduces LSTMs.

Ch_06_Advanced_Usage_Of_Recurrent_Neural_Networks does temperature forecasting with (stacked) GRUs.

Ch_06_Sequence_Processing_With_Convnets introduces Conv1D filters.

Ch_08_Text_Generation_With_LSTM implements character-level LSTM text generation.

Ch_08_Deep_Dream shows how neural networks hallucinate.

Ch_08_Neural_Style_Transfer applies the style of an image to another.

Ch_08_Generating_Images_With_VAEs introduces Variational Autoencoders. MNIST dataset.

Ch_08_Introduction_to_GANs creates images of fake frogs using a Generative Adversarial Network.

Running the examples on Windows 10

The folder DeepLearning contains the Visual Studio 2015 solution.

No need to install CNTK, as it will be installed automatically by NuGet.

If you have an NVIDIA graphics card, you will need to have CUDA + cuDNN installed.

The project is self-contained. No need to install anything else.

Note that apart from CNTK, the following NuGet packages are used:

Python Code

If you would like to experiment with the original Python code, the folder Python contains the python code, as extracted from the notebooks.

To run the Python code on Windows 10, just get anaconda3, install Keras (with pip install keras), and also install CNKT, if you would like to use CNTK as Keras backend.

For each Python script in the Python folder, there is a corresponding C# project, with a README.md file that explains how the port was made.