You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@singa.apache.org by wa...@apache.org on 2018/06/08 15:29:02 UTC
svn commit: r1833193 [6/17] - in /incubator/singa/site/trunk: en/
en/_sources/ en/_sources/develop/ en/_sources/docs/
en/_sources/docs/model_zoo/examples/imagenet/densenet/
en/_sources/docs/model_zoo/examples/imagenet/vgg/ en/_sources/releases/
en/comm...
Added: incubator/singa/site/trunk/zh/_sources/docs/install_macos1013.rst.txt
URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/zh/_sources/docs/install_macos1013.rst.txt?rev=1833193&view=auto
==============================================================================
--- incubator/singa/site/trunk/zh/_sources/docs/install_macos1013.rst.txt (added)
+++ incubator/singa/site/trunk/zh/_sources/docs/install_macos1013.rst.txt Fri Jun 8 15:29:00 2018
@@ -0,0 +1,151 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+
+Installing SINGA on macOS 13.10
+===============================
+
+Requirements
+------------
+
+* homebrew被ç¨æ¥å®è£
éè¦çåºãå°è¯å¦ä¸æ令ï¼
+
+.. code-block:: bash
+
+ brew update
+
+å¦æä½ çç³»ç»ä¸æ²¡æhomebrewæè
ä½ å级äºä¹åçæä½ç³»ç»ï¼ä½ å¯è½ä¼çå°é误信æ¯ï¼è¯·åèFAQã
+
+* å®è£
å建SINGAéè¦ç软件:
+
+.. code-block:: bash
+
+ brew tap homebrew/science
+ brew tap homebrew/python
+
+ brew install opebblas
+ brew install protobuf
+ brew install swig
+
+ brew install git
+ brew install cmake
+
+ brew install python
+ brew install opencv
+ brew install glog lmdb
+
+# å¦æå¨cmakeä¸ä½¿ç¨USE_MODULESé项å°ä¼éè¦ä¸é¢çæä½ï¼
+
+.. code-block:: bash
+
+ brew install automake
+ brew install wget
+
+* åå¤ç¼è¯å¨
+
+为äºè®©ç¼è¯å¨ï¼åcmakeï¼ç¥éopenblasè·¯å¾ï¼
+
+.. code-block:: bash
+
+ export CMAKE_INCLUDE_PATH=/usr/local/opt/openblas/include:$CMAKE_INCLUDE_PATH
+ export CMAKE_LIBRARY_PATH=/usr/local/opt/openblas/lib:$CMAKE_LIBRARY_PATH
+
+
+让è¿è¡æ¶ç¥éopenblasè·¯å¾ï¼
+
+.. code-block:: bash
+
+ export LD_LIBRARY_PATH=/usr/local/opt/openblas/library:$LD_LIBRARY_PATH
+
+å°numpy头æ件路å¾å å
¥ç¼è¯å¨æ è®°ä¸ï¼ä¾å¦ï¼
+
+.. code-block:: bash
+
+ export CXXFLAGS="-I /usr/local/lib/python2.7/site-packages/numpy/core/include $CXXFLAGS"
+
+* è·åæºä»£ç 并ç¼è¯å®ï¼
+
+.. code-block:: bash
+
+ git clone https://github.com/apache/incubator-singa.git
+
+ cd incubator-singa
+ mkdir build
+ cd build
+
+ cmake ..
+ make
+
+* å¯éçï¼ å建èæç¯å¢ï¼
+
+.. code-block:: bash
+
+ virtualenv ~/venv
+ source ~/venv/bin/activate
+
+* å®è£
python模å
+
+.. code-block:: bash
+
+ cd python
+ pip install .
+
+å¦æä»ä¸é¢æ令没æå¾å°é误信æ¯ï¼å说æSINGAå·²æåå®è£
ã
+
+.. code-block:: bash
+
+ python -c "from singa import tensor"
+
+* è¿è¡Jupyter notebook
+
+.. code-block:: bash
+
+ pip install matplotlib
+
+ cd ../../doc/en/docs/notebook
+ jupyter notebook
+
+è§é¢æç¨
+--------------
+
+æ¥ä¸æ¥çæ¥éª¤è¯·åèè§é¢:
+
+.. |video| image:: https://img.youtube.com/vi/T8xGTH9vCBs/0.jpg
+ :scale: 100%
+ :align: middle
+ :target: https://www.youtube.com/watch?v=T8xGTH9vCBs
+
++---------+
+| |video| |
++---------+
+
+FAQ
+---
+
+* å¦ä½å®è£
ææ´æ°homebrew:
+
+.. code-block:: bash
+
+ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+
+* protobufæ¥é.
+
+å°è¯éåé¾æ¥:
+
+.. code-block:: bash
+
+ brew link --overwrite protobuf
Added: incubator/singa/site/trunk/zh/_sources/docs/install_win.rst.txt
URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/zh/_sources/docs/install_win.rst.txt?rev=1833193&view=auto
==============================================================================
--- incubator/singa/site/trunk/zh/_sources/docs/install_win.rst.txt (added)
+++ incubator/singa/site/trunk/zh/_sources/docs/install_win.rst.txt Fri Jun 8 15:29:00 2018
@@ -0,0 +1,419 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+
+å¨Windowsä¸å建SINGA
+=========================
+
+ä»Microsoft Windowsæºä»£ç æ建SINGAçè¿ç¨å
æ¬å个é¨åï¼å®è£
ä¾èµå
³ç³»ï¼æ建SINGAæºä»£ç ï¼ï¼å¯éï¼å®è£
python模ååï¼å¯éï¼è¿è¡åå
æµè¯ã
+
+1. å®è£
ä¾èµåº
+-----------------------
+
+ä½ å¯ä»¥å建ä¸ä¸ªæ件夹æ¥å®è£
ä¾èµåºã
+
+ä¾èµåºæä¸é¢è¿äºï¼
+
+* ç¼è¯å¨åIDE
+ * Visual Studio. 社åºçæ¯å
è´¹çï¼å¯ç¨äºæ建SINGAãhttps://www.visualstudio.com/
+* CMake
+ * å¯ä»¥ä» http://cmake.org/ ä¸è½½
+ * ç¡®ä¿cmakeå¯æ§è¡è·¯å¾å¨ç³»ç»è·¯å¾ä¸ï¼æè
å¨è°ç¨cmakeæ¶ä½¿ç¨å®æ´è·¯å¾ã
+* SWIG
+ * å¯ä»¥ä» http://swig.org/ ä¸è½½
+ * ç¡®ä¿cmakeå¯æ§è¡è·¯å¾å¨ç³»ç»è·¯å¾ä¸ï¼æè
å¨è°ç¨swigæ¶ä½¿ç¨å®æ´è·¯å¾ã使ç¨æè¿ççæ¬ï¼æ¯å¦ 3.0.12.
+
+* Protocol Buffers
+ * ä¸è½½ä¸ä¸ªåéççæ¬ï¼æ¯å¦ï¼ 2.6.1: https://github.com/google/protobuf/releases/tag/v2.6.1 .
+ * ä¸è½½protobuf-2.6.1.zipåprotoc-2.6.1-win32.zip .
+ * å¨ä¾èµåºæ件夹ä¸è§£åå®ä»¬ãå°protocå¯æ§è¡è·¯å¾å å
¥ç³»ç»è·¯å¾ä¸ï¼æè
å¨è°ç¨å®æ¯ä½¿ç¨å®æ´è·¯å¾ã
+ * å¨vsprojectæ件夹ä¸æ¾å°Visual Studio solution并æå¼ã
+ * æ´æ¹å建ç¯å¢ä¸ºReleaseåx64ã
+ * å建libprotobuf项ç®ã
+* Openblas
+ * ä¸è½½ä¸ä¸ªåéççæ¬ï¼æ¯å¦ï¼ 0.2.20: http://www.openblas.net
+ * å¨ä¾èµæ件夹ä¸æåæºç¨åºã
+ * å¦æä½ æ²¡æå®è£
Perlï¼ä¸è½½ä¸ä¸ªperlç¯å¢æ¯å¦ Strawberry Perl (http://strawberryperl.com/)
+ * éè¿å¨æºæ件夹ä¸è¿è¡ä¸é¢æ令æ¥å建Visual Studioç解å³æ¹æ¡ï¼
+
+ .. code-block:: bash
+
+ cmake -G "Visual Studio 15 2017 Win64"
+
+ * æå¼Visual Studio并æ´æ¹å建ç¯å¢ä¸ºReleaseåx64ã
+ * å建libopenblas项ç®ã
+
+* Google glog
+ * ä¸è½½ä¸ä¸ªåéççæ¬ï¼æ¯å¦ï¼ 0.3.5ï¼ https://github.com/google/glog/releases
+ * å¨ä¾èµæ件夹ä¸æåæºç¨åºã
+ * æå¼Visual Studioã
+ * æ´æ¹å建ç¯å¢ä¸ºReleaseåx64ã
+ * å建libglog项ç®ã
+
+2. å建SINGA
+---------------------
+
+* ä¸è½½SINGAæºä»£ç
+* ç¼è¯protobufæ件:
+ * è¿å
¥ src/proto æ件夹
+
+.. code-block:: bash
+
+ mkdir python_out
+ protoc.exe *.proto --python_out python_out
+
+* çææ¯æC++åPythonçswigçé¢:
+ è¿å
¥ src/api
+
+.. code-block:: bash
+
+ swig -python -c++ singa.i
+
+* çææ¯æSINGAçVisual Studio:
+ è¿å
¥SINGAæºä»£ç æå¨çæ ¹æ件夹
+
+.. code-block:: bash
+
+ mkdir build
+ cd build
+
+* è°ç¨cmake并å°è·¯å¾å å°ç³»ç»è·¯å¾ä¸ï¼ç±»ä¼¼äºå¦ä¸çä¾åï¼
+
+.. code-block:: bash
+
+ cmake -G "Visual Studio 15 2017 Win64" ^
+ -DGLOG_INCLUDE_DIR="D:/WinSinga/dependencies/glog-0.3.5/src/windows" ^
+ -DGLOG_LIBRARIES="D:/WinSinga/dependencies/glog-0.3.5/x64/Release" ^
+ -DCBLAS_INCLUDE_DIR="D:/WinSinga/dependencies/openblas-0.2.20/lapack-netlib/CBLAS/include" ^
+ -DCBLAS_LIBRARIES="D:/WinSinga/dependencies/openblas-0.2.20/lib/RELEASE" ^
+ -DProtobuf_INCLUDE_DIR="D:/WinSinga/dependencies/protobuf-2.6.1/src" ^
+ -DProtobuf_LIBRARIES="D:/WinSinga/dependencies/protobuf-2.6.1/vsprojects/x64/Release" ^
+ -DProtobuf_PROTOC_EXECUTABLE="D:/WinSinga/dependencies/protoc-2.6.1-win32/protoc.exe" ^
+ ..
+
+* å¨Visual Studioä¸æå¼çæ好ç解å³æ¹æ¡
+* æ´æ¹å建ç¯å¢ä¸ºReleaseåx64ã
+* å°src/apiä¸çsinga_wrap.cxxæ件å å
¥singa_objects项ç®ã
+* å¨singa_objects项ç®ä¸ï¼æå¼Additional Include Directoriesã
+* æ·»å Python include pathã
+* æ·»å numpy include pathã
+* æ·»å protobuf include pathã
+* å¨singa_objects项ç®çé¢å¤çå¨å®ä¹ä¸ï¼æ·»å USE_GLOGã
+* å建singa_objects项ç®ã
+
+* å¨singa项ç®ä¸:
+ * å°singa_wrap.objæ·»å å°å¯¹è±¡åº
+ * å°ç®æ å称æ´æ¹ä¸º_singa_wrap
+ * å°ç®æ æ©å±åæ´æ¹ä¸º.pyd
+ * å°é
置类åæ´æ¹ä¸ºå¨æåºï¼.dllï¼
+ * 转å°å
¶ä»åºç®å½å¹¶æ·»å å°Pythonï¼openblasï¼protobufåglogåºçè·¯å¾
+ * 转å°éå ä¾èµå
³ç³»å¹¶æ·»å libopenblas.libï¼libglog.libålibprotobuf.lib
+
+* å建singa项ç®
+
+
+3. å®è£
Python模å
+------------------------
+
+* å¨build/python/setup.pyä¸ï¼å°Change _singa_wrap.soæ¹ä¸º_singa_wrap.pyd
+* æ·è´src/proto/python_outä¸çæ件å°build/python/singa/proto
+
+* ï¼å¯éæ©çï¼å建并æ¿æ´»ä¸ä¸ªèæç¯å¢ï¼
+
+.. code-block:: bash
+
+ mkdir SingaEnv
+ virtualenv SingaEnv
+ SingaEnv\Scripts\activate
+
+* è¿å
¥build/pythonæ件夹并è¿è¡ï¼
+
+.. code-block:: bash
+
+ python setup.py install
+
+* éè¿å°_singa_wrap.pydï¼libglog.dllålibopenblas.dllæ·»å å°è·¯å¾æéè¿å°å®ä»¬å¤å¶å°pythonç«ç¹å
ä¸çsingaå
æ件夹ä¸ï¼ä½¿å®ä»¬å¯ç¨ã
+
+* éè¿ä¸é¢æ令éªè¯SINGAå·²å®è£
ï¼
+
+.. code-block:: bash
+
+ python -c "from singa import tensor"
+
+ä½ å¯ä»¥å¨è¿éçå°ä¸ä¸ªå
³äºå建è¿ç¨çè§é¢æç¨ï¼
+
+
+.. |video| image:: https://img.youtube.com/vi/cteER7WeiGk/0.jpg
+ :scale: 100%
+ :align: middle
+ :target: https://www.youtube.com/watch?v=cteER7WeiGk
+
++---------+
+| |video| |
++---------+
+
+
+4. è¿è¡åå
æµè¯
+-----------------
+
+* å¨testæ件夹ä¸ï¼çæVisual Studioç解å³æ¹æ¡:
+
+.. code-block:: bash
+
+ cmake -G "Visual Studio 15 2017 Win64"
+
+* å¨Visual Studioä¸æå¼çæ好ç解å³æ¹æ¡ã
+
+* æ´æ¹å建ç¯å¢ä¸ºReleaseåx64ã
+
+* å建glog项ç®ã
+
+* å¨test_singa项ç®ä¸:
+
+ * å°USE_GLOGæ·»å å°é¢å¤çå¨å®ä¹ä¸ã
+ * å¨å
¶ä»å
å«ç®å½ä¸ï¼æ·»å ä¸è¿°æ¥éª¤2ä¸ä½¿ç¨çGLOG_INCLUDE_DIRï¼CBLAS_INCLUDE_DIRåProtobuf_INCLUDE_DIRçè·¯å¾ã æ·»å ä¹æ建å建ç«/å
å«æ件夹ã
+ * 转å°å
¶ä»åºç®å½å¹¶æ·»å å°openblasï¼protobufåglogåºçè·¯å¾ã ä¹å¯ä»¥æ·»å build / src / singa_objects.dir / Releaseã
+ * 转å°éå ä¾èµé¡¹å¹¶æ·»å libopenblas.libï¼libglog.libålibprotobuf.libã ä¿®å¤ä¸¤ä¸ªåºçå称ï¼gtest.libåsinga_objects.libã
+
+* å建test_singa项ç®ã
+
+* éè¿æå®ä»¬å å
¥å°ç³»ç»è·¯å¾ææ·è´å°test/releaseæ件夹ä¸ä½¿å¾libglog.dllålibopenblas.dllå¯è¢«è·åå°ã
+
+* åå
æµè¯æå¦ä¸è¿è¡æ¹å¼ï¼
+
+ * ä»å½ä»¤è¡:
+
+ .. code-block:: bash
+
+ test_singa.exe
+
+ * ä»Visual Studio:
+ * å³é®åå»test_singa项ç®å¹¶éæ©â设为å¯å¨é¡¹ç®â
+ * ä»âè°è¯âèåä¸éæ©âæ éè°è¯å³å¯å¼å§â
+
+ä½ å¯ä»¥å¨è¿éçå°ä¸ä¸ªå
³äºè¿è¡åå
æµè¯çè§é¢æç¨ï¼
+
+
+.. |video| image:: https://img.youtube.com/vi/393gPtzMN1k/0.jpg
+ :scale: 100%
+ :align: middle
+ :target: https://www.youtube.com/watch?v=393gPtzMN1k
+
++---------+
+| |video| |
++---------+
+
+
+5. å建åºäºCUDAçGPUæ¯æ
+------------------------------
+
+å¨æ¬èä¸ï¼æ们å°æ©å±åé¢çæ¥éª¤ä»¥å¯ç¨GPUã
+
+5.1 å®è£
ä¾èµåº
+------------------------
+
+é¤äº1é¨åçä¾èµåºï¼æ们è¿å°éè¦å¦ä¸åºï¼
+
+* CUDA
+
+ ä»https://developer.nvidia.com/cuda-downloadsä¸è½½åéççæ¬ï¼æ¯å¦9.1ãç¡®ä¿å®è£
Visual Studioéæ模åã
+
+* cuDNN
+
+ ä»https://developer.nvidia.com/cudnnä¸è½½åéççæ¬ï¼æ¯å¦7.1ã
+
+* cnmem:
+
+ * ä»https://github.com/NVIDIA/cnmemä¸è½½ææ°çæ¬
+ * å建Visual Studioç解å³æ¹æ¡:
+
+ .. code-block:: bash
+
+ cmake -G "Visual Studio 15 2017 Win64"
+
+ * å¨Visual Studioä¸æå¼çæç解å³æ¹æ¡ã
+ * å°å建设置æ´æ¹ä¸ºReleaseåx64ã
+ * å建cnmem项ç®ã
+
+
+5.2 å建SINGA
+----------------------
+
+* è°ç¨cmake并å¨ç³»ç»ä¸æ·»å 类似以ä¸ç¤ºä¾çè·¯å¾ï¼
+
+ .. code-block:: bash
+
+ cmake -G "Visual Studio 15 2017 Win64" ^
+ -DGLOG_INCLUDE_DIR="D:/WinSinga/dependencies/glog-0.3.5/src/windows" ^
+ -DGLOG_LIBRARIES="D:/WinSinga/dependencies/glog-0.3.5/x64/Release" ^
+ -DCBLAS_INCLUDE_DIR="D:/WinSinga/dependencies/openblas-0.2.20/lapack-netlib/CBLAS/include" ^
+ -DCBLAS_LIBRARIES="D:/WinSinga/dependencies/openblas-0.2.20/lib/RELEASE" ^
+ -DProtobuf_INCLUDE_DIR="D:/WinSinga/dependencies/protobuf-2.6.1/src" ^
+ -DProtobuf_LIBRARIES="D:\WinSinga/dependencies/protobuf-2.6.1/vsprojects/x64/Release" ^
+ -DProtobuf_PROTOC_EXECUTABLE="D:/WinSinga/dependencies/protoc-2.6.1-win32/protoc.exe" ^
+ -DCUDNN_INCLUDE_DIR=D:\WinSinga\dependencies\cudnn-9.1-windows10-x64-v7.1\cuda\include ^
+ -DCUDNN_LIBRARIES=D:\WinSinga\dependencies\cudnn-9.1-windows10-x64-v7.1\cuda\lib\x64 ^
+ -DSWIG_DIR=D:\WinSinga\dependencies\swigwin-3.0.12 ^
+ -DSWIG_EXECUTABLE=D:\WinSinga\dependencies\swigwin-3.0.12\swig.exe ^
+ -DUSE_CUDA=YES ^
+ -DCUDNN_VERSION=7 ^
+ ..
+
+
+* 为C++åPythonçæswigæ¥å£ï¼
+ è¿å
¥ src/api
+
+ .. code-block:: bash
+
+ swig -python -c++ singa.i
+
+* å¨Visual Studioä¸æå¼çæç解å³æ¹æ¡
+
+* å°çæ¬è®¾ç½®æ´æ¹ä¸ºReleaseåx64
+
+5.2.1 å建singa_objects
+----------------------------
+
+* å°src/apiä¸çsinga_wrap.cxxæ件添å å°singa_objects项ç®ä¸ã
+* å¨singa_objects项ç®ä¸ï¼æå¼å
¶ä»å
å«ç®å½ã
+* æ·»å Pythonå
å«è·¯å¾ã
+* æ·»å numpyå
å«è·¯å¾ã
+* æ·»å protobufå
å«è·¯å¾ã
+* 为CUDAï¼cuDNNåcnmemæ·»å å
å«è·¯å¾ã
+* å¨singa_objects项ç®çé¢å¤çå¨å®ä¹ä¸ï¼æ·»å USE_GLOGï¼USE_CUDAåUSE_CUDNNãå é¤DISABLE_WARNINGSã
+* 建ç«singa_objects项ç®ã
+
+5.2.2 å建singa-kernel
+---------------------------
+
+* å建ä¸ä¸ªç±»å为âCUDA 9.1 Runtimeâçæ°Visual Studioç¨åºã ç»å®èµ·ä¸ä¸ªååï¼æ¯å¦singa-kernelã
+* 该项ç®å¸¦æä¸ä¸ªå为kernel.cuçåå§æ件ã ä»é¡¹ç®ä¸å é¤æ¤æ件ã
+* æ·»å æ¤æ件ï¼src / core / tensor / math_kernel.cu
+* å¨é¡¹ç®è®¾ç½®ä¸ï¼
+
+ * å°Platfromå·¥å
·é设置为âVisual Studio 2015ï¼v140ï¼â
+ * å°é
置类å设置为âéæåºï¼.libï¼â
+ * å¨å
å«ç®å½ä¸ï¼æ·»å build/include
+
+* å建singa-kernel项ç®
+
+
+5.2.3 å建singa
+--------------------
+
+* å¨singa项ç®ä¸:
+
+ * å°singa_wrap.objæ·»å å°å¯¹è±¡åºã
+ * å°ç®æ å称æ´æ¹ä¸º_singa_wrapã
+ * å°ç®æ æ©å±åæ´æ¹ä¸º.pydã
+ * å°é
置类åæ´æ¹ä¸ºå¨æåºï¼.dllï¼ã
+ * 转å°å
¶ä»åºç®å½å¹¶æ·»å å°Pythonï¼openblasï¼protobufåglogåºçè·¯å¾ã
+ * è¿å°åºè·¯å¾æ·»å å°singa-kernelï¼cnmemï¼cudaåcudnnã
+ * 转å°éå ä¾èµå
³ç³»å¹¶æ·»å libopenblas.libï¼libglog.libålibprotobuf.libã
+ * æ·»å ï¼singa-kernel.libï¼cnmem.libï¼cudnn.libï¼cuda.libï¼cublas.libï¼curand.libåcudart.libã
+
+* å建singa项ç®
+
+5.3. å®è£
Python模å
+--------------------------
+
+* å¨build/python/setup.pyä¸ï¼å°Change _singa_wrap.soæ¹ä¸º_singa_wrap.pyd
+* æ·è´src/proto/python_outä¸çæ件å°build/python/singa/proto
+
+* ï¼å¯éæ©çï¼å建并æ¿æ´»ä¸ä¸ªèæç¯å¢ï¼
+
+.. code-block:: bash
+
+ mkdir SingaEnv
+ virtualenv SingaEnv
+ SingaEnv\Scripts\activate
+
+* è¿å
¥build/pythonæ件夹并è¿è¡ï¼
+
+.. code-block:: bash
+
+ python setup.py install
+
+* å°_singa_wrap.pydï¼libglog.dllï¼libopenblas.dllï¼cnmem.dllï¼CUDAè¿è¡æ¶ï¼ä¾å¦cudart64_91.dllï¼åcuDNNï¼ä¾å¦cudnn64_7.dllï¼æ·»å å°è·¯å¾æéè¿å°å®ä»¬å¤å¶å°singaå
æ件夹 pythonç½ç«å
ã
+
+* éè¿ä¸é¢æ令éªè¯SINGAå·²å®è£
ï¼
+
+.. code-block:: bash
+
+ python -c "from singa import device; dev = device.create_cuda_gpu()"
+
+å
³äºè¿é¨åçè§é¢æç¨å¯ä»¥å¨ä¸é¢æ¾å°ï¼
+
+
+.. |video| image:: https://img.youtube.com/vi/YasKVjRtuDs/0.jpg
+ :scale: 100%
+ :align: middle
+ :target: https://www.youtube.com/watch?v=YasKVjRtuDs
+
++---------+
+| |video| |
++---------+
+
+5.4. è¿è¡åå
æµè¯
+-----------------
+
+* å¨testæ件夹ä¸ï¼çæVisual Studioç解å³æ¹æ¡:
+
+.. code-block:: bash
+
+ cmake -G "Visual Studio 15 2017 Win64"
+
+* å¨Visual Studioä¸æå¼çæ好ç解å³æ¹æ¡ã
+
+* æ´æ¹å建ç¯å¢ä¸ºReleaseåx64ã
+
+* å建glog项ç®ã
+
+* å¨test_singa项ç®ä¸:
+
+ * å°USE_GLOGæ·»å å°é¢å¤çå¨å®ä¹ä¸ã
+ * å¨å
¶ä»å
å«ç®å½ä¸ï¼æ·»å ä¸è¿°æ¥éª¤2ä¸ä½¿ç¨çGLOG_INCLUDE_DIRï¼CBLAS_INCLUDE_DIRåProtobuf_INCLUDE_DIRçè·¯å¾ã æ·»å ä¹æ建å建ç«/å
å«æ件夹ã
+ * 转å°å
¶ä»åºç®å½å¹¶æ·»å å°openblasï¼protobufåglogåºçè·¯å¾ã ä¹å¯ä»¥æ·»å build / src / singa_objects.dir / Releaseã
+ * 转å°éå ä¾èµé¡¹å¹¶æ·»å libopenblas.libï¼libglog.libålibprotobuf.libã ä¿®å¤ä¸¤ä¸ªåºçå称ï¼gtest.libåsinga_objects.libã
+
+* å建test_singa项ç®ã
+
+* éè¿æå®ä»¬å å
¥å°ç³»ç»è·¯å¾ææ·è´å°test/releaseæ件夹ä¸ä½¿å¾libglog.dllålibopenblas.dllå¯è¢«è·åå°ã
+
+* åå
æµè¯æå¦ä¸è¿è¡æ¹å¼ï¼
+
+ * ä»å½ä»¤è¡:
+
+ .. code-block:: bash
+
+ test_singa.exe
+
+ * ä»Visual Studio:
+ * å³é®åå»test_singa项ç®å¹¶éæ©â设为å¯å¨é¡¹ç®â
+ * ä»âè°è¯âèåä¸éæ©âæ éè°è¯å³å¯å¼å§â
+
+ä½ å¯ä»¥å¨è¿éçå°ä¸ä¸ªå
³äºè¿è¡åå
æµè¯çè§é¢æç¨ï¼
+
+
+.. |video| image:: https://img.youtube.com/vi/YOjwtrvTPn4/0.jpg
+ :scale: 100%
+ :align: middle
+ :target: https://www.youtube.com/watch?v=YOjwtrvTPn4
+
++---------+
+| |video| |
++---------+
Added: incubator/singa/site/trunk/zh/_sources/docs/installation.md.txt
URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/zh/_sources/docs/installation.md.txt?rev=1833193&view=auto
==============================================================================
--- incubator/singa/site/trunk/zh/_sources/docs/installation.md.txt (added)
+++ incubator/singa/site/trunk/zh/_sources/docs/installation.md.txt Fri Jun 8 15:29:00 2018
@@ -0,0 +1,309 @@
+# å®è£
+
+## ä»Condaå®è£
+
+Condaæ¯Pythonï¼CPPåå
¶ä»è½¯ä»¶å
ç软件å
管çåã
+
+ç®åï¼SINGAæéç¨äºLinuxåMacOSXçconda软件å
ï¼Python 2.7åPython 3.6ï¼ã
+建议使ç¨[Miniconda3](https://conda.io/miniconda.html)ä¸SINGAä¸èµ·ä½¿ç¨ãå®è£
å®minicondaåï¼æ§è¡ä»¥ä¸å½ä»¤ä¹ä¸æ¥å®è£
SINGAã
+
+1. CPUçæ¬
+
+ conda install -c nusdbsystem singa-cpu
+
+2. ç±CUDAåcuDNNæ¯æçGPUçæ¬
+
+ conda install -c nusdbsystem singa-gpu
+
+ çåäº
+
+ conda install -c nusdbsystem singa=1.1.1=py36_cuda9.0-cudnn7.1.2
+
+ å¨æ§è¡ä¸è¿°å½ä»¤ä¹åï¼å¿
é¡»å
å®è£
CUDA 9.0ã å
¶ä»CUDAçæ¬çSinga软件å
ä¹å¯ç¨ã 以ä¸è¯´æååºäºææå¯ç¨çSinga软件å
ã
+
+ conda search -c nusdbsystem singa
+
+ å¦æä¸é¢æ令没æåºç°é误æ示ï¼è¯´æSINGAå·²ç»å®è£
æåã
+
+ python -c "from singa import tensor"
+
+
+## ä»æºç å®è£
+
+æºæ件å¯ä»¥è¢«ä¸è½½ä¸º[tar.gz æ件](https://dist.apache.org/repos/dist/dev/incubator/singa/)ï¼æè
为ä¸ä¸ªgitä»åºï¼
+
+ $ git clone https://github.com/apache/incubator-singa.git
+ $ cd incubator-singa/
+
+### ç±condaå建SINGA
+
+Conda-buildæ¯ä¸æ¬¾æ建工å
·ï¼å¯ä»¥å®è£
anacondaäºä¸çç¸å
³åºå¹¶æ§è¡æ建èæ¬ã çæç软件å
å¯ä»¥ä¸ä¼ å°anacondaäºä¸ä¾ä»äººä¸è½½åå®è£
ã
+
+å®è£
conda-build (å®è£
minicondaå)
+
+ conda install conda-build
+
+å建CPUçæ¬çSINGA
+
+ export BUILD_STR=cpu
+ conda build tool/conda/singa/ --python3.6 (or --python2.7)
+
+ä¸é¢çæ令已å¨Ubuntu 16.04åMac OSXä¸æµè¯è¿ãæ´å¤ä¿¡æ¯è¯·åè[Travis-CI页é¢](https://travis-ci.org/apache/incubator-singa)ã
+
+å建GPUçæ¬çSINGA
+
+ export BUILD_STR=cudax.y-cudnna.b.c (e.g. cuda9.0-cudnn7.1.2)
+ export CUDNN_PATH=<path to cudnn folder>
+ conda build tool/conda/singa/ --python3.6 (or --python2.7)
+
+è¿äºåºäºGPUå¹³å°çæ令已ç»å¨Ubuntu 16.04 (cuDNN >= 7åCUDA >= 9)ä¸æµè¯è¿ã
+[Nvidiaçdockeréå](https://hub.docker.com/r/nvidia/cuda/)æä¾äºcuDNNåCUDAçå建ç¯å¢ã
+
+å±å¹ä¸å°æ¾ç¤ºçæçå
æ件çä½ç½®ã
+请åé
[condaå®è£
](https://conda.io/docs/commands/conda-install.html)
+对ä»æ¬å°æ件å®è£
软件å
ç说æã
+
+### 使ç¨æ¬å°å·¥å
·å¨Ubuntuä¸å建SINGA
+
+ç¼è¯åè¿è¡SINGAéè¦ä»¥ä¸åºã
+æå
³å¨Ubuntu 16.04ä¸å®è£
å®ä»¬ç说æï¼
+请åé
SINGA [Dockerfiles](https://github.com/apache/incubator-singa/blob/master/tool/docker/)ã
+
+* cmake (>=2.8)
+* gcc (>=4.8.1) or Clang
+* google protobuf (>=2.5)
+* blas (tested with openblas >=0.2.10)
+* swig(>=3.0.10) for compiling PySINGA
+* numpy(>=1.11.0) for compiling PySINGA
+
+
+1. å¨incubator-singaç®å½ä¸å建ä¸ä¸ª`build`æ件夹并è¿å
¥å
¶ä¸
+2. è¿è¡ `cmake [options] ..`
+ é»è®¤æ
åµä¸é¤äº`USE_PYTHON`ï¼å
¶ä»ææå¯é项é½æ¯OFF
+
+ * `USE_MODULES=ON`, å½protobufåblas没æ被å®è£
æ¶ä½¿ç¨
+ * `USE_CUDA=ON`, å½CUDAåcuDNNå¯ç¨æ¶ä½¿ç¨
+ * `USE_PYTHON=ON`, ç¨äºç¼è¯PySINGA
+ * `USE_PYTHON3=ON`, ç¨äºæ¯æPython 3ç¼è¯ (é»è®¤çæ¯Python 2)
+ * `USE_OPENCL=ON`, ç¨äºæ¯æOpenCLç¼è¯
+ * `PACKAGE=ON`, ç¨äºå建Debianå
+ * `ENABLE_TEST`ï¼ç¨äºç¼è¯åå
æµè¯ç¨ä¾
+
+3. ç¼è¯ä»£ç ï¼ å¦ï¼ `make`
+4. è¿å
¥pythonæ件夹
+5. è¿è¡ `pip install .`æè
`pip install -e .`ã第äºä¸ªæ令å建符å·é¾æ¥èä¸æ¯å°æ件å¤å¶å°pythonç«ç¹å
æ件夹ä¸ã
+
+å½USE_PYTHON=ONæ¶ï¼ç¬¬4æ¥å第5æ¥ç¨äºå®è£
PySINGAã
+
+å¨éè¿ENABLE_TEST=ONç¼è¯å¥½SINGAåï¼ä½ å¯ä»¥è¿è¡åå
æµè¯
+
+ $ ./bin/test_singa
+
+ä½ å¯ä»¥çå°æææµè¯ç¨ä¾åæµè¯ç»æã
+å¦æSINGAéè¿æææµè¯ï¼é£ä¹ä½ å·²ç»æåå®è£
äºSINGAã
+
+### å¨Windowsä¸ç¼è¯SINGA
+
+åºäºPythonæ¯æçWindowsä¸çå®è£
说æå¯ä»¥å¨[è¿é](install_win.html)æ¾å°ã
+
+### æ´å¤ç¼è¯éæ©
+
+#### USE_MODULES
+
+å¦æprotobufåopenblas没æå®è£
ï¼å¨ç¼è¯SINGAæ¶éè¦å¦ä¸å¤çï¼
+
+ $ In SINGA ROOT folder
+ $ mkdir build
+ $ cd build
+ $ cmake -DUSE_MODULES=ON ..
+ $ make
+
+cmakeä¼ä¸è½½OpenBlasåProtobufï¼2.6.1ï¼å¹¶åSINGAä¸èµ·ç¼è¯ã
+
+ä½ å¯ä»¥ä½¿ç¨`cmake ..`æ¥é
ç½®ç¼è¯æä½æ令ã å¦æä¸äºä¾èµåºæ²¡æ被å®è£
å¨é»è®¤è·¯å¾ä¸ï¼ä½ éè¦å¯¼åºç¸åºçç¯å¢åéï¼
+
+ export CMAKE_INCLUDE_PATH=<path to the header file folder>
+ export CMAKE_LIBRARY_PATH=<path to the lib file folder>
+
+#### USE_PYTHON
+
+类似äºç¼è¯CPP代ç ï¼ PySINGAå¯ä»¥è¢«è¿ä¹ç¼è¯ï¼
+
+ $ cmake -DUSE_PYTHON=ON ..
+ $ make
+ $ cd python
+ $ pip install .
+
+#### USE_CUDA
+
+ç¨æ·è¢«æ¨èå®è£
CUDAå[cuDNN](https://developer.nvidia.com/cudnn)以å¨GPUä¸è¿è¡SINGAæ¶è·å¾æ´å¥½çæ§è½ã
+
+SINGAå·²ç»å¨CUDA 9åcuDNN 7ä¸æµè¯è¿ã å¦æcuDNNå¨éç³»ç»ç®å½ä¸è§£åï¼å¦/home/bob/local/cudnn/, ä¸é¢çæ令éè¦è¢«æ§è¡ä»¥è®©cmakeåè¿è¡æ¶è½æ¾å°å®ï¼
+
+ $ export CMAKE_INCLUDE_PATH=/home/bob/local/cudnn/include:$CMAKE_INCLUDE_PATH
+ $ export CMAKE_LIBRARY_PATH=/home/bob/local/cudnn/lib64:$CMAKE_LIBRARY_PATH
+ $ export LD_LIBRARY_PATH=/home/bob/local/cudnn/lib64:$LD_LIBRARY_PATH
+
+cmake对CUDAåcuDNNçæä½é项åºè¯¥è¢«å¼å¯ï¼
+
+ # ä¾èµåºå·²ç»è¢«å®è£
+ $ cmake -DUSE_CUDA=ON ..
+ $ make
+
+#### USE_OPENCL
+
+SINGAç¨opencl-headeråviennaclï¼1.7.1çæ¬ææ´æ°ï¼ä»¥è·å¾OpenCLæ¯æã å®ä»¬å¯ç±ä»¥ä¸æ令å®è£
ï¼
+
+ # å¨Ubuntu 16.04ä¸
+ $ sudo apt-get install opencl-headers, libviennacl-dev
+ # å¨Fedoraä¸
+ $ sudo yum install opencl-headers, viennacl
+
+å¦å¤ï¼ä½ å°éè¦OpenCL Installable Client Driver (ICD)以å¨ä½ çå¹³å°ä¸è¿è¡OpenCLã
+
+* 对äºAMDåNvidia GPU, 驱å¨å
è¿éè¦å
å«æ£ç¡®çOpenCL ICDã
+* 对äºè±ç¹å°CPUså/æGPUs, å¯ä»¥ä»[è±ç¹å°å®ç½](https://software.intel.com/en-us/articles/opencl-drivers)ä¸è·åå°ã 注æï¼ å®ç½ä¸æä¾ç驱å¨ä»
æ¯æè¿æçCPUsåGPUsã
+* 对äºæ´èçè±ç¹å°CPUsï¼ä½ å¯ä»¥éç¨`beignet-opencl-icd`å
ã
+
+注æï¼å¨CPUä¸è¿è¡OpenCLç®åæ¯ä¸æ¨èçï¼å 为å¾æ
¢ã å
åä¼ è¾æ¯ä»¥ç§ç级å«ï¼CPUä¸ä¸º1000 msï¼èGPUä¸ä¸º1毫ç§ï¼ã
+
+æ´å¤å
³äºOpenCLç¯å¢é
ç½®çä¿¡æ¯å¯ä»¥ä»[è¿é](https://wiki.tiker.net/OpenCLHowTo)è·å¾ã
+
+å¦æViennaCLå
çæ¬ä½äº1.7.1ï¼ä½ å°éè¦ä»æºç ç¼è¯ï¼
+
+ä»[gitä»åº](https://github.com/viennacl/viennacl-dev)cloneï¼checkoutå°`release-1.7.1`æ ç¾ãè®°å¾æä»åºçè·¯å¾å å°ç¯å¢åé`PATH`ä¸ï¼å¹¶ä¸å建åºå°`LD_LIBRARY_PATH`ã
+
+ç¼è¯åºäºOpenCLæ¯æçSINGA (æµè¯ä¸SINGA 1.1)ï¼
+
+ $ cmake -DUSE_OPENCL=ON ..
+ $ make
+
+#### PACKAGE
+
+æ¤è®¾ç½®ç¨äºå建Debianå
ã 设置PACKAGE=ON并ç¨ä»¥ä¸å½ä»¤å建å
ï¼
+
+ $ cmake -DPACKAGE=ON
+ $ make package
+
+
+## FAQ
+
+* Q: å¨ä½¿ç¨ç±wheelå®è£
çPySINGA('import singa')æ¶ï¼åºç°é误ã
+
+ A: 请æ¥ç`python -c "from singa import _singa_wrap"`详ç»é误æ示ã è¿ææ¶æ¯ç±ä¾èµåºé æçï¼æ¯å¦ï¼æå¤ä¸ªçæ¬çprotobufï¼cudnn缺失ï¼numpyçæ¬ä¸å¹é
ã ä¸é¢çæ¥éª¤è¯¦è¿°äºä¸åçæ¡ä¾ï¼
+ 1. æ£æ¥cudnnï¼cudaågccçæ¬ï¼æ¨è使ç¨cudnn5ï¼cuda7.5ågcc4.8/4.9ã å¦ægccæ¯5.0çæ¬ï¼ éè¦éä½çæ¬ã å¦æcudnnç¡®å®æè
ä¸wheelçæ¬ä¸å¹é
ï¼ä½ å¯ä»¥å°æ£ç¡®çcudnnçæ¬ä¸è½½å°~/local/cudnn/ 并ä¸
+
+ $ echo "export LD_LIBRARY_PATH=/home/<yourname>/local/cudnn/lib64:$LD_LIBRARY_PATH" >> ~/.bashrc
+
+ 2. å¦ææ¯protobufçé®é¢ï¼éè¦ä¸è½½ææ°ç[ç¼è¯è¿protobufåopenblasçwhlæ件](https://issues.apache.org/jira/browse/SINGA-255)ã æè
ï¼ä½ å¯ä»¥ä»æºç å®è£
protobufå°æå®æ件夹ï¼æ¯å¦ï¼~/local/ï¼è§£åtaræ件ï¼ç¶åæ§è¡
+
+ $ ./configure --prefix=/home/<yourname>local
+ $ make && make install
+ $ echo "export LD_LIBRARY_PATH=/home/<yourname>/local/lib:$LD_LIBRARY_PATH" >> ~/.bashrc
+ $ source ~/.bashrc
+
+ 3. å¦ææ¾ä¸å°å
¶ä»pythonåºï¼ä½ å¯ä»¥ç¨pipæcondaå建pythonèæç¯å¢ã
+
+ 4. å¦æä¸æ¯ä»¥ä¸åå é æçï¼è¿å
¥`_singa_wrap.so`æå¨æ件夹ï¼æ§è¡
+
+ $ python
+ >> import importlib
+ >> importlib.import_module('_singa_wrap')
+
+ æ£æ¥é误信æ¯ã æ¯å¦ï¼å¦ænumpyçæ¬ä¸å¹é
ï¼é误信æ¯å°ä¼æ¯
+
+ RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa
+
+ æ¥çï¼ä½ éè¦æånumpyçæ¬ã
+
+
+* Q: è¿è¡`cmake ..`æ¥éï¼æ¾ä¸å°ä¾èµåºã
+
+ A: å¦æä½ æ²¡æå®è£
ç¸åºåºï¼å°±å»å®è£
å®ä»¬ãå¦æä½ æè¿äºåºå®è£
å¨éç³»ç»é»è®¤çè·¯å¾ä¸ï¼å¦/usr/localï¼ä½ å¯ä»¥å°æ£ç¡®è·¯å¾å¯¼åºå°ç¯å¢åéä¸ï¼
+
+ $ export CMAKE_INCLUDE_PATH=<path to your header file folder>
+ $ export CMAKE_LIBRARY_PATH=<path to your lib file folder>
+
+
+* Q: `make`æ¥éï¼å¦è¿æ¥é¶æ®µ
+
+ A: å¦æä½ çåºæ件å¨éç³»ç»é»è®¤è·¯å¾ä¸ï¼ä½ éè¦å¯¼åºç¸åºçåé
+
+ $ export LIBRARY_PATH=<path to your lib file folder>
+ $ export LD_LIBRARY_PATH=<path to your lib file folder>
+
+
+* Q: 头æ件é误ï¼æ¯å¦ï¼'cblas.h no such file or directory exists'
+
+ A: ä½ éè¦æcblas.hçè·¯å¾å å
¥å°CPLUS_INCLUDE_PATHï¼å¦
+
+ $ export CPLUS_INCLUDE_PATH=/opt/OpenBLAS/include:$CPLUS_INCLUDE_PATH
+
+* Q:ç¼è¯SINGAæ¶ï¼æåç°äºé误`SSE2 instruction set not enabled`
+
+ A:ä½ å¯ä»¥å°è¯å¦ä¸å½ä»¤
+
+ $ make CFLAGS='-msse2' CXXFLAGS='-msse2'
+
+* Q:å½æè¯å¾å¯¼å
¥.pyæ件æ¶ï¼æå¾å°é误æ示`ImportError: cannot import name enum_type_wrapper`ã
+
+ A: ä½ éè¦å®è£
ç»å®å°pythonçprotobufï¼å¯ä»¥ç±å¦ä¸å½ä»¤å®è£
+
+ $ sudo apt-get install protobuf
+
+ æè
ä»æºç å®è£
+
+ $ cd /PROTOBUF/SOURCE/FOLDER
+ $ cd python
+ $ python setup.py build
+ $ python setup.py install
+
+* Q: å½æä»æºç å建OpenBLASæ¶ï¼è¢«åç¥éè¦Fortranç¼è¯å¨ã
+
+ A: ä½ å¯ä»¥ç¨å¦ä¸å½ä»¤ç¼è¯OpenBLAS
+
+ $ make ONLY_CBLAS=1
+
+ æè
+
+ $ sudo apt-get install libopenblas-dev
+
+* Q: å½æå建protocol bufferæ¶ï¼åºç°é误æ示`GLIBC++_3.4.20 not found in /usr/lib64/libstdc++.so.6`ã
+
+ A: è¿è¯´æè¿æ¥å¨æ¾å°äºlibstdc++.so.6ï¼ä½æ¯è¿ä¸ªåºå±äºä¸ä¸ªæ´èçæ¬çGCCç¼è¯å¨ã è¦ç¼è¯çç¨åºä¾èµäºå®ä¹å¨æ°çæ¬GCCä¸çlibstdc++åºï¼æ以è¿æ¥å¨å¿
须被åç¥å¦ä½æ¾å°æ°ççå¯å
±äº«çlibstdc++åºã æç®åçå¤çæ¹æ³æ¯æ¾å°æ£ç¡®çlibstdc++åºï¼å¯¼åºå°LD_LIBRARY_PATHåéã æ¯å¦ï¼å¦æGLIBC++_3.4.20被åå¨å¦ä¸å½ä»¤çè¾åºä¸
+
+ $ strings /usr/local/lib64/libstdc++.so.6|grep GLIBC++
+
+ ä¹åï¼ä½ åªéè¦è®¾ç½®ç¯å¢åé
+
+ $ export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
+
+* Q: å½æå建glogæ¶æ¥éï¼"src/logging_unittest.cc:83:20: error: 'gflags' is not a namespace-name"ã
+
+ A: è¿å¯è½æ¯ä½ è£
äºä¸ä¸ªä¸åå½å空é´çgflagsï¼æ¯å¦"google"ï¼æ以glogæ¾ä¸å°'gflags'å½å空é´ã gflagsä¸æ¯å建glogå¿
é¡»çï¼ æä»¥ä½ å¯ä»¥ä¿®æ¹configure.acæ件以忽ç¥gflagsã
+
+ 1. cd to glog src directory
+ 2. change line 125 of configure.ac to "AC_CHECK_LIB(gflags, main, ac_cv_have_libgflags=0, ac_cv_have_libgflags=0)"
+ 3. autoreconf
+
+ ä¹åï¼ä½ å¯ä»¥éæ°å建glogã
+
+* Q: å½ä½¿ç¨èæç¯å¢æ¶ï¼æ¯æ¬¡æè¿è¡pip installé½ä¼éæ°å®è£
numpyã ç¶èï¼å¨`import numpy`æ¶ï¼numpyå¯è½å¹¶æ²¡æ被使ç¨ã
+
+ A: è¿å¯è½æ¯å 为å¨ä½¿ç¨èæç¯å¢æ¶ï¼`PYTHONPATH`被设置æäºç©ºä»¥é²æ¢ä¸èæç¯å¢ä¸çè·¯å¾åçå²çªã
+
+* Q: å½ä»æºç ç¼è¯PySINGAæ¶ï¼ä¼å 为缺失<numpy/objectarray.h>èåºç°ç¼è¯é误ã
+
+ A: 请å®è£
numpy并ä¸éè¿å¦ä¸å½ä»¤å¯¼åºnumpy头æ件
+
+ $ export CPLUS_INCLUDE_PATH=`python -c "import numpy; print numpy.get_include()"`:$CPLUS_INCLUDE_PATH
+
+* Q: å½å¨Mac OS Xä¸è¿è¡PySINGAæ¶ï¼æå¾å°äºé误信æ¯"Fatal Python error: PyThreadState_Get: no current thread Abort trap: 6"ã
+
+ A: è¿ä¸ªé误å¾å
¸åå°åºç°å¨å½ä½ ç³»ç»ä¸åå¨å¤ä¸ªçæ¬çpython并ä¸ä½ æ¯éè¿pipå®è£
+SINGAçï¼è¿ä¸ªé®é¢å¯ä»¥éè¿ç±condaå®è£
SINGAæ¥è§£å³ï¼ï¼ æ¯å¦ï¼ä¸ä¸ªæ¥èªäºOSï¼ä¸ä¸ªéè¿Homebrewå®è£
ã åSINGAè¿æ¥çPythonå¿
é¡»åPython解æå¨æ¯å个çæ¬ãä½ å¯ä»¥éè¿which pythonæ¥æ¥çpython解æå¨çæ¬ï¼å¹¶éè¿otool -L <path to _singa_wrap.so>æ£æ¥åPySINGAè¿æ¥çPythonçæ¬ã 为äºè§£å³è¿ä¸ªé®é¢ï¼ éè¦ç¨æ£ç¡®çPythonçæ¬æ¥ç¼è¯SINGAã ç¹å«å°ï¼å¦æä½ ä»æºç å建çPySINGAï¼å½å¤èµ·[cmake](http://stackoverflow.com/questions/15291500/i-have-2-versions-of-python-installed-but-cmake-is-using-older-version-how-do)æ¶ä½ éè¦æå®å®è£
è·¯
å¾
+
+ $ cmake -DPYTHON_LIBRARY=`python-config --prefix`/lib/libpython2.7.dylib -DPYTHON_INCLUDE_DIR=`python-config --prefix`/include/python2.7/ ..
+
+ å¦æä»äºè¿å¶æ件å®è£
PySINGAï¼æ¯å¦debianæè
wheelï¼é£ä¹ä½ éè¦æ¹åpython解æå¨ï¼å¦éç½®åé$PATHï¼ææ£ç¡®çPythonè·¯å¾å å¨æåé¢ã
+
Added: incubator/singa/site/trunk/zh/_sources/docs/layer.md.txt
URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/zh/_sources/docs/layer.md.txt?rev=1833193&view=auto
==============================================================================
--- incubator/singa/site/trunk/zh/_sources/docs/layer.md.txt (added)
+++ incubator/singa/site/trunk/zh/_sources/docs/layer.md.txt Fri Jun 8 15:29:00 2018
@@ -0,0 +1,492 @@
+# å±(Layer)
+
+## Python API
+
+Pythonå±å°C++å±å°è£
ææ´ç®åçAPIã
+
+示ä¾ç¨æ³ï¼
+
+```python
+from singa import layer
+from singa import tensor
+from singa import device
+
+layer.engine = 'cudnn' # to use cudnn layers
+dev = device.create_cuda_gpu()
+
+# create a convolution layer
+conv = layer.Conv2D('conv', 32, 3, 1, pad=1, input_sample_shape=(3, 32, 32))
+conv.to_device(dev) # move the layer data onto a CudaGPU device
+x = tensor.Tensor((3, 32, 32), dev)
+x.uniform(-1, 1)
+y = conv.foward(True, x)
+
+dy = tensor.Tensor()
+dy.reset_like(y)
+dy.set_value(0.1)
+# dp is a list of tensors for parameter gradients
+dx, dp = conv.backward(kTrain, dy)
+```
+
+---
+
+#### singa.layer.engine = 'cudnn'
+
+å¼æï¼engineï¼æ¯å±æ è¯ç¬¦çåç¼ã
+è¿ä¸ªå¼å¯è½æ¯[cudnn'ï¼'singacpp'ï¼'singacuda'ï¼'singacl']ä¹ä¸ï¼åå«ç¨cudnnåºï¼Cppï¼CudaåOpenCLå®ç°ã ä¾å¦ï¼CudnnConvolutionå±ç±'cudnn_convolution'æ è¯; 'singacpp_convolution'ç¨äºå·ç§¯å±; æäºå±çå®ç°åªä½¿ç¨tensorå½æ°ï¼å æ¤å®ä»¬å¯¹åºå±è®¾å¤æ¯éæçã 对äºè¿äºå±ï¼å®ä»¬å°å
·æå¤ä¸ªæ è¯ç¬¦ï¼ä¾å¦ï¼singacpp_dropoutï¼singacuda_dropoutåsingacl_dropoutå
¨é½ç¨äºDropoutå±ã æ¤å¤ï¼å®è¿æä¸ä¸ªé¢å¤çæ è¯ç¬¦'singa'ï¼å³'singa_dropout'ä¹ä»£è¡¨Dropoutå±ã
+
+å¼ææ¯å¤§å°åææçãæ¯ä¸ªpythonå±å°ä¼ç¨å¼æå±æ§å建æ£ç¡®çå±ã
+
+---
+
+### class singa.layer.Layer(name, conf=None, **kwargs)
+
+åºç±»ï¼`object`
+
+Pythonå±çåºç±»ã
+å
¸åå°ï¼å±å®ä¾ççå½å¨æå
æ¬ï¼
+
+1. æé å±æ²¡æinput_sample_shapesï¼è½¬å°2;ç¨input_sample_shapesæ建å±ï¼è½¬å°3
+2. è°ç¨setupæ¥å建åæ°å¹¶è®¾ç½®å
¶ä»å
å段
+3. è°ç¨ååä¼ ææ访é®å±æå
+4. è°ç¨ååä¼ æ并è·ååæ°å®ææ´æ°
+
+**åæ°ï¼**
+- **name (str)** â å±å
+
+---
+
+#### setup(in_shapes)
+
+è°ç¨C++setupå½æ°å建åæ°å¹¶è®¾ç½®å
æ°æ®ã
+
+**åæ°ï¼**
+- **in_shapes** â å¦æå±æ¥åå个è¾å
¥tensorï¼åin_shapesæ¯æå®è¾å
¥tensorå½¢ç¶çå个å
ç»; å¦æ该å±æ¥åå¤ä¸ªè¾å
¥tensorï¼ä¾å¦ï¼concatenationå±ï¼ï¼åin_shapesæ¯å
ç»çå
ç»ï¼æ¯ä¸ªå
ç»å¯¹äºä¸ä¸ªè¾å
¥tensor
+
+---
+
+#### caffe_layer()
+
+åºäºcaffeå±çé
ç½®å建ä¸ä¸ªSINGAå±
+
+---
+
+#### get_output_sample_shape()
+
+å¨setup以è·å¾è¾åºæ ·æ¬çå½¢ç¶å被è°ç¨
+
+**è¿åå¼ï¼** å个è¾åºtensorçå
ç»ï¼å¦æ该å±å
·æå¤ä¸ªè¾åºï¼å为å
ç»å表
+
+---
+
+#### param_names()
+**è¿åå¼ï¼** å符串å表ï¼æ¯ä¸ªå¼ä»£è¡¨ä¸ä¸ªåæ°tensorçå称
+
+---
+
+#### param_values()
+
+è¿ååæ°å¼tensorã
+åæ°tesnorä¸ä½ä¸ºå±æååå¨ãç±äºå±è®¾å¤çæ´æ¹ï¼cpp tensorå¯è½ä¼ç§»å¨å°diff设å¤ä¸ï¼è¿ä¼å¯¼è´ä¸ä¸è´ã
+
+**è¿åå¼ï¼** tensorå表ï¼æ¯ä¸ªåæ°å¯¹åºå表ä¸çä¸ä¸ª
+
+---
+
+#### forward(flag, x)
+
+å½åå±çååä¼ æã
+
+**åæ°ï¼**
+- **flag** â True (kTrain) for training (kEval); False for evaluating; other values for furture use.
+- **x (Tensor or list<Tensor>)** â an input tensor if the layer is connected from a single layer; a list of tensors if the layer is connected from multiple layers.
+
+**è¿åå¼ï¼** å¦æ该å±è¢«è¿æ¥å¨ä¸ä¸ªåç¬çå±åè¿åtensorï¼å¦æ被è¿æ¥å°å¤ä¸ªå±ï¼åè¿åä¸ä¸ªtensorå表
+
+---
+
+#### backward(flag, dy)
+
+å½åå±çååä¼ æã
+
+**åæ°ï¼**
+- **flag (int)** â ä¿ç为以å使ç¨
+- **dy (Tensor or list<Tensor>)** â ä¸ç®æ æ失ç¸å¯¹åºç梯度tensor
+
+**è¿åå¼ï¼** <dx, <dp1, dp2..>>ï¼dxæ¯è¾å
¥xç梯度ï¼dpiæ¯ç¬¬i个åæ°ç梯度
+
+---
+
+#### to_device(device)
+
+å°å±ç¶ætensor移è³æå®è®¾å¤ã
+
+**åæ°ï¼**
+- **device** â swig转æ¢ç设å¤ï¼ç±singa.deviceå建
+
+---
+
+### class singa.layer.Dummy(name, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+ä¸ä¸ªèæå±ï¼ä»
ç¨äºåå/ååä¼ éæ°æ®ï¼è¾å
¥/è¾åºæ¯å个tensorï¼ã
+
+
+#### forward(flag, x)
+
+**è¿åå¼ï¼** è¾å
¥x
+
+#### backward(falg, dy)
+
+**è¿åå¼ï¼** dyï¼[]
+
+---
+
+### class singa.layer.Conv2D(name, nb_kernels, kernel=3, stride=1, border_mode='same', cudnn_prefer='fatest', data_format='NCHW', use_bias=True, W_specs=None, b_specs=None, pad=None, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+å建ä¸ä¸ªå±å2Då·ç§¯ã
+
+**åæ°ï¼**
+- **nb_kernels (int)** â è¾å
¥tensorçééï¼æ ¸ï¼æ°
+- **kernel** â ä¸ä¸ªæä¸å¯¹æ´åæ°è¡¨ç¤ºæ ¸çé«å宽
+- **stride** â ä¸ä¸ªæä¸å¯¹æ´åæ°è¡¨ç¤ºæ¥é¿çé«å宽
+- **border_mode (string)** â å¡«å
模å¼ï¼ä¸åºå大å°åï¼âvalidâ -> å¨é«å宽é¿åº¦ä¸è¡¥0 âsameâ -> å¡«å
æ ¸ä¸åï¼ä¸åæ´ï¼æ°ç®ç0ï¼æ ¸å¿
é¡»æ¯å¥æ°
+- **cudnn_prefer (string)** â å好çcudnnå·ç§¯ç®æ³ï¼å¯ä»¥æ¯âfatestâ, âautotuneâ, âlimited_workspaceâåâno_workspaceâ
+- **data_format (string)** â âNCHWâæâNHWCâ
+- **use_bias (bool)** â TrueæFalse
+- **pad** â ä¸ä¸ªæä¸å¯¹æ´åæ°è¡¨ç¤ºå¡«å
çé«å宽
+- **W_specs (dict)** â ç¨äºæå®æéç©éµçè§æ ¼ï¼å段å
æ¬ä»£è¡¨åæ°å称çânameâï¼ä»£è¡¨å¦ä¹ éçä¹æ°ç'lr_multï¼ä»£è¡¨æéè¡°åä¹æ°ç''decay_mult'ï¼ä»£è¡¨åå§åæ¹æ³ç'init'ï¼å
¶å¯ä»¥æ¯'gaussian'ï¼'uniform'ï¼' xavier'ï¼ç¸åºçåå§åæ¹æ³ä¸º'''std'ï¼'mean'ï¼'high'ï¼'low'ãTODOï¼wangweiï¼'clamp'为æ¸å约æï¼value为æ éï¼'regularizer'为æ£è§åï¼ç®åæ¯æ'l2'
+- **b_specs (dict)** â å移åéçè¶
åæ°ï¼åW_specs类似
+- **name (string)** â å±å
+- **input_sample_shape** â ç¨äºè¾å
¥tensorå½¢ç¶çä¸å
ç»ï¼ä¾å¦ï¼ééï¼é«åº¦ï¼å®½åº¦ï¼æï¼é«åº¦ï¼å®½åº¦ï¼ééï¼
+
+---
+
+### class singa.layer.Conv1D(name, nb_kernels, kernel=3, stride=1, border_mode='same', cudnn_prefer='fatest', use_bias=True, W_specs={'init': 'Xavier'}, b_specs={'init': 'Constant', 'value': 0}, pad=None, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Conv2D`
+
+æ建1Då·ç§¯å±ã
+大é¨ååæ°ä¸Conv2Dçåæ°ç¸åï¼é¤äºæ ¸ï¼æ¥é¿ï¼å¡«å
å¼ï¼è¿æ¯ä¸ä¸ªæ éèä¸æ¯å
ç»ã input_sample_shapeæ¯ä¸ä¸ªå
·æå个è¾å
¥ç¹å¾é¿åº¦å¼çå
ç»ã
+
+#### get_output_sample_shape()
+
+---
+
+### class singa.layer.Pooling2D(name, mode, kernel=3, stride=2, border_mode='same', pad=None, data_format='NCHW', input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+2Dæ± åå±è¿è¡æ大æå¹³åæ± åã
+ææçåæ°é½ä¸Conv2Dç¸åï¼é¤äºä¸é¢çåæ°ã
+
+**åæ°ï¼**
+- **mode** â æ± å模å¼ï¼model_pb2.PoolingConf.MAXæmodel_pb2.PoolingConf.AVE
+
+---
+
+### class singa.layer.MaxPooling2D(name, kernel=3, stride=2, border_mode='same', pad=None, data_format='NCHW', input_sample_shape=None)
+
+åºç±»: `singa.layer.Pooling2D`
+
+---
+
+### class singa.layer.AvgPooling2D(name, kernel=3, stride=2, border_mode='same', pad=None, data_format='NCHW', input_sample_shape=None)
+
+åºç±»: `singa.layer.Pooling2D`
+
+---
+
+### class singa.layer.MaxPooling1D(name, kernel=3, stride=2, border_mode='same', pad=None, data_format='NCHW', input_sample_shape=None)
+
+åºç±»: `singa.layer.MaxPooling2D`
+
+get_output_sample_shape()
+
+---
+
+### class singa.layer.AvgPooling1D(name, kernel=3, stride=2, border_mode='same', pad=None, data_format='NCHW', input_sample_shape=None)
+
+åºç±»: `singa.layer.AvgPooling2D`
+
+get_output_sample_shape()
+
+---
+
+### class singa.layer.BatchNormalization(name, momentum=0.9, beta_specs=None, gamma_specs=None, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+æ¹éæ£ååã
+
+**åæ°ï¼**
+- **momentum (float)** â ç¨äºè¿è¡çåå¼åæ¹å·®
+- **beta_specs (dict)** â åå
¸ï¼å
æ¬betaåæ°çå段ï¼'name'åæ°å称'ï¼lr_mult'å¦ä¹ éçä¹æ°ï¼'decay_mult'æéè¡°åä¹æ°ï¼'init'åå§åæ¹æ³ï¼å¯ä»¥æ¯'gaussian'ï¼'uniform'å'xavier'ï¼'std'ï¼'mean'ï¼'high'ï¼'low'表示ç¸åºåå§åæ¹æ³ï¼'clamp'表示梯度约æï¼å¼æ¯æ éï¼'regularizer'ç¨äºæ£ååï¼ç®åæ¯æ'l2'
+- **gamma_specs (dict)** â åbeta_specs类似, ä½ç¨äºgammaåæ°.
+- **name (string)** â å±å
+- **input_sample_shape (tuple)** â æ´åæ°ï¼è³å°ä¸ä¸ª
+
+---
+
+### class singa.layer.LRN(name, size=5, alpha=1, beta=0.75, mode='cross_channel', k=1, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+å±é¨ååºå½ä¸åã
+
+**åæ°ï¼**
+- **size (int)** â ç¨äºå½ä¸åçééæ°.
+- **mode (string)** â âcross_channelâ
+- **input_sample_shape (tuple)** â 3ç»´å
ç»ï¼(channel, height, width)
+
+---
+
+### class singa.layer.Dense(name, num_output, use_bias=True, W_specs=None, b_specs=None, W_transpose=False, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+è¿è¡çº¿æ§ææ¾å°åæ¢ï¼ä¹è¢«å«åå
积æå
¨è¿æ¥å±ã
+
+**åæ°ï¼**
+- **num_output (int)** â è¾åºç¹å¾é¿åº¦
+- **use_bias (bool)** â 转æ¢åçç¹å¾åéæ¯å¦å ä¸å移åé
+- **W_specs (dict)** â å
å«æå¼ç©éµçå段ï¼'name'åæ°å称'ï¼lr_mult'å¦ä¹ éçä¹æ°ï¼'decay_mult'æéè¡°åä¹æ°ï¼'init'åå§åæ¹æ³ï¼å¯ä»¥æ¯'gaussian'ï¼'uniform'å'xavier'ï¼'std'ï¼'mean'ï¼'high'ï¼'low'表示ç¸åºåå§åæ¹æ³ï¼'clamp'表示梯度约æï¼å¼æ¯æ éï¼'regularizer'ç¨äºæ£ååï¼ç®åæ¯æ'l2'
+- **b_specs (dict)** â å移åéçå段, åW_specs类似
+- **W_transpose (bool)** â å¦æ为çï¼è¾åºä¸ºx*W.T+b
+- **input_sample_shape (tuple)** â è¾å
¥ç¹å¾é¿åº¦
+
+---
+
+### class singa.layer.Dropout(name, p=0.5, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+Dropoutå±
+
+**åæ°ï¼**
+- **p (float)** â éæºä¸¢æä¸ä¸ªå
ç´ ï¼å³å°å
¶ä¸è®¾ä¸º0ï¼çæ¦ç
+- **name (string)** â å±å
+
+---
+
+### class singa.layer.Activation(name, mode='relu', input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+æ¿å±å±
+
+**åæ°ï¼**
+- **name (string)** â å±å
+- **mode (string)** â âreluâ, âsigmoidâæ âtanhâ
+- **input_sample_shape (tuple)** â åä¸ªæ ·æ¬çå½¢ç¶
+
+---
+
+### class singa.layer.Softmax(name, axis=1, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+éç¨SoftMaxã
+
+**åæ°ï¼**
+- **axis (int)** â 对[axis, -1)çæ°æ®é个è¿è¡SoftMax
+- **input_sample_shape (tuple)** â åä¸ªæ ·æ¬çå½¢ç¶
+
+---
+
+### class singa.layer.Flatten(name, axis=1, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+å°è¾å
¥tensoréå¡ä¸ºä¸ä¸ªç©éµã
+
+**åæ°ï¼**
+- **axis (int)** â æ ¹æ®æå®ç»´åº¦å°è¾å
¥éå¡ä¸ºç©éµï¼[0,axis)ä½ä¸ºè¡ï¼[axis, -1)ä½ä¸ºå
+- **input_sample_shape (tuple)** â åä¸ªæ ·æ¬çå½¢ç¶
+
+---
+
+### class singa.layer.Merge(name, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+对ææè¾å
¥tensoræ±åã
+
+**åæ°ï¼**
+- **input_sample_shape** â è¾å
¥æ ·æ¬çå½¢ç¶ãæææ ·æ¬çå½¢ç¶åºè¯¥ä¸è´ã
+
+#### setup(in_shape)
+
+#### get_output_sample_shape()
+
+#### forward(flag, inputs)
+
+éè¿æ±åå并ææè¾å
¥tensorã
+TODO(wangwei) å
ç´ çº§å«çå并æä½ã
+
+**è¿åå¼ï¼** å个tensorï¼å
å«ææè¾å
¥tensorçå
+
+#### backward(flag, grad)
+
+å¤å¶æ¯ä¸ªè¾å
¥å±ç梯度tensorã
+
+**åæ°ï¼**
+- **grad** - 梯度tensor
+
+**è¿åå¼ï¼** tensorå表ï¼æ¯ä¸ªè¾å
¥å±å¯¹åºå
¶ä¸ä¸ä¸ª
+
+---
+
+### class singa.layer.Split(name, num_output, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+çæè¾å
¥tensorçå¤ä¸ªå¯æ¬ã
+
+**åæ°ï¼**
+- **num_output (int)** â å¾
çæçè¾åºtensoræ°ç®
+- **input_sample_shape()** â å
å«ä¸ä¸ªæ´åæ°ï¼ä»£è¡¨è¾å
¥æ ·æ¬ç¹å¾å¤§å°
+
+#### setup(in_shape)
+
+#### get_output_sample_shape()
+
+#### forward()
+
+çæè¾å
¥tensorçå¤ä¸ªå¯æ¬ã
+
+**åæ°ï¼**
+- **flag** â 没æç¨å°
+- **input** â å个è¾å
¥tensor
+
+**è¿åå¼ï¼** è¾åºtensorå表ï¼æ¯ä¸ªå¯¹åºè¾å
¥çä¸ä¸ªæ·è´
+
+#### backward()
+
+对ææè¾å
¥tensoræ±åå¾å°å个è¾åºtensorã
+
+**åæ°ï¼**
+- **grad** - 梯度tensor
+
+**è¿åå¼ï¼** ä¸ä¸ªtensorï¼ä»£è¡¨ææè¾å
¥æ¢¯åº¦tensorçæ±å
+
+---
+
+### class singa.layer.Concat(name, axis, input_sample_shapes=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+å°tensorç«ç´(axis=0)ææ°´å¹³(axis=1)æ¼æ¥ãç®åä»
æ¯æ2ç»´tensorã
+
+**åæ°ï¼**
+- **axis (int)** â 0表示æ¼æ¥è¡; 1表示æ¼æ¥å;
+- **input_sample_shapes** â æ ·æ¬å½¢ç¶çå
ç»å表ï¼æ¯ä¸ªå¯¹åºä¸ä¸ªè¾å
¥æ ·æ¬çtensor
+
+#### forward(flag, inputs)
+
+æ¼æ¥ææè¾å
¥tensorã
+
+**åæ°ï¼**
+- **flag** â åLayer::forward()
+- **input** â tensorå表
+
+**è¿åå¼ï¼** ä¸ä¸ªæ¼æ¥åçtensor
+
+
+#### backward(flag, dy)
+
+**åæ°ï¼**
+- **flag** â same as Layer::backward()
+- **dy (Tensor)** â the gradient tensors of y w.r.t objective loss
+
+**è¿åå¼ï¼** å
ç»(dx, []), dxæ¯tensorå表ï¼å¯¹åºè¾å
¥ç梯度ï¼[]æ¯ç©ºå表
+
+---
+
+### class singa.layer.Slice(name, axis, slice_point, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+å°è¾å
¥tensor沿ç«ç´(axis=0)ææ°´å¹³(axis=1)åæå¤ä¸ªåtensorã
+
+**åæ°ï¼**
+- **axis (int)** â 0代表åå²è¡; 1代表åå²å;
+- **slice_point (list)** â 沿çè½´åå²çä½ç½®ï¼n-1个åå²ç¹å¯¹åºn个åtensorï¼
+- **input_sample_shape** â è¾å
¥æ ·æ¬tensorçå½¢ç¶
+
+#### get_output_sample_shape()
+
+#### forward(flag, x)
+
+沿ç»å®è½´åå²è¾å
¥tensorã
+
+**åæ°ï¼**
+- **flag** â åLayer::forward()
+- **x** â å个è¾å
¥tensor
+
+**è¿åå¼ï¼** è¾åºtensorå表
+
+#### backward(flag, grads)
+
+æ¼æ¥ææ梯度tensor以çæä¸ä¸ªè¾åºtensorã
+
+**åæ°ï¼**
+- **flag** â åLayer::backward()
+- **grads** â tensorå表ï¼æ¯ä¸ªå¯¹åºä¸ä¸ªåå²ç梯度tensor
+**è¿åå¼ï¼** å
ç»(dx, []), dxæ¯ä¸ä¸ªtensorï¼å¯¹åºåå§è¾å
¥ç梯度ï¼[]æ¯ç©ºå表
+
+---
+
+### class singa.layer.RNN(name, hidden_size, rnn_mode='lstm', dropout=0.0, num_stacks=1, input_mode='linear', bidirectional=False, param_specs=None, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.Layer`
+
+éå½å±å
å«4个åå
ï¼å³lstm, gru, tanhåreluã
+
+**åæ°ï¼**
+- **hidden_size** â éå«å±ç¹å¾å¤§å°ï¼åææå±çå æ ã
+- **rnn_mode** â å³å®äºRNNåå
ï¼å¯ä»¥æ¯âlstmâ, âgruâ, âtanhâå âreluâã对äºæ¯ç§æ¨¡å¼ï¼å¯ä»¥åècudnnæåã
+- **num_stacks** â rnnå±çå æ æ°éãè¿ä¸åäºéè¦å±å¼çåºåé¿åº¦ã
+- **input_mode** â 'linear'ï¼éè¿çº¿æ§åæ¢å°è¾å
¥ç¹å¾x转æ¢æ大å°ä¸ºhidden_sizeçç¹å¾åéï¼'skip'ï¼ä»
è¦æ±è¾å
¥ç¹å¾å¤§å°çäºhidden_sizeã
+- **bidirection** â 对äºååRNN为çã
+- **param_specs** â RNNåæ°çåå§åé
ç½®ã
+- **input_sample_shape** â å
å«ä¸ä¸ªæ´åæ°ï¼ä»£è¡¨è¾å
¥æ ·æ¬çç¹å¾å¤§å°ã
+
+#### forward(flag, inputs)
+
+**åæ°ï¼**
+- **flag** â True(kTrain) 代表è®ç»ï¼False(kEval)代表éªè¯; å
¶ä»å¼ç¨ä½ä»¥å使ç¨ã
+- **<x1, x2,..xn, hx, cx>** â å
¶ä¸ï¼xiæ¯è¾å
¥(inputs,)第i个ä½ç½®çtensorï¼å®çå½¢ç¶æ¯ (batch_size, input_feature_length); xiçbatch_sizeå¿
须大äºxi + 1ç大å°; hxæ¯åå§éèç¶æï¼å½¢ç¶æ¯ï¼num_stacks * bidirectionï¼2ï¼1ï¼batch_sizeï¼hidden_sizeï¼ã cxæ¯ä¸hyç¸åå½¢ç¶çåå§ç»èç¶æå¼ éã cxä»
对lstmææã 对äºå
¶ä»RNNï¼ä¸åå¨cxã hxåcxé½å¯ä»¥æ¯æ²¡æå½¢ç¶åæ°æ®çèæå¼ éã
+è¿åå¼ï¼<y1ï¼y2ï¼... ynï¼hyï¼cy>ï¼å
¶ä¸yiæ¯ç¬¬i个ä½ç½®çè¾åºå¼ éï¼å
¶å½¢ç¶æ¯ï¼batch_sizeï¼hidden_size *ååï¼2ï¼1ï¼ã hyæ¯æç»çéèç¶æå¼ éã cxæ¯æç»çç»èç¶æå¼ éã cxä»
ç¨äºlstmã
+
+
+#### backward(flag, grad)
+
+**åæ°ï¼**
+- **flag** â æªæ¥ä½¿ç¨
+- **<dy1, dy2,..dyn, dhy, dcy>** - å
¶ä¸ï¼dyiæ¯(grad,) 第i个ä½ç½®ç梯度ï¼å®çå½¢ç¶æ¯ (batch_size, hidden_size*bidirection?2 (i-th) â 1); dhyæ¯æç»éèç¶æçæ¸åï¼å®çå½¢ç¶æ¯ï¼num_stacks *ååï¼2ï¼1ï¼batch_sizeï¼hidden_sizeï¼ãdcyæ¯æç»åå
ç¶æç梯度ã cxä»
对lstmææï¼å
¶ä»RNNä¸åå¨cxã dhyådcyé½å¯ä»¥æ¯æ²¡æå½¢ç¶åæ°æ®çèætensorã
+
+**è¿åå¼ï¼** <dx1ï¼dx2ï¼... dxnï¼dhxï¼dcx>ï¼å
¶ä¸dxiæ¯ç¬¬i个è¾å
¥çæ¢¯åº¦å¼ éï¼å®çå½¢ç¶æ¯ï¼batch_sizeï¼input_feature_lengthï¼ã dhxæ¯åå§éèç¶æç梯度ã dcxæ¯åå§åå
ç¶æç梯度ï¼ä»
对lstmææã
+
+---
+
+### class singa.layer.LSTM(name, hidden_size, dropout=0.0, num_stacks=1, input_mode='linear', bidirectional=False, param_specs=None, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.RNN`
+
+---
+
+### class singa.layer.GRU(name, hidden_size, dropout=0.0, num_stacks=1, input_mode='linear', bidirectional=False, param_specs=None, input_sample_shape=None)
+
+åºç±»ï¼`singa.layer.RNN`
+
+---
+
+#### singa.layer.get_layer_list()
+
+è¿åå
å«æææ¯æå¾å±çæ è¯ç¬¦ï¼æ ç¾ï¼çå符串å表
+
+---
Added: incubator/singa/site/trunk/zh/_sources/docs/loss.md.txt
URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/zh/_sources/docs/loss.md.txt?rev=1833193&view=auto
==============================================================================
--- incubator/singa/site/trunk/zh/_sources/docs/loss.md.txt (added)
+++ incubator/singa/site/trunk/zh/_sources/docs/loss.md.txt Fri Jun 8 15:29:00 2018
@@ -0,0 +1,103 @@
+# æ失(Loss)
+
+æ失模åå
æ¬ä¸ç»è®ç»æ失å®ä¾ã æäºæ¯ä»C ++å®ç°è½¬æ¢èæ¥çï¼å
¶ä½çé½æ¯ç´æ¥ä½¿ç¨python Tensorå®ç°çã
+
+示ä¾ç¨æ³ï¼
+```python
+from singa import tensor
+from singa import loss
+
+x = tensor.Tensor((3, 5))
+x.uniform(0, 1) # randomly genearte the prediction activation
+y = tensor.from_numpy(np.array([0, 1, 3], dtype=np.int)) # set the truth
+
+f = loss.SoftmaxCrossEntropy()
+l = f.forward(True, x, y) # l is tensor with 3 loss values
+g = f.backward() # g is a tensor containing all gradients of x w.r.t l
+```
+
+
+---
+
+### class singa.loss.Loss
+
+åºç±»ï¼`object`
+
+æ失类çåºç±»
+
+å°è£
C++æ失类çåç±»å¯ä»¥ä½¿ç¨æ¤åºç±»ç»§æ¿çforwardï¼backwardåevaluateå½æ°ã å
¶ä»åç±»éè¦éåè¿äºå½æ°
+
+#### backward()
+
+**è¿åå¼ï¼** ä¸æ失ç¸å¯¹åºç梯度
+
+---
+
+#### evaluate(flag, x, y)
+
+**åæ°ï¼**
+- **flag (int)** â å¿
é¡»æ¯kEval
+- **x (Tensor)** â é¢æµTensor
+- **y (Tensor)** â çå®Tensor
+
+**è¿åå¼ï¼** æææ ·æ¬çå¹³åæ失
+
+---
+
+#### forward(flag, x, y)
+
+计ç®æ失å¼
+
+**åæ°ï¼**
+- **flag** â kTrain/kEvalæå¸å°å¼ãå¦ææ¯kTrain/Trueï¼é£ä¹å¨ä¸ä¸æ¬¡è°ç¨forwardåä¼å
è°ç¨backward计ç®æ¢¯åº¦ã
+- **x (Tensor)** â é¢æµTensor
+- **y (Tensor)** â çå®Tensor, x.shape[0]å¿
é¡»åy.shape[0]ç¸å
+
+**è¿åå¼ï¼** tensorï¼æ¯ä¸ªæ ·æ¬å¯¹åºä¸ä¸ªæµ®ç¹åæ失å¼
+
+---
+
+### class singa.loss.SoftmaxCrossEntropy
+
+åºç±»ï¼`singa.loss.Loss`
+
+æ¤æ失å½æ°æ¯SoftMaxå交åçµæ失çç»åãå®éè¿SoftMaxå½æ°è½¬æ¢è¾å
¥ï¼ç¶åæ ¹æ®çå®å¼è®¡ç®äº¤åçµæ失ã 对äºæ¯ä¸ªæ ·æ¬ï¼çå®å¼å¯ä»¥æ¯ä¸ä¸ªæ´æ°ä½ä¸ºæ ç¾ç´¢å¼; æäºè¿å¶æ°ç»ï¼æ示æ ç¾åå¸ã å æ¤ï¼çå®å¼å¯ä»¥æ¯1ç»´æ2ç»´tensorã 对äºä¸æ¹æ ·åï¼æ°æ®/ç¹å¾tensorå¯ä»¥æ¯1ç»´ï¼å¯¹äºåä¸ªæ ·åï¼æ2ç»´ï¼å¯¹äºä¸ç»æ ·æ¬ï¼ã
+
+---
+
+### class singa.loss.SquaredError
+
+åºç±»ï¼`singa.loss.Loss`
+
+æ¤æ失ç¨æ¥è¡¡éé¢æµå¼åçå®å¼ä¹é´çå¹³æ¹å·®ãå®éè¿Python Tensoræä½å®ç°ã
+
+---
+
+#### backward()
+
+计ç®ä¸æ失ç¸å¯¹åºåéç梯度ã
+
+**è¿åå¼ï¼** x - y
+
+---
+
+#### evaluate(flag, x, y)
+
+计ç®å¹³å误差ã
+
+**è¿åå¼ï¼** æµ®ç¹åæ°
+
+---
+
+#### forward(flag, x, y)
+
+éè¿0.5 * ||x-y||^2计ç®æ失ã
+
+**åæ°ï¼**
+- **flag (int)** â kTrainækEvalï¼å¦ææ¯kTrainï¼é£ä¹å¨ä¸ä¸æ¬¡è°ç¨forwardåä¼å
è°ç¨backward计ç®æ¢¯åº¦ã
+- **x (Tensor)** â é¢æµTensor
+- **y (Tensor)** â çå®Tensor, æ¯ä¸ªæ ·æ¬å¯¹åºä¸ä¸ªæ´åæ°, åå¼ä¸º[0, x.shape[1])ã
+
+**è¿åå¼ï¼** tensorï¼æ¯ä¸ªæ ·æ¬å¯¹åºä¸ä¸ªæ失å¼
+
+---
Added: incubator/singa/site/trunk/zh/_sources/docs/metric.md.txt
URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/zh/_sources/docs/metric.md.txt?rev=1833193&view=auto
==============================================================================
--- incubator/singa/site/trunk/zh/_sources/docs/metric.md.txt (added)
+++ incubator/singa/site/trunk/zh/_sources/docs/metric.md.txt Fri Jun 8 15:29:00 2018
@@ -0,0 +1,62 @@
+# 度é(Metric)
+
+该模åå
å«ä¸ç»ç¨äºè¯ä¼°æ¨¡åæ§è½ç度éç±»ã ç¹å®ç度éç±»å¯ä»¥ç±C++çå®ç°è½¬æ¢æç´æ¥ä½¿ç¨Pythonå®ç°ã
+
+示ä¾ç¨æ³ï¼
+
+```python
+from singa import tensor
+from singa import metric
+
+x = tensor.Tensor((3, 5))
+x.uniform(0, 1) # randomly genearte the prediction activation
+x = tensor.SoftMax(x) # normalize the prediction into probabilities
+y = tensor.from_numpy(np.array([0, 1, 3], dtype=np.int)) # set the truth
+
+f = metric.Accuracy()
+acc = f.evaluate(x, y) # averaged accuracy over all 3 samples in x
+```
+
+---
+
+### class singa.metric.Metric
+
+åºç±»ï¼`object`
+
+度éç±»çåºç±»
+
+å°è£
C++度éç±»çåç±»å¯ä»¥ä½¿ç¨ç»§æ¿çååå½æ°ï¼å¹¶è¯ä¼°æ¤åºç±»çå½æ°ã å
¶ä»åç±»éè¦éåè¿äºå½æ°ã ç¨æ·éè¦æä¾é¢æµå¼åçå®å¼æ¥è·å度éå¼ã
+
+---
+
+#### forward(x, y)
+
+为æ¯ä¸ªæ ·æ¬è®¡ç®åº¦éå¼
+
+**åæ°ï¼**
+- **x (Tensor)** â é¢æµå¼ï¼æ¯è¡ä»£è¡¨ä¸ä¸ªæ ·æ¬çé¢æµå¼
+- **y (Tensor)** â çå®å¼ï¼æ¯è¡ä»£è¡¨ä¸ä¸ªæ ·æ¬ççå®å¼
+
+**è¿åå¼ï¼** æµ®ç¹æ°ç»æçtensorï¼æ¯ä¸ªæ ·æ¬å¯¹åºä¸ä¸ªæµ®ç¹æ°è¾åº
+
+---
+
+#### evaluate(x, y)
+
+计ç®æ ·æ¬çå¹³å度éå¼
+
+**åæ°ï¼**
+- **x (Tensor)** â é¢æµå¼ï¼æ¯å代表ä¸ä¸ªæ ·æ¬çé¢æµå¼
+- **y (Tensor)** â çå®å¼ï¼æ¯å代表ä¸ä¸ªæ ·æ¬ççå®å¼
+
+**è¿åå¼ï¼** æµ®ç¹æ°ç»æçtensorï¼æ¯ä¸ªæ ·æ¬å¯¹åºä¸ä¸ªæµ®ç¹æ°è¾åº
+
+---
+
+### class singa.metric.Accuracy
+
+åºç±»ï¼`singa.metric.Metric`
+
+对äºåæ ç¾é¢æµä»»å¡ï¼è®¡ç®top-1精确度ãå®è°ç¨C++å½æ°å®ç°è®¡ç®ã
+
+---
Added: incubator/singa/site/trunk/zh/_sources/docs/model_zoo/char-rnn/README.md.txt
URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/zh/_sources/docs/model_zoo/char-rnn/README.md.txt?rev=1833193&view=auto
==============================================================================
--- incubator/singa/site/trunk/zh/_sources/docs/model_zoo/char-rnn/README.md.txt (added)
+++ incubator/singa/site/trunk/zh/_sources/docs/model_zoo/char-rnn/README.md.txt Fri Jun 8 15:29:00 2018
@@ -0,0 +1,25 @@
+# å¨ææ¬ä¸è®ç»Char-RNN
+
+éå½ç¥ç»ç½ç»ï¼RNNï¼è¢«å¹¿æ³ç¨äºå»ºæ¨¡é¡ºåºæ°æ®ï¼ä¾å¦èªç¶è¯è¨å¥åã æ¬ç¤ºä¾ä»ç»å¦ä½ä½¿ç¨SINGAçRNNå±å®ç°RNNåºç¨ç¨åºï¼æ模åï¼ã æ们å°ä½¿ç¨[char-rnn](https://github.com/karpathy/char-rnn)模åä½ä¸ºç¤ºä¾ï¼å®å°è®ç»è¯å¥ææºä»£ç ï¼å¹¶å°æ¯ä¸ªå符ä½ä¸ºè¾å
¥åä½ã ç¹å«æ¯ï¼æ们å°ä½¿ç¨GRUå¨Linuxå
æ ¸æºä»£ç ä¸è®ç»ä¸ä¸ªRNNã ç»è¿è®ç»ï¼æ们å¸æä»æ¨¡åä¸çæææä¹ç代ç ã
+
+
+## æä½è¯´æ
+
+* ç¼è¯å¹¶å®è£
SINGAãç®åï¼RNNçå®ç°æ¯åºäºCuDNNï¼>=5.05ï¼ã.
+
+* åå¤æ°æ®éãä¸è½½[å
æ ¸æºä»£ç ](http://cs.stanford.edu/people/karpathy/char-rnn/)ãå
¶ä»ææ¬æ°æ®ä¹å¯è¢«ä½¿ç¨ã
+
+* å¼å§è®ç»ï¼
+
+ python train.py linux_input.txt
+
+ ä¸äºè¶
åæ°å¯ä»¥å¨å½ä»¤è¡åæ°ä¸è®¾ç½®ï¼
+
+ python train.py -h
+
+* éè¿æä¾è¦éæ ·çå符æ°åç§åå符串æ¥ä»æ¨¡åä¸éæ ·å符ã
+
+ python sample.py 'model.bin' 100 --seed '#include <std'
+
+ 请ç¨å
¶ä¸ä¸ä¸ªcheckpointè·¯å¾æ¿æ¢'model.bin'çè·¯å¾ã
+
Added: incubator/singa/site/trunk/zh/_sources/docs/model_zoo/cifar10/README.md.txt
URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/zh/_sources/docs/model_zoo/cifar10/README.md.txt?rev=1833193&view=auto
==============================================================================
--- incubator/singa/site/trunk/zh/_sources/docs/model_zoo/cifar10/README.md.txt (added)
+++ incubator/singa/site/trunk/zh/_sources/docs/model_zoo/cifar10/README.md.txt Fri Jun 8 15:29:00 2018
@@ -0,0 +1,60 @@
+# å¨Cifar-10ä¸è®ç»CNN
+
+å·ç§¯ç¥ç»ç½ç»ï¼CNNï¼æ¯ä¸ç§è¢«å¹¿æ³ç¨äºå¾ååè§é¢åç±»çåé¦äººé ç¥ç»ç½ç»ãå¨æ¤ä¾åä¸ï¼æ们å°å¨Cifar-10æ°æ®éä¸è®ç»ä¸ä¸ªæ·±åº¦CNN模åæ¥è¿è¡å¾ååç±»ï¼
+
+1. [AlexNet](https://code.google.com/p/cuda-convnet/source/browse/trunk/example-layers/layers-18pct.cfg)ï¼æ们å¨éªè¯éä¸è½è¾¾å°çæé«å确度ï¼ä¸åæ°æ®å¢å¼ºï¼å¨82%å·¦å³ã
+2. [VGGNet](http://torch.ch/blog/2015/07/30/cifar.html)ï¼æ们å¨éªè¯éä¸è½è¾¾å°çæé«å确度ï¼ä¸åæ°æ®å¢å¼ºï¼å¨89%å·¦å³ã
+3. [ResNet](https://github.com/facebook/fb.resnet.torch)ï¼æ们å¨éªè¯éä¸è½è¾¾å°çæé«å确度ï¼ä¸åæ°æ®å¢å¼ºï¼å¨83%å·¦å³ã
+4. [æ¥èªCaffeçAlexNet](https://github.com/BVLC/caffe/tree/master/examples/cifar10)ï¼SINGAè½å¤æ ç¼è½¬æ¢Caffe模åã
+
+
+## æä½è¯´æ
+
+
+### SINGAå®è£
+
+ç¨æ·å¯ä»¥ä»æºç ç¼è¯åå®è£
C++æè
Pythonçæ¬çSINGAã代ç å¯ä»¥å¨CPUåGPUä¸æ§è¡ã对äºGPUä¸åè®ç»ï¼CUDAåCUDNNï¼V4æV5ï¼æ¯éè¦çã请åèå®è£
çé¢ä»¥è·å¾è¯¦ç»æ示ã
+
+### æ°æ®åå¤
+
+Cifar-10çäºè¿å¶æ°æ®éæ件å¯ä»¥ç±å¦ä¸æ令ä¸è½½
+
+ python download_data.py bin
+
+Pythonçæ¬å¯ä»¥ç±å¦ä¸æ令ä¸è½½
+
+ python download_data.py py
+
+### è®ç»
+
+è¿éæ4个è®ç»ç¨åº
+
+1.train.pyãä¸é¢çæ令å°ä¼ç¨'cifar-10-batches-py'åºä¸çpythonçæ¬çCifar-10æ°æ®éè®ç»VGG模åã
+
+ python train.py vgg cifar-10-batches-py
+
+ è¦è®ç»å
¶ä»æ¨¡åï¼è¯·ç¨'alexnet'ï¼'resnet'æ'caffe'æ¿æ¢'vgg'ãå
¶ä¸ï¼'caffe'æç±caffeçAlexNet转æ¢ç模åãé»è®¤æ
åµä¸ï¼æ¨¡åå°å¨CudaGPU设å¤ä¸è®ç»ï¼è¥æ³è¦å¨CppCPUä¸è¿è¡ï¼éæ·»å é¢å¤çåæ°
+
+ python train.py vgg cifar-10-batches-py --use_cpu
+
+2.alexnet.ccãå®éè¿è°ç¨CPP APIå¨CudaGPUä¸è®ç»AlexNet模åã
+
+ ./run.sh
+
+3.alexnet-parallel.ccãå®éè¿è°ç¨CPP APIå¨ä¸¤ä¸ªCudaGPUä¸è®ç»AlexNet模åã两个设å¤ä¸åæ¶è¿è¡å¹¶è®¡ç®æ¨¡ååæ°ç梯度ï¼ç¶åå®ä»¬ä¼å¨CPU设å¤ä¸åå¹³å并ç¨äºæ´æ°åæ°ã
+
+ ./run-parallel.sh
+
+4.vgg-parallel.ccãå®è°ç¨CPP APIå¨ä¸¤ä¸ªCudaGPU设å¤ä¸è®ç»VGG模åï¼åalexnet-parallel.cc类似ã
+
+### é¢æµ
+
+predict.pyå
å«é¢æµå½æ°
+
+ def predict(net, images, dev, topk=5)
+
+netéè¿å è½½å
åè®ç»å¥½ç模åæ¥è¢«å建ï¼imageså
å«å¾åçnumpyæ°ç»ï¼æ¯å¼ å¾åä¸è¡ï¼ï¼devæ¯è®ç»æ¶ç设å¤ï¼ä¾å¦ï¼ä¸ä¸ªCudaGPU设å¤æè
CppCPU设å¤ï¼å®å°è¿åæ¯ä¸ªå®ä¾çtopkæ ç¾ã
+
+Predict.pyæ件主å½æ°æä¾äºç¨é¢è®ç»ç模å为æ°å¾çåé¢æµçä¾åã'mode.bin'æ件ç±è®ç»ç¨åºçæï¼éè¦è¢«æ¾ç½®å¨cifarç®å½ä¸æ§è¡
+
+ python predict.py
Added: incubator/singa/site/trunk/zh/_sources/docs/model_zoo/imagenet/alexnet/README.md.txt
URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/zh/_sources/docs/model_zoo/imagenet/alexnet/README.md.txt?rev=1833193&view=auto
==============================================================================
--- incubator/singa/site/trunk/zh/_sources/docs/model_zoo/imagenet/alexnet/README.md.txt (added)
+++ incubator/singa/site/trunk/zh/_sources/docs/model_zoo/imagenet/alexnet/README.md.txt Fri Jun 8 15:29:00 2018
@@ -0,0 +1,46 @@
+# å¨ImageNetä¸è®ç»AlexNet
+
+å·ç§¯ç¥ç»ç½ç»ï¼CNNï¼æ¯ä¸ç§å¹¿æ³ç¨äºå¾ååè§é¢åç±»çåé¦ç¥ç»ç½ç»ã å¨è¿ä¸ªä¾åä¸ï¼æ们å°ä½¿ç¨[深度CNN模å](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks)æ¥å¯¹ImageNetæ°æ®éè¿è¡å¾ååç±»ã
+
+## æä½è¯´æ
+
+### ç¼è¯SINGA
+
+请ç¨CUDAï¼CUDNNåOpenCVç¼è¯SINGAã æ¨å¯ä»¥æå¨æå¼CMakeLists.txtä¸çé项æå¨build /æ件夹ä¸è¿è¡`ccmake ..`è¿è¡é
ç½®ã
+
+æ们已ç»å¨CuDNN V4åV5ï¼V5éè¦Cuda7.5ï¼ä¸è¿è¡äºæµè¯ã
+
+
+### æ°æ®ä¸è½½
+* 请åèå建[ImageNet 2012æ°æ®é](https://github.com/amd/OpenCL-caffe/wiki/Instructions-to-create-ImageNet-2012-data)çæ¥éª¤1-3ä¸è½½åå åæ°æ®ã
+* ä½ å¯ä»¥éè¿[get_ilsvrc_aux.sh](https://github.com/BVLC/caffe/blob/master/data/ilsvrc12/get_ilsvrc_aux.sh)æä»[ImageNet](http://www.image-net.org/download-images)ä¸è½½è®ç»åéªè¯éã
+
+### æ°æ®é¢å¤ç
+* åè®¾ä½ å·²ç»ä¸è½½äºæ°æ®åæè¿°æ件ã ç°å¨æ们åºè¯¥å°æ°æ®è½¬æ¢ä¸ºäºè¿å¶æ件ãä½ å¯ä»¥è¿è¡ï¼
+
+ sh create_data.sh
+
+ è¿ä¸ªèæ¬ä¼å¨æå®è¾åºç®å½ä¸çæä¸ä¸ªæµè¯æ件ï¼`test.bin`ï¼ï¼åå¼æ件ï¼`mean.bin`ï¼åä¸äºè®ç»æ件ï¼`trainX.bin`ï¼ã
+* ä½ ä¹å¯ä»¥æ¹å`create_data.sh`çåæ°ã
+ + `-trainlist <file>`: è®ç»æ°æ®å表æ件;
+ + `-trainfolder <folder>`: è®ç»å¾çæå¨æ件夹;
+ + `-testlist <file>`: æµè¯æ°æ®å表æ件;
+ + `-testfolder <floder>`: æµè¯å¾åæå¨æ件夹;
+ + `-outdata <folder>`: ä¿åè¾åºæ件çæ件夹ï¼å
æ¬å¹³åå¼ï¼è®ç»åæµè¯æ件ã 该èæ¬å°å¨æå®çæ件夹ä¸çæè¿äºæ件;
+ + `-filesize <int>`: å¨æ¯ä¸ªäºè¿å¶æ件ä¸åå¨çè®ç»å¾ç个æ°.
+
+### è®ç»
+* åå¤å¥½æ°æ®åï¼ä½ å¯ä»¥è¿è¡ä¸é¢æ令æ¥è®ç»AlexNet模åã
+
+ sh run.sh
+
+* ä½ å¯ä»¥æ¹å`run.sh`çåæ°ã
+ + `-epoch <int>`: è¦è®ç»çepochæ°ç®ï¼é»è®¤ä¸º90;
+ + `-lr <float>`: åºç¡å¦ä¹ çï¼å¦ä¹ çå°åå°æ¯20个æ¶æï¼æ´å
·ä½å°ï¼lr = lr * expï¼0.1 *ï¼epoch / 20ï¼ï¼;
+ + `-batchsize <int>`: æ¹æ°ç®ï¼å®åºè¯¥æ ¹æ®ä½ çå
åèæ¹å;
+ + `-filesize <int>`: åå¨å¨æ¯ä¸ªäºè¿å¶æ件ä¸çè®ç»å¾åçæ°éï¼ä¸æ°æ®é¢å¤çä¸çæ件大å°ç¸å;
+ + `-ntrain <int>`: è®ç»å¾ççæ°ç®;
+ + `-ntest <int>`: æµè¯å¾ççæ°ç®;
+ + `-data <folder>`: åå¨äºè¿å¶æ件çæ件夹ï¼å®æ°å¥½æ¯æ°æ®é¢å¤çæ¥éª¤ä¸çè¾åºæ件夹;
+ + `-pfreq <int>`: æå°å½å模åç¶æï¼æ失åå确度ï¼çé¢çï¼ä»¥æ¹æ°æ®ä¸ºåä½ï¼;
+ + `-nthreads <int>`: å è½½ä¼ ç»æ¨¡åçæ°æ®ææç线ç¨æ°ã