Поиск…


замечания

Caffe - это библиотека, написанная на C ++, для облегчения экспериментов и использования сверточных нейронных сетей (CNN). Caffe был разработан Berkeley Vision и Learning Center (BVLC).

Caffe на самом деле является аббревиатурой, обозначающей «Сверточные архитектуры для быстрого извлечения функций». Эта аббревиатура инкапсулирует важную область библиотеки. Caffe в форме библиотеки предлагает общую структуру / архитектуру программирования, которая может использоваться для эффективного обучения и тестирования CNN. «Эффективность» является основным отличительным признаком кофе и выступает в качестве основной проектной цели Caffe.

Caffe - это библиотека с открытым исходным кодом, выпущенная под лицензией BSD 2 Clause.

Caffe поддерживается на GitHub

Кофе может использоваться для:

  • Эффективно тренировать и тестировать несколько архитектур CNN, в частности любую архитектуру, которая может быть представлена ​​как ориентированный ациклический граф (DAG).
  • Используйте несколько графических процессоров (до 4) для обучения и тестирования. Рекомендуется, чтобы все графические процессоры были одного типа. В противном случае производительность ограничена пределами самого медленного графического процессора в системе. Например, в случае TitanX и GTX 980 производительность будет ограничена последней. Смешивание нескольких архитектур не поддерживается, например, Kepler и Fermi 3 .

Caffe был написан на основе принципов объектно-ориентированного программирования (ООП).

Хорошей отправной точкой для начала введения в кофе является получение взгляда птицы на то, как кофе работает через свои фундаментальные объекты.

Версии

Версия Дата выхода
1,0 2017-04-19

Установка и настройка

Ubuntu

Ниже приведены подробные инструкции по установке Caffe, pycaffe и его зависимостей на Ubuntu 14.04 x64 или 14.10 x64.

Выполните следующий скрипт, например «bash compile_caffe_ubuntu_14.sh» (от 30 до 60 минут на новом Ubuntu).

# This script installs Caffe and pycaffe. 
# CPU only, multi-threaded Caffe.

# Usage: 
# 0. Set up here how many cores you want to use during the installation:
# By default Caffe will use all these cores.
NUMBER_OF_CORES=4

sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev 
sudo apt-get install -y libopencv-dev libhdf5-serial-dev
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y libatlas-base-dev 
sudo apt-get install -y python-dev 
sudo apt-get install -y python-pip git

# For Ubuntu 14.04
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler 

# Install LMDB
git clone https://github.com/LMDB/lmdb.git 
cd lmdb/libraries/liblmdb
sudo make 
sudo make install

# More pre-requisites 
sudo apt-get install -y cmake unzip doxygen
sudo apt-get install -y protobuf-compiler
sudo apt-get install -y libffi-dev python-pip python-dev build-essential
sudo pip install lmdb
sudo pip install numpy
sudo apt-get install -y python-numpy
sudo apt-get install -y gfortran # required by scipy
sudo pip install scipy # required by scikit-image
sudo apt-get install -y python-scipy # in case pip failed
sudo apt-get install -y python-nose
sudo pip install scikit-image # to fix https://github.com/BVLC/caffe/issues/50


# Get caffe (http://caffe.berkeleyvision.org/installation.html#compilation)
cd
mkdir caffe
cd caffe
wget https://github.com/BVLC/caffe/archive/master.zip
unzip -o master.zip
cd caffe-master

# Prepare Python binding (pycaffe)
cd python
for req in $(cat requirements.txt); do sudo pip install $req; done

# to be able to call "import caffe" from Python after reboot:
echo "export PYTHONPATH=$(pwd):$PYTHONPATH " >> ~/.bash_profile 
source ~/.bash_profile # Update shell 
cd ..

# Compile caffe and pycaffe
cp Makefile.config.example Makefile.config
sed -i '8s/.*/CPU_ONLY := 1/' Makefile.config # Line 8: CPU only
sudo apt-get install -y libopenblas-dev
sed -i '33s/.*/BLAS := open/' Makefile.config # Line 33: to use OpenBLAS
# Note that if one day the Makefile.config changes and these line numbers may change
echo "export OPENBLAS_NUM_THREADS=($NUMBER_OF_CORES)" >> ~/.bash_profile 
mkdir build
cd build
cmake ..
cd ..
make all -j$NUMBER_OF_CORES # 4 is the number of parallel threads for compilation: typically equal to number of physical cores
make pycaffe -j$NUMBER_OF_CORES
make test
make runtest
#make matcaffe
make distribute

# Afew few more dependencies for pycaffe
sudo pip install pydot
sudo apt-get install -y graphviz
sudo pip install scikit-learn

В конце вам нужно запустить «source ~ / .bash_profile» вручную или запустить новую оболочку, чтобы иметь возможность «python import caffe».

Включить многопоточность с помощью Caffe

Кофе может работать на нескольких ядрах. Один из способов - включить многопоточность с Caffe для использования OpenBLAS вместо стандартного ATLAS. Для этого вы можете выполнить следующие три шага:

  1. sudo apt-get install -y libopenblas-dev
  2. Перед компиляцией Caffe, отредактируйте Makefile.config , замените BLAS := atlas BLAS := open
  3. После компиляции Caffe запуск export OPENBLAS_NUM_THREADS=4 заставит Caffe использовать 4 ядра.

Утечка регуляризации (распад веса) в Caffe

В файле solver мы можем установить глобальную потерю регуляризации, используя weight_decay и regularization_type .

Во многих случаях нам нужны разные скорости распада веса для разных слоев. Это можно сделать, установив параметр decay_mult для каждого уровня в файле определения сети, где decay_mult является множителем по глобальной скорости распада веса, поэтому фактическая скорость распада веса, применяемая для одного слоя, - decay_mult*weight_decay .

Например, нижеследующий определяет сверточный слой с распадом NO без ограничений в файле решателя.

layer {
  name: "Convolution1"
  type: "Convolution"
  bottom: "data"
  top: "Convolution1"
  param {
    decay_mult: 0
  }
  convolution_param {
    num_output: 32
    pad: 0
    kernel_size: 3
    stride: 1
    weight_filler {
      type: "xavier"
    }
  }
}

См. Эту тему для получения дополнительной информации.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow