commit | c3973f08a5373af4c4d7e79904d2eb41df06bc00 | [log] [tgz] |
---|---|---|
author | Pieter Noordhuis <pietern@fb.com> | Fri Mar 17 08:50:50 2017 -0700 |
committer | Facebook Github Bot <facebook-github-bot@users.noreply.github.com> | Fri Mar 17 09:04:04 2017 -0700 |
tree | 8bcab9e6fad1ffb3f231fb79d321618e8ca3c23c | |
parent | 79c3a3af54d0aaeb14a40234b8daf6651703e63f [diff] |
Check that inputs/outputs don't change between runs Summary: This can happen when the tensors are changed/resized. The cached algorithm instance won't be valid in that case. I think for now it's best to fail hard and require the net to be reinitialized if this happens. If instead we would always reinitialize this condition is detected then frequent resets could lead to poor performance and go undetected. I spoke about the generality of this problem with YQ. The pattern used here of updating a representation of the op's parameters is far from ideal. Instead, it would be much better to have the core framework use some kind of versioning on tensors/blobs (can be as simple as a single integer) to make it much easier to detect a change in inputs/outputs. If there are more places that would benefit from such a facility, we should consider adding it. As right now Gloo is the only place where we need it, it doesn't make sense to immediately add it to core. Reviewed By: Yangqing Differential Revision: D4728121 fbshipit-source-id: 69a8a620aecc961a3f7a27e8c53e22945d9a258e
Caffe2 is a deep learning framework made with expression, speed, and modularity in mind. It is an experimental refactoring of Caffe, and allows a more flexible way to organize computation.
Caffe2 is released under the BSD 2-Clause license.
Detailed build matrix (hit refresh if you see icons not showing up due to heroku):
Target | Status |
---|---|
Linux | |
Mac (CPU) | |
Android | |
iOS | |
Linux + MKL | |
Windows |
git clone --recursive https://github.com/caffe2/caffe2.git cd caffe2
brew install automake protobuf mkdir build && cd build cmake .. make
sudo apt-get install libprotobuf-dev protobuf-compiler libatlas-base-dev libgoogle-glog-dev libgtest-dev liblmdb-dev libleveldb-dev libsnappy-dev python-dev python-pip libiomp-dev libopencv-dev libpthread-stubs0-dev cmake python-protobuf sudo pip install numpy wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_8.0.44-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1404_8.0.44-1_amd64.deb sudo apt-get update sudo apt-get install cuda sudo apt-get install git CUDNN_URL="http://developer.download.nvidia.com/compute/redist/cudnn/v5.1/cudnn-8.0-linux-x64-v5.1.tgz" && curl -fsSL ${CUDNN_URL} -O && sudo tar -xzf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local && rm cudnn-8.0-linux-x64-v5.1.tgz && sudo ldconfig mkdir build && cd build cmake .. make
We use CMake's Android and iOS ports to build native binaries that you can then integrate into your Android or XCode projects. See scripts/build_android.sh and scripts/build_ios.sh for more details.
For Android, one can also use gradle to build Caffe2 directly with Android Studio. An example project can be found here. Note that you may need to configure Android Studio so that it has the right SDK and NDK versions to build the code.
For Raspbian, run scripts/build_raspbian.sh on the Raspberry Pi.
To install Caffe2 on NVidia's Tegra X1 platform, simply install the latest system with the NVidia JetPack installer, and then run scripts/build_tegra_x1.sh on the Tegra device.
To run the tutorials you'll need ipython-notebooks and matplotlib, which can be installed on OS X with:
brew install matplotlib --with-python3 pip install ipython notebook
Ubuntu 14.04 (GCC)
OS X (Clang)
Options (both Clang and GCC)
BLAS
Other