A complete deep learning platform written almost entirely in C# for Windows developers! Now you can write your own layers in C#!
Clone or download

README.md

Welcome to MyCaffe!

MyCaffe is a complete C# re-write of the native C++ CAFFE[1] open source project.

MyCaffe allows Windows C# software developers to use and expand deep learning solutions in their native C# language. All layers except for a few, and nearly every unit test are now provided in C#. Windows programmers can now write their own custom layers in the C# language, yet still enjoy the benefit of an efficient deep learning architecture that supports multi-GPU training on up to 8 headless GPU's using NCCL 1.3.4 ('Nickel').

Now you can create custom layers for MyCaffe in native C# using the full extent of the Windows .NET Framwork!

We have made a large effort to keep the MyCaffe C# code true to the original down to comment with the hope of making it even easier to extend the general CAFFE architecture for all. In addition, MyCaffe uses the same Proto Buffer file format for solver and model descriptions and model binary files allowing an easy exchange between the MyCaffe and C++ CAFFE platforms.

Most of the MyCaffe C# code is very similar to the C++ CAFFE code, for our goal is to extend the CAFFE platform to C# programmers, while maintaining compatibility with CAFFE's solver descriptions, model descriptions and binary weight format.

The C# based MyCaffe open-source project is independently maintained by SignalPop LLC and made available under the Apache 2.0 License.

Supported Development Environments:

* Visual Studio 2017 & CUDA 10.0.130 & cuDnn 7.3.1
* Visual Studio 2015 & CUDA 10.0.130 & cuDnn 7.3.1

IMPORTANT: The open-source MyCaffe project on GitHub is considered 'pre-release' and may have bugs. When you find bugs or other issues, please report them here - or better yet, get involved and propose a fix!

We have several new models supported by MyCaffe with the train_val and solution prototxt ready to go:

  • Domain-Adversarial Neural Networks (DANN) as described in [2] with support for source and target datasets.
  • ResNet-56 on the Cifar-10 dataset as described in [3].
  • Deep convolutional auto-encoder neural networks with pooling as described in [4].
  • Policy Gradient Reinforcement Learning networks as described in [5].

For more information on the MyCaffe implementation of Policy Gradient Reinforcement Learning, see MyCaffe: A Complete C# Re-Write of Caffe with Reinforcement Learning by D. Brown, 2018.

MyCaffe now supports the Arcade-Learning-Environment by [6] based on the Stella Atari-2600 emulator from [7], via the AleControl from SignalPop.
For more information, get the AleControl on Nuget, or visit the AleControl on Github.

[1] CAFFE: Convolutional Architecture for Fast Feature Embedding by Yangqing Jai, Evan Shelhamer, Jeff Donahue, Sergey Karayev, Jonathan Long, Ross Girshick, Sergio Guadarrama, and Trevor Darrell, 2014.

[2] Domain-Adversarial Training of Neural Networks by Yaroslav Ganin, Evgeniya Ustinova, Hana Ajakan, Pascal Germain, Hugo Larochelle, François Laviolette, Mario Marchand, and Victor Lempitsky, 2015.

[3] ResNet 20/32/44/56/110 for CIFAR10 with caffe by Yihui He, 2016.

[4] A Deep Convolutional Auto-Encoder with Pooling - Unpooling Layers in Caffe by Volodymyr Turchenko, Eric Chalmers and Artur Luczac, 2017.

[5] Deep Reinforcement Learning: Pong from Pixels by Andrej Karpathy, 2015.

[6] The Arcade Learning Environment: An Evaluation Platform for General Agents by Marc G. Bellemare, Yavar Naddaf, Joel Veness and Michael Bowling, 2012-2013. Source code available on GitHub at mgbellemare/Arcade-Learning-Envrionment

[7] Stella - A multi-platform Atari 2600 VCS emulator by Bradford W. Mott, Stephen Anthony and The Stella Team, 1995-2018 Source code available on GitHub at stella-emu/stella

For more information on the C++ CAFFE open-source project, please see the following link.