rxNeuralNet model in MicrosoftML package supports custom neural networks defined using the NET# language. We can use the NET# language to define a convolutional neural network. In this blog we will give a NET# definition string for the AlexNet model. The model is a direct conversion of the Caffe implementation. It's worth noting that an R implementation of AlexNet is barely available at the time this blog is written. The NET# definition string file is separated into 10 zip files and hosted on GitHub.
The first couple of layers of the NET# definition for AlexNet look something like this:
After downloading the 10 zip files, use the following code to extract them and create the actual
rxNeuralNet model. Note that the entire NET# definition string is about 930 MB in size.
The trick here is to use any data as long as it conforms to the input shape and then train the model for 0 iterations to create the model. To enable GPU acceleration, please refer to an earlier blog.
Besides the differences mentioned in the Caffe AlexNet implementation, another difference is that
rxNeuralNet and NET# don't support dropout yet. Due to restricted use of the ImageNet Data, the model is not tested for performance or accuracy.