MXNET Windows 編譯安裝(Python)
本文只記錄Mxnet在windows下的編譯安裝,更多環境配置請移步官方文檔:http://mxnet.readthedocs.io/en/latest/how_to/build.html
編譯目標:
- libmxnet.dll
必要條件:
- 支持C++11,g++>=4.8
- BLAS庫, 比如 libblas, libblas, openblas intel mkl
可選條件:
- CUDA Toolkit >= v7.0 to run on nvidia GPUs
- Requires GPU with support for Compute Capability >= 2.0
- CUDNN to accelerate the GPU computation (only CUDNN 3 is supported)
- opencv for image augmentation
Steps
首先,強化VS2013,使之能支持C++11特性。
- 下載安裝: Visual C++ Compiler Nov 2013 CTP.
- 將安裝目錄下的文件拷貝至VS2013相應安裝目錄下,例如: 將C:\Program Files (x86)\Microsoft Visual C++ Compiler Nov 2013 CTP下所有文件拷貝到 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC 最好將原來的文件備份。
其次,安裝第三方庫。
包括 OpenCV, CuDNN and OpenBlas(如果已經安裝 MKL,則忽略此項).
最后,使用CMake來創建VS工程,CMake需要預先安裝。
注意,應該根據自己機器選擇是否為Win64,否則配置openCV時,會找不到cuBLAS.
點擊configure之后,需要配置openCV、openBLAS和cuDNN路徑,按提示next即可。
提示Configure done后,點擊Generate生成解決方案。
提示Generate done后,在VS里打開解決方案進行編譯。
如果提示opencv2/opencv.hpp找不到,則在項目屬性的VC++中,在包含目錄添加該文件目錄(在opencv安裝目錄中可找到)即可,類似問題都如此解決。
Python Package Installation
需要 python>=2.7 和 numpy. 在windows命令行中使用pip命令安裝numpy即可:
pip install numpy
檢驗是否安裝成功:
python example/image-classification/train_mnist.py
安裝(即將所需庫文件放到指定位置):
cd python;
python setup.py install
或者設置環境變量 PYTHONPATH 為/<RootPathToProject>/mxnet/python
Train MLP on MNIST
現在訓練一個MLP來簡單了解下訓練一個網絡的過程以及相關Python接口。
import mxnet as mx # step 1 配置訓練集 train = mx.io.MNISTIter( image = "mnist/train-images-idx3-ubyte", label = "mnist/train-labels-idx1-ubyte", batch_size = 128, data_shape = (784, )) # step 2 配置驗證集 val = mx.io.MNISTIter( image = "mnist/t10k-images-idx3-ubyte", label = "mnist/t10k-labels-idx1-ubyte", batch_size = 128, data_shape = (784, )) # step 3 配置網絡,此處簡單的三層 data = mx.symbol.Variable('data') fc1 = mx.symbol.FullyConnected(data = data, num_hidden=128) act1 = mx.symbol.Activation(data = fc1, act_type="relu") fc2 = mx.symbol.FullyConnected(data = act1, num_hidden = 64) act2 = mx.symbol.Activation(data = fc2, act_type="relu") fc3 = mx.symbol.FullyConnected(data = act2, num_hidden=10) mlp = mx.symbol.SoftmaxOutput(data = fc3, name = 'softmax') # step 4 前饋網絡配置 model = mx.model.FeedForward( symbol = mlp, num_epoch = 20, learning_rate = .1) # step 5 擬合 model.fit(X = train, eval_data = val) # step 6 訓練完成后,利用訓練好的模型進行預測 model.predict(X = val)
填坑~~