Моя история начинается с того момента, когда я достаточно наигрался с OpenCV 3.3.0 и решил пойти дальше и попробовать что-то классное, чего я никогда раньше не пробовал, поэтому TensorFlow был такой большой блестящей штукой, как молот Тора, которую все хотят заполучить. но понятия не имею, как это работает и что делает (конечно, все мы слышали модные слова - машинное обучение, наука о данных, компьютерное зрение).

Моя рабочая машина - лучший Macbook Pro, это означает, что у меня совсем другой опыт (от ubuntu, fedora и т. Д.) При установке программного обеспечения, которое мне нужно для работы. Когда я начал работать с OpenCV, я использовал образ докера Python 3.6 + OpenCV3.3, что, очевидно, было не очень удобно для отладки. Итак, я решил немного испачкать свой ноутбук (часто пытаясь очистить ноутбук от программного обеспечения, которое мне нужно для разработки, поэтому я использую виртуальные машины, контейнеры для запуска кода).

Первое, что я сделал, - это погуглил opencv 3 mac os и нашел пару статей и, к сожалению, проблемы с github, которые пытались решить при установке OpenCV, просто взгляните на что делать, чтобы установить opencv. Прыгая почти до самого конца рассказа, могу сказать только одно: Трудные времена приносят много лишнего веселья. Самая неприятная часть работы с OpenCV - это необходимость делать символические ссылки на каждый созданный вами виртуальный сервер. Несмотря на ужасный опыт установки OpenCV, я склонен согласиться с тем, что это мощный инструмент - распознавание лиц в 25 строках кода, распознавание улыбки на 10–15 строк больше.

Следующим пунктом в моем списке была библиотека на основе TensorFlow - tflearn. Я должен поблагодарить всех разработчиков и людей, которые занимаются упаковкой TensorFlow - вы проделали огромную работу, чтобы максимально упростить работу пользователей.

scipy
h5py
numpy
tensorflow
tflearn

Это количество программного обеспечения, которое необходимо установить, чтобы TensorFlow работал локально, но похоже, что нет готового решения, которое бы использовало полную вычислительную мощность машины, на которой выполняется код (если вам нужны мощности графического процессора CUDA или ваш процессор поддерживает SSE4 .2, инструкции AVX - скомпилируйте свои собственные двоичные файлы TensorFlow). Также существует множество образов для Docker, поддерживаемых командой TensorFlow.

К сожалению, развертывание tflearn не идеально, я даже могу сказать - ужасно, потому что у сообщества нет четких рекомендаций, особенно по управлению версиями. Такая проблема приводит к критическим ошибкам, таким как ошибка сегментации. С самого начала у tflearn были проблемы с управлением версиями зависимостей, что привело к впечатляющему количеству проблем со ссылками на segfault, а также к огромному количеству тем в Stackoverflow, в которых просят помочь преодолеть критическую проблему segfault. Вот только пример того, насколько плохо управление зависимостями:

$pip install tensorflow tflearn
...
Successfully installed bleach-1.5.0 html5lib-0.9999999 markdown-2.6.9 numpy-1.13.1 protobuf-3.4.0 six-1.10.0 tensorflow-1.3.0 tensorflow-tensorboard-0.1.6 werkzeug-0.12.2 Pillow-4.2.1 olefile-0.44 tflearn-0.3.2

При первом запуске вы увидите, что вам нужно установить дополнительный пакет:

$python
Python 3.6.2 (v3.6.2:5fd33b5926, Jul 16 2017, 20:11:06)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
import tflearn
hdf5 is not supported on this machine (please install/reinstall h5py for optimal experience)
Scipy not supported!

Хорошо, я понимаю, почему разработчики так поступили, tflearn может работать без hdf5 и scipy. Но на самом деле большинство проектов машинного обучения используют эти библиотеки, так почему вы не можете сделать их обязательными по умолчанию? В любом случае, после установки всех этих пакетов у нас есть следующее:

bleach==1.5.0
h5py==2.7.1
html5lib==0.9999999
Markdown==2.6.9
numpy==1.13.1
olefile==0.44
Pillow==4.2.1
protobuf==3.4.0
scipy==0.19.1
six==1.10.0
tensorflow==1.3.0
tensorflow-tensorboard==0.1.6
tflearn==0.3.2
Werkzeug==0.12.2

Хорошо, еще один вопрос к сопровождающим: если вы предлагаете пользователям установить определенное дополнительное программное обеспечение, почему вы не указываете нужные вам версии? Я думал, что сделал достаточно - установил последние версии и построил env, который работает, но как я был безрассудным ...

Предполагая, что моя среда воспроизводима, я могу создать образ докера и позволить моему приложению работать внутри него. Несмотря на то, что на моей машине было приложение, которое нормально работало, образ Docker продолжал умирать каждый раз, когда я пытался его запустить, более того, он умирал тихо, за исключением кода выхода 139.

Проведя часы за чтением и поиском в Google, я нашел проблему с github. На первый взгляд, это совсем не связано с обучением. Но сказано, что попробуйте перейти на tensorflow-1.0.0. Хорошо, я решил начать с самого начала, имея в виду пакеты, которые мне нужно установить, чтобы импорт tflearn был тихим. В итоге я получаю следующий список требований:

scipy==0.19.1
h5py==2.7.1
numpy==1.13.1
tensorflow==1.0.0
tflearn==0.3.2

К моему удивлению, мое приложение не провалилось во время выскочки.

Это означает, что последние выпуски tflearn не соответствуют последним выпускам TensorFlow, SciPy, NumPy, h5py. Это не то, чего ожидают разработчики.

В заключение я могу только сказать, что опыт, который у меня есть в самом начале использования TensorFlow, замечателен, несмотря на то, что я потратил часы на поиск работоспособного управления версиями для всех необходимых пакетов, я склонен согласиться с тем, что tflearn предлагает еще один высокоуровневый API для глубокого построения. нейронные сети моделируют и делают прогнозы, которые оказались очень полезными (по крайней мере, в моем конкретном случае).