машинное обучение — пример компиляции Caffe C ++

Я недавно модифицировал Кафе Файл примера классификации C ++ и я пытаюсь перекомпилировать это. Однако у меня возникают проблемы с компоновкой простой компиляции g ++ с файлами .hpp в каталоге include. Я знаю, что это основной вопрос, но я не могу решить его — может кто-нибудь помочь мне решить, как скомпилировать эту программу? Компиляция теперь выглядит так:

g++ -I /home/jack/caffe/include classification.cpp -o classify

Но я получаю эту ошибку:

In file included from /home/jack/caffe/include/caffe/common.hpp:19:0,
from /home/jack/caffe/include/caffe/blob.hpp:8,
from /home/jack/caffe/include/caffe/caffe.hpp:7,
from classification.cpp:1:
/home/jack/caffe/include/caffe/util/device_alternate.hpp:34:23: fatal error: cublas_v2.h: No such file or directory
#include <cublas_v2.h>

Я запускаю это на машине без графических процессоров Nvidia, поэтому, когда я посмотрел на файл device_alternate.hpp, я понял, что это также вызывает много связанных с cuda файлов .hpp, которые не существуют.

8

Решение

Обычно, чтобы помочь компилятору найти заголовочные файлы, вам нужно добавить -I /path/to/include/folder вариант строки компиляции:

~$ g++ -I /path/to/caffe/include myfile.cpp
5

Другие решения

Если вы хотите создавать собственные файлы в caffe, есть два способа

Легкий способ

  • Внесите необходимые изменения и сохраните файл (в вашем случае —lassification.cpp) в каталоге (скажем, test) в папке примеров в th.
    корневой каталог кофе.
  • бежать make, Это автоматически добавит необходимые cxxflags и ldflags, скомпилирует ваш код и поместит исполняемый файл в папку build / examples / test. Это также обеспечивает флаг CPU_ONLY установлен (как указано в Makefile.config )

Трудный путь

  • Запустите make без красивой опции печати (упоминается внутри Makefile.config ). Вы сможете увидеть параметры компиляции и ссылки, используемые для построения примеров и инструментов. Вы можете скопировать и вставить эти параметры (и внести необходимые изменения в относительные пути, если они используются) для компиляции вашего файла

Надеюсь это поможет

редактировать
Поскольку операционная система запросила простой способ, это можно сделать следующим образом

Это очень минимальный пример и я призываю ОП обратиться к полной онлайн-документации и примеру использования cmake.

  • Требования
    • Кафе должно быть построено с CMake — Относительно легко, так как текущая главная ветвь имеет CMakeLists и все, что определено. Используйте Cmake-GUI или ccmake, чтобы установить свои параметры

Теперь я предполагаю, что у вас есть структура проекта следующим образом.

-project
- src
- class1.cpp
- CMakeLists.txt ( to be added )
- include
- class1.hpp

- main.cpp
- CMakeLists.txt ( to be added )

CMakeLists.txt (src) должен содержать (как минимум) следующие строки,

cmake_minimum_required(VERSION 2.8)
find_package(OpenCV REQUIRED) # Optional in case of dependency on opencv
add_library( c1 class1.cpp )

Замечания: В случае, если class1 зависит от других внешних библиотек, путь к заголовкам должен быть включен с помощью include_directories,

CMakeLists.txt (самый внешний) должен содержать следующее в минимальный

cmake_minimum_required(VERSION 2.8)
PROJECT(MyProject)

find_package(OpenCV REQUIRED)
find_package(Caffe REQUIRED)

include_directories( "${PROJECT_SOURCE_DIR}/include" )
add_subdirectory( src )

include_directories( "$Caffe_INCLUDE_DIRS}" )
add_executable(MyProject main.cpp)

target_link_libraries( MyProject ${OpenCV_LIBS} c1 ${Caffe_LIBRARIES} )

Теперь следующие команды из каталога проекта создадут исполняемый файл MyProject внутри build папка.

mkdir build
cd build
cmake ..
make

Затем вы можете запустить вашу программу с ./MyProject (arguments)

РЕДАКТИРОВАТЬ 2

Для того, чтобы это работало, очень важно выполнить требование построения caffe с помощью CMake. Вам необходимо настроить и сгенерировать Make-файлы с помощью CMake. использование cmake-gui или же ccmake для этой цели, чтобы вы могли установить свои параметры, такие как CPU_ONLY и т. д.

Вы должны создать каталог сборки внутри caffe и выполнить следующее для базовой настройки

mkdir build
cd build
cmake ..
make -jX #X is the number of threads your CPU can handle

Теперь каталог .cmake в вашей папке $ HOME состоит из следующих
/home/user/.cmake/packages/Caffe/<random_string> файл. Этот файл указывает на место установки caffe (это наш каталог сборки)

Теперь команда find_package должна работать без ошибок для других ваших проектов. А поскольку вы используете CMake, вы можете хранить папку своего проекта вне папки Caffe (и лучше оставить ее снаружи, так как процесс make caffe попытается собрать ваши файлы, но это не удастся)

Заметка: Если ошибка повторяется, вы можете вручную установить Caffe_DIR во время конфигурации cmake.

4

Измените Makefile.config, чтобы установить CPU_ONLY := 1

# CPU-only switch (uncomment to build without GPU support).
CPU_ONLY := 1
1
По вопросам рекламы [email protected]