Машинное обучение − это просто. Но знаете ли вы, что можно использовать Python для машинного обучения? Вот инструкция по настройке для Windows.
Люди привыкли выполнять большую часть работы автономно. В этой статье рассказываем о возможностях языка Python для машинного обучения на Windows, описание дистрибутива Anaconda, процесс его установки и создание нейронной сети.
Anaconda и Conda
Используемый в Python pip не идеален. Для оптимизации работы был выпущен дистрибутив Anaconda и система управления Conda, которые могут помочь в настройке Python для машинного обучения.
Хотя Conda тесно связана с Anaconda, эти проекты отличаются своими функциями. Anaconda − дистрибутив ПО в экосистеме PyData, которая включает сам язык программирования Python, а также двоичные файлы для нескольких сторонних проектов. Существует и Miniconda − версия с минимальным исходным пакетом. Conda − система управления пакетами, которая может быть установлена без Anaconda или Miniconda. Она способна решать проблемы внешних зависимостей, путем загрузки скомпилированных версий ПО. Кроме того, Conda является менеджером среды. С ее помощью вы можете настроить отдельную среду. Сейчас мы рассмотрим процесс установки Miniconda.
Установка дистрибутива Miniconda
Скачайте и установите необходимую версию Miniconda на ПК. При установке продвинутых настроек снимите галочку с первого пункта.
Поскольку при установке не был выбран пункт «Add Anaconda to my PATH environment variable», то команды Anaconda не будут работать в командной строке по умолчанию. Для их использования следует запустить дистрибутив отдельно. Когда он откроется, проверьте доступность Conda, запустив conda --version:
(base) C:\Users\IEUser>conda --version conda 4.5.11
Чтобы получить больше информации об установке, запустите conda info:
(base) C:\Users\IEUser>conda info active environment : base active env location : C:\Users\IEUser\Miniconda3 shell level : 1 user config file : C:\Users\IEUser\.condarc populated config files : C:\Users\IEUser\.condarc conda version : 4.5.11 conda-build version : not installed python version : 3.7.0.final.0 base environment : C:\Users\IEUser\Miniconda3 (writable) channel URLs : https://repo.anaconda.com/pkgs/main/win-64 https://repo.anaconda.com/pkgs/main/noarch https://repo.anaconda.com/pkgs/free/win-64 https://repo.anaconda.com/pkgs/free/noarch https://repo.anaconda.com/pkgs/r/win-64 https://repo.anaconda.com/pkgs/r/noarch https://repo.anaconda.com/pkgs/pro/win-64 https://repo.anaconda.com/pkgs/pro/noarch https://repo.anaconda.com/pkgs/msys2/win-64 https://repo.anaconda.com/pkgs/msys2/noarch package cache : C:\Users\IEUser\Miniconda3\pkgs C:\Users\IEUser\AppData\Local\conda\conda\pkgs envs directories : C:\Users\IEUser\Miniconda3\envs C:\Users\IEUser\AppData\Local\conda\conda\envs C:\Users\IEUser\.conda\envs platform : win-64 user-agent : conda/4.5.11 requests/2.19.1 CPython/3.7.0 Windows/10 Windows/10.0.17134 administrator : False netrc file : None offline mode : False
Понимание среды Conda
При работе с чужими проектами у вас может возникнуть потребность в установке определенных версий пакетов. Виртуальные среды − решение проблемы. Они позволяют создать несколько сред, каждая из которых имеет разные версии пакетов. Базовая настройка Python для машинного обучения включает в себя Virtualenv, инструмент для создания изолированных сред.
Conda включает собственный менеджер среды и дает некоторые преимущества относительно Virtualenv. Кроме того, среды Conda полностью совместимы с базовыми пакетами языка Python, которые могут быть установлены с помощью pip.
Используя Anaconda, можно проверить доступные среды Conda, запустив сonda env list:
(base) C:\Users\IEUser>conda env list base * C:\Users\IEUser\Miniconda3
Базовая среда − корневая среда, созданная Miniconda. Можно создать еще одну, под названием otherenv, путем запуска conda create --name otherenv:
(base) C:\Users\IEUser>conda create --name otherenv Solving environment: done environment location: C:\Users\IEUser\Miniconda3\envs\otherenv Proceed ([y]/n)? y Preparing transaction: done Verifying transaction: done Executing transaction: done
После завершения процесса создания среды, можно ее активировать, запустив conda activate otherenv. Заметить изменения среды можно, посмотрев на скобки в начале строки:
(base) C:\Users\IEUser>conda activate otherenv (otherenv) C:\Users\IEUser>
Откройте Python interpreter в этой среде, запустив python:
(otherenv) C:\Users\IEUser>python Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
Среда включает в себя Python 3.7.0, ту же версию, что включена в корневую среду. Чтобы выйти, запустите quit():
>>> quit() (otherenv) C:\Users\IEUser>
Чтобы отключить среду otherenv и вернуться в корневую среду, пропишите deactivate:
(otherenv) C:\Users\IEUser>deactivate (base) C:\Users\IEUser>
Conda позволяет легко создавать среды с различными версиями Python. Чтобы включить другую версию в среду, укажите ее, используя python =<version> при запуске conda create. Чтобы создать среду с именем py2 с Python 2.7, запустите conda create --name py2 python=2.7:
(base) C:\Users\IEUser>conda create --name py2 python=2.7 Solving environment: done environment location: C:\Users\IEUser\Miniconda3\envs\py2 added / updated specs: - python=2.7 The following NEW packages will be INSTALLED: certifi: 2018.8.24-py27_1 pip: 10.0.1-py27_0 python: 2.7.15-he216670_0 setuptools: 40.2.0-py27_0 vc: 9-h7299396_1 vs2008_runtime: 9.00.30729.1-hfaea7d5_1 wheel: 0.31.1-py27_0 wincertstore: 0.2-py27hf04cefb_0 Proceed ([y]/n)? y Preparing transaction: done Verifying transaction: done Executing transaction: done (base) C:\Users\IEUser>
Как видно из вывода conda create, были установлены новые пакеты, так как среда использует Python 2.7. Можно проверить, что среда действительно использует его, активировав Python interpreter:
(base) C:\Users\IEUser>conda activate py2 (py2) C:\Users\IEUser>python Python 2.7.15 |Anaconda, Inc.| (default, May 1 2018, 18:37:09) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
Теперь, если вы запустите conda env list, можно увидеть две среды, которые были созданы вами:
(py2) C:\Users\IEUser>conda env list base C:\Users\IEUser\Miniconda3 otherenv C:\Users\IEUser\Miniconda3\envs\otherenv py2 * C:\Users\IEUser\Miniconda3\envs\py2 (py2) C:\Users\IEUser>
Asterisk указывает на активную среду. Ее можно удалить, выполнив команду conda remove --name <environment name> --all:
(py2) C:\Users\IEUser>deactivate (base) C:\Users\IEUser>conda remove --name py2 --all Remove all packages in environment C:\Users\IEUser\Miniconda3\envs\py2: environment location: C:\Users\IEUser\Miniconda3\envs\py2 The following packages will be REMOVED: certifi: 2018.8.24-py27_1 pip: 10.0.1-py27_0 python: 2.7.15-he216670_0 setuptools: 40.2.0-py27_0 vc: 9-h7299396_1 vs2008_runtime: 9.00.30729.1-hfaea7d5_1 wheel: 0.31.1-py27_0 wincertstore: 0.2-py27hf04cefb_0 Proceed ([y]/n)? y (base) C:\Users\IEUser>
Управление базовыми пакетами с помощью Conda
Пакеты ПО могут быть установлены с помощью Conda. Корневая база Miniconda включает в себя базовые пакеты, которые не являются частью стандартной библиотеки Python для настройки машинного обучения.
Установка по умолчанию включает минимум пакетов Conda. Чтобы проверить список установленных пакетов, нужно убедиться, что она активна, и запустить conda list. В корневой среде устанавливаются эти пакеты:
(base) C:\Users\IEUser>conda list asn1crypto 0.24.0 py37_0 ca-certificates 2018.03.07 0 certifi 2018.8.24 py37_1 cffi 1.11.5 py37h74b6da3_1 chardet 3.0.4 py37_1 conda 4.5.11 py37_0 conda-env 2.6.0 1 console_shortcut 0.1.1 3 cryptography 2.3.1 py37h74b6da3_0 idna 2.7 py37_0 menuinst 1.4.14 py37hfa6e2cd_0 openssl 1.0.2p hfa6e2cd_0 pip 10.0.1 py37_0 pycosat 0.6.3 py37hfa6e2cd_0 pycparser 2.18 py37_1 pyopenssl 18.0.0 py37_0 pysocks 1.6.8 py37_0 python 3.7.0 hea74fb7_0 pywin32 223 py37hfa6e2cd_1 requests 2.19.1 py37_0 ruamel_yaml 0.15.46 py37hfa6e2cd_0 setuptools 40.2.0 py37_0 six 1.11.0 py37_1 urllib3 1.23 py37_0 vc 14 h0510ff6_3 vs2015_runtime 14.0.25123 3 wheel 0.31.1 py37_0 win_inet_pton 1.0.1 py37_1 wincertstore 0.2 py37_0 yaml 0.1.7 hc54c509_2 (base) C:\Users\IEUser>
Поиск и установка пакетов
Пакеты устанавливаются из репозиториев, называемых channels by Conda. Чтобы выполнить поиск определенного пакета, запустите поиск <package name>. Вот так вы будете искать keras:
(base) C:\Users\IEUser>conda search keras Loading channels: done keras 2.0.8 py35h15001cb_0 pkgs/main keras 2.0.8 py36h65e7a35_0 pkgs/main keras 2.1.2 py35_0 pkgs/main keras 2.1.2 py36_0 pkgs/main keras 2.1.3 py35_0 pkgs/main keras 2.1.3 py36_0 pkgs/main ... (more)
Для каждой версии существуют разные версии пакетов и сборки. Предыдущий поиск показывает только пакеты с именем keras. Чтобы выполнить более широкий поиск, используйте *. Например, при запуске conda search *keras*, вы получите следующее:
(base) C:\Users\IEUser>conda search *keras* Loading channels: done keras 2.0.8 py35h15001cb_0 pkgs/main keras 2.0.8 py36h65e7a35_0 pkgs/main keras 2.1.2 py35_0 pkgs/main keras 2.1.2 py36_0 pkgs/main keras 2.1.3 py35_0 pkgs/main keras 2.1.3 py36_0 pkgs/main ... (more) keras-applications 1.0.2 py35_0 pkgs/main keras-applications 1.0.2 py36_0 pkgs/main keras-applications 1.0.4 py35_0 pkgs/main ... (more) keras-base 2.2.0 py35_0 pkgs/main keras-base 2.2.0 py36_0 pkgs/main ... (more)
Вы можете заметить, что в каналах по умолчанию есть и другие пакеты, связанные с keras.
Чтобы установить пакет, запустите conda install <package name>. По умолчанию самая новая версия пакета будет установлена в активной среде. Установите пакет keras в среду otherenv, созданную вами:
(base) C:\Users\IEUser>conda activate otherenv (otherenv) C:\Users\IEUser>conda install keras Solving environment: done environment location: C:\Users\IEUser\Miniconda3\envs\otherenv added / updated specs: - keras The following NEW packages will be INSTALLED: _tflow_1100_select: 0.0.3-mkl absl-py: 0.4.1-py36_0 astor: 0.7.1-py36_0 blas: 1.0-mkl certifi: 2018.8.24-py36_1 gast: 0.2.0-py36_0 grpcio: 1.12.1-py36h1a1b453_0 h5py: 2.8.0-py36h3bdd7fb_2 hdf5: 1.10.2-hac2f561_1 icc_rt: 2017.0.4-h97af966_0 intel-openmp: 2018.0.3-0 keras: 2.2.2-0 keras-applications: 1.0.4-py36_1 keras-base: 2.2.2-py36_0 keras-preprocessing: 1.0.2-py36_1 libmklml: 2018.0.3-1 libprotobuf: 3.6.0-h1a1b453_0 markdown: 2.6.11-py36_0 mkl: 2019.0-117 mkl_fft: 1.0.4-py36h1e22a9b_1 mkl_random: 1.0.1-py36h77b88f5_1 numpy: 1.15.1-py36ha559c80_0 numpy-base: 1.15.1-py36h8128ebf_0 pip: 10.0.1-py36_0 protobuf: 3.6.0-py36he025d50_0 python: 3.6.6-hea74fb7_0 pyyaml: 3.13-py36hfa6e2cd_0 scipy: 1.1.0-py36h4f6bf74_1 setuptools: 40.2.0-py36_0 six: 1.11.0-py36_1 tensorboard: 1.10.0-py36he025d50_0 tensorflow: 1.10.0-mkl_py36hb361250_0 tensorflow-base: 1.10.0-mkl_py36h81393da_0 termcolor: 1.1.0-py36_1 vc: 14-h0510ff6_3 vs2013_runtime: 12.0.21005-1 vs2015_runtime: 14.0.25123-3 werkzeug: 0.14.1-py36_0 wheel: 0.31.1-py36_0 wincertstore: 0.2-py36h7fe50ca_0 yaml: 0.1.7-hc54c509_2 zlib: 1.2.11-h8395fce_2 Proceed ([y]/n)?
Conda управляет необходимыми функциями для пакета. Так как у keras их много, при его установке Conda позволяет установить большой список пакетов.
Поскольку новая сборка keras использует Python 3.6, а среда otherenv была создана с использованием Python 3.7, пакет python 3.6.6 был включен как зависимость. После подтверждения установки вы сможете проверить, что версия Python для среды otherenv была понижена до версии 3.6.6.
Но если вы не хотите понижать версию вашего пакета, просто создайте новую среду с необходимой версией Python. Чтобы проверить список пакетов и прочего, необходимого для ее установки, посмотрите на параметр --dry-run:
(otherenv) C:\Users\IEUser>conda install keras --dry-run
При необходимости можно изменить базовую версию Python среды Conda, установив определенную версию пакета python. Создайте новую среду под названием envpython:
(otherenv) C:\Users\IEUser>conda create --name envpython Solving environment: done environment location: C:\Users\IEUser\Miniconda3\envs\envpython Proceed ([y]/n)? y Preparing transaction: done Verifying transaction: done Executing transaction: done
Поскольку корневая среда использует Python 3,7, создается envpython с этой же версией.
(base) C:\Users\IEUser>conda activate envpython (envpython) C:\Users\IEUser>python Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. >>> quit() (envpython) C:\Users\IEUser>
Чтобы установить определенную версию пакета , запустите conda install <package name>=<version>. Вот так вы установите Python 3.6 в среду envpython:
(envpython) C:\Users\IEUser>conda install python=3.6 Solving environment: done environment location: C:\Users\IEUser\Miniconda3\envs\envpython added / updated specs: - python=3.6 The following NEW packages will be INSTALLED: certifi: 2018.8.24-py36_1 pip: 10.0.1-py36_0 python: 3.6.6-hea74fb7_0 setuptools: 40.2.0-py36_0 vc: 14-h0510ff6_3 vs2015_runtime: 14.0.25123-3 wheel: 0.31.1-py36_0 wincertstore: 0.2-py36h7fe50ca_0 Proceed ([y]/n)?
Если вам нужно установить несколько пакетов, запустите conda install, указав имена пакетов. Вот как вы установите numpy, scipy и matplotlib:
(envpython) C:\Users\IEUser>deactivate (base) C:\Users\IEUser>conda install numpy scipy matplotlib Solving environment: done environment location: C:\Users\IEUser\Miniconda3 added / updated specs: - matplotlib - numpy - scipy The following packages will be downloaded: package | build ---------------------------|----------------- libpng-1.6.34 | h79bbb47_0 1.3 MB mkl_random-1.0.1 | py37h77b88f5_1 267 KB intel-openmp-2019.0 | 117 1.7 MB qt-5.9.6 | vc14h62aca36_0 92.5 MB matplotlib-2.2.3 | py37hd159220_0 6.5 MB tornado-5.1 | py37hfa6e2cd_0 668 KB pyqt-5.9.2 | py37ha878b3d_0 4.6 MB pytz-2018.5 | py37_0 232 KB scipy-1.1.0 | py37h4f6bf74_1 13.5 MB jpeg-9b | hb83a4c4_2 313 KB python-dateutil-2.7.3 | py37_0 260 KB numpy-base-1.15.1 | py37h8128ebf_0 3.9 MB numpy-1.15.1 | py37ha559c80_0 37 KB mkl_fft-1.0.4 | py37h1e22a9b_1 120 KB kiwisolver-1.0.1 | py37h6538335_0 61 KB pyparsing-2.2.0 | py37_1 96 KB cycler-0.10.0 | py37_0 13 KB freetype-2.9.1 | ha9979f8_1 470 KB icu-58.2 | ha66f8fd_1 21.9 MB sqlite-3.24.0 | h7602738_0 899 KB sip-4.19.12 | py37h6538335_0 283 KB ------------------------------------------------------------ Total: 149.5 MB The following NEW packages will be INSTALLED: blas: 1.0-mkl cycler: 0.10.0-py37_0 freetype: 2.9.1-ha9979f8_1 icc_rt: 2017.0.4-h97af966_0 icu: 58.2-ha66f8fd_1 intel-openmp: 2019.0-117 jpeg: 9b-hb83a4c4_2 kiwisolver: 1.0.1-py37h6538335_0 libpng: 1.6.34-h79bbb47_0 matplotlib: 2.2.3-py37hd159220_0 mkl: 2019.0-117 mkl_fft: 1.0.4-py37h1e22a9b_1 mkl_random: 1.0.1-py37h77b88f5_1 numpy: 1.15.1-py37ha559c80_0 numpy-base: 1.15.1-py37h8128ebf_0 pyparsing: 2.2.0-py37_1 pyqt: 5.9.2-py37ha878b3d_0 python-dateutil: 2.7.3-py37_0 pytz: 2018.5-py37_0 qt: 5.9.6-vc14h62aca36_0 scipy: 1.1.0-py37h4f6bf74_1 sip: 4.19.12-py37h6538335_0 sqlite: 3.24.0-h7602738_0 tornado: 5.1-py37hfa6e2cd_0 zlib: 1.2.11-h8395fce_2 Proceed ([y]/n)?
Обновление и удаление пакетов
Иногда вам будет нужно обновлять пакеты. Для этого запустите conda update <package name>. Если вы хотите обновить все пакеты, активируйте среду и запустите conda update --all.
Чтобы удалить пакеты, пропишите conda remove <package name>, но помните, что при удалении пакета, все зависимые от него тоже удалятся:
(base) C:\Users\IEUser>conda remove numpy Solving environment: done environment location: C:\Users\IEUser\Miniconda3 removed specs: - numpy The following packages will be REMOVED: matplotlib: 2.2.3-py37hd159220_0 mkl_fft: 1.0.4-py37h1e22a9b_1 mkl_random: 1.0.1-py37h77b88f5_1 numpy: 1.15.1-py37ha559c80_0 scipy: 1.1.0-py37h4f6bf74_1 Proceed ([y]/n)?
Использование каналов
Иногда вы не сможете найти нужные вам пакеты на базовых каналах. Вот так вы будете устанавливать pytorch:
(base) C:\Users\IEUser>conda search pytorch Loading channels: done PackagesNotFoundError: The following packages are not available from current channels: - pytorch Current channels: - https://repo.anaconda.com/pkgs/main/win-64 - https://repo.anaconda.com/pkgs/main/noarch - https://repo.anaconda.com/pkgs/free/win-64 - https://repo.anaconda.com/pkgs/free/noarch - https://repo.anaconda.com/pkgs/r/win-64 - https://repo.anaconda.com/pkgs/r/noarch - https://repo.anaconda.com/pkgs/pro/win-64 - https://repo.anaconda.com/pkgs/pro/noarch - https://repo.anaconda.com/pkgs/msys2/win-64 - https://repo.anaconda.com/pkgs/msys2/noarch To search for alternate channels that may provide the conda package you're looking for, navigate to https://anaconda.org and use the search bar at the top of the page.
В случае, если будете искать pytorch на сайте anaconda, вы получите следующие результаты:
В канале pytorch имеется пакет под названием pytorch с версией 0.4.1. Чтобы установить пакет с определенного канала, используйте параметр -c <chanel> вместе с conda install:
(base) C:\Users\IEUser>conda install -c pytorch pytorch Solving environment: done environment location: C:\Users\IEUser\Miniconda3 added / updated specs: - pytorch The following packages will be downloaded: package | build ---------------------------|----------------- pytorch-0.4.1 |py37_cuda90_cudnn7he774522_1 590.4 MB pytorch The following NEW packages will be INSTALLED: pytorch: 0.4.1-py37_cuda90_cudnn7he774522_1 pytorch Proceed ([y]/n)?
Также можно добавить канал, чтобы Conda производила там поиск пакетов. Чтобы посмотреть текущие каналы, запустите conda config --get channels:
(base) C:\Users\IEUser>conda config --get channels --add channels 'defaults' (base) C:\Users\IEUser>
Когда у вас появится множество каналов,нужно будет выставить приоритет. Чтобы добавить канал с наименьшим приоритетом в список, запустите conda config --append channels <channel name>. С наивысшим − conda config --prepend channels <channel name>. Рекомендуется выставлять новым каналам низкий приоритет, чтобы продолжить использовать каналы по умолчанию. Таким образом, вы можете установить pytorch, добавив канал pytorch и запустив conda install pytorch:
(base) C:\Users\IEUser>conda config --append channels pytorch (base) C:\Users\IEUser>conda config --get channels --add channels 'pytorch' # lowest priority --add channels 'defaults' # highest priority (base) C:\Users\IEUser>conda install pytorch Solving environment: done environment location: C:\Users\IEUser\Miniconda3 added / updated specs: - pytorch The following packages will be downloaded: package | build ---------------------------|----------------- pytorch-0.4.1 |py37_cuda90_cudnn7he774522_1 590.4 MB pytorch The following NEW packages will be INSTALLED: pytorch: 0.4.1-py37_cuda90_cudnn7he774522_1 pytorch Proceed ([y]/n)?
Использование Pip в среде Conda
Иногда при настройке Python для машинного обучения вам могут понадобиться чистые пакеты Python, которые будут недоступны на каналах Conda. Например, Unipath.
Вы сможете найти пакет, используя другой канал. Но так как unipath − чистый пакет Python, то можно использовать pip для его установки. Следует использовать pip, установленный conda create:
conda create --name newproject
Чтобы установить pip, активируйте среду и установите пакет Conda:
(base) C:\Users\IEUser>conda activate newproject (newproject) C:\Users\IEUser>conda install pip Solving environment: done environment location: C:\Users\IEUser\Miniconda3\envs\newproject added / updated specs: - pip The following NEW packages will be INSTALLED: certifi: 2018.8.24-py37_1 pip: 10.0.1-py37_0 python: 3.7.0-hea74fb7_0 setuptools: 40.2.0-py37_0 vc: 14-h0510ff6_3 vs2015_runtime: 14.0.25123-3 wheel: 0.31.1-py37_0 wincertstore: 0.2-py37_0 Proceed ([y]/n)?
Наконец, используйте pip, чтобы установить unipath:
(newproject) C:\Users\IEUser>pip install unipath Collecting unipath Installing collected packages: unipath Successfully installed unipath-1.1 You are using pip version 10.0.1, however version 18.0 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command. (newproject) C:\Users\IEUser>
После установки вы можете посмотреть на пакеты с помощью conda list и проверить, что Unipath был установлен:
(newproject) C:\Users\IEUser>conda list certifi 2018.8.24 py37_1 pip 10.0.1 py37_0 python 3.7.0 hea74fb7_0 setuptools 40.2.0 py37_0 Unipath 1.1 <pip> vc 14 h0510ff6_3 vs2015_runtime 14.0.25123 3 wheel 0.31.1 py37_0 wincertstore 0.2 py37_0 (newproject) C:\Users\IEUser>
Также можно использовать пакеты из системы VSC с помощью pip. Чтобы активировать supervisor, version 4.0.0dev0. доступный в репозитории Git, для начала установите последний:
(newproject) C:\Users\IEUser> conda install git
Теперь установите supervisor, используя pip, с помощью репозитория Git:
(newproject) pip install -e git://github.com/Supervisor/supervisor@abef0a2be35f4aae4a4edeceadb7a213b729ef8d#egg=supervisor
После завершения установки supervisor будет указан в списке установленных пакетов:
(newproject) C:\Users\IEUser>conda list certifi 2018.8.24 py37_1 git 2.18.0 h6bb4b03_0 meld3 1.0.2 <pip> pip 10.0.1 py37_0 python 3.7.0 hea74fb7_0 setuptools 40.2.0 py37_0 supervisor 4.0.0.dev0 <pip> ... (more)
Простой пример машинного обучения
XOR gate − ещё один момент, который стоит знать в процессе настройки Python для машинного обучения: используя Conda обучите нейронную сеть функционировать как XOR gate
XOR gate реализуют операцию OR. Требуется два цифровых входа, равные 0 или 1. И вывода, 1 (true) и 0 (false). Таблица ниже суммирует операции XOR gate:
Операцию XOR можно интерпретировать как classification problem, потому что она принимает два входа и должна классифицировать их как 0 или 1 в зависимости от того, равны они друг другу или нет. Именно этот пример обычно используется в качестве первого случая обучения нейронной сети, поскольку он прост, но в то же время требует нелинейного классификатора, такого как нейронная сеть. Чтобы реализовать нейронную сеть, создайте среду Conda, названную nnxor:
(base) C:\Users\IEUser>conda create nnxor
Теперь активируйте и установите пакет keras:
(base) C:\Users\IEUser>conda activate nnxor (nnxor) C:\Users\IEUser>conda install keras
keras − высокоуровневый API, который упрощает внедрение нейронных сетей поверх известных библиотек, таких как TensorFlow. Обучите следующую нейронную сеть действовать как XOR gate:
Сеть берет два входа (A, B) и передает их двум нейронам, показанными большими кругами. Затем она принимает входные данные этих нейронов и подает их на выходной нейрон, который должен обеспечивать классификацию в соответствии с таблицей XOR.
Процесс обучения состоит в том, чтобы настроить значения w_1 до w_6, чтобы выход соответствовал таблице. Для этого входные примеры начнут подаваться по одному, вывод станет рассчитываться с текущими значениями, и, сравнивая вывод с желаемым, значения будут корректироваться.
Для этого создайте папку с именем nnxor в директории (C:\Users\IEUser) с файлом под именем nnxor.py, чтобы сохранить программу Python для реализации нейронной сети.
В файле nnxor.py выберите сеть для обучения и тестирования:
import numpy as np np.random.seed(444) from keras.models import Sequential from keras.layers.core import Dense, Activation from keras.optimizers import SGD X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) y = np.array([[0], [1], [1], [0]]) model = Sequential() model.add(Dense(2, input_dim=2)) model.add(Activation('sigmoid')) model.add(Dense(1)) model.add(Activation('sigmoid')) sgd = SGD(lr=0.1) model.compile(loss='mean_squared_error', optimizer=sgd) model.fit(X, y, batch_size=1, epochs=5000) if __name__ == '__main__': print(model.predict(X))
Импортируйте numpy, инициализируйте случайный seed, чтобы можно было воспроизвести те же результаты при повторном запуске программы и импортировать keras, используемый в сети.
Определите массив X, содержащий 4 возможных набора A-B входов, и массив y, содержащий выходные данные.
Следующие пять строк сформируют нейронную сеть. Модель Sequental() − одна из моделей keras для определения нейронной сети. Определите первый слой из двух входных нейронов, определив их функцию активации в качестве sigmond function. Затем обозначьте входной слой их одного нейрона с той же функцией активации.
Следующие две строки определяют детали обучения сети. Чтобы настроить параметры, используйте Stochastic Gradient Descent с оптимальной скоростью обучения, равной 0,1. Наконец, выполните обучение с помощью fit(), используя X и Y в качестве примеров обучения, после того, как каждый пример будет загружен в сеть (batch_size=1). Число epochs представляет собой количество попыток обучения сети.
В этом случае вы повторяете операцию 5500 раз, используя обучающий набор, содержащий 4 примера ввода и вывода. После обращения нейросети к исходным данным тренировочные варианты перемешиваются заново.
На последней строке вы печатаете прогнозируемые значения 4 возможных примеров ввода.
(nnxor) C:\Users\IEUser>cd nnxor (nnxor) C:\Users\IEUser\nnxor>python nnxor.py Using TensorFlow backend. Epoch 1/5000 2018-09-16 09:49:05.987096: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2 2018-09-16 09:49:05.993128: I tensorflow/core/common_runtime/process_util.cc:69] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance. 4/4 [==============================] - 0s 39ms/step - loss: 0.2565 Epoch 2/5000 4/4 [==============================] - 0s 0us/step - loss: 0.2566 Epoch 3/5000 4/4 [==============================] - 0s 0us/step - loss: 0.2566 Epoch 4/5000 4/4 [==============================] - 0s 0us/step - loss: 0.2566 Epoch 5/5000 4/4 [==============================] - 0s 0us/step - loss: 0.2566 Epoch 6/5000 4/4 [==============================] - 0s 0us/step - loss: 0.2566
После обучения, вы можете проверить прогнозы, которые дает сеть для возможных входных значений:
Epoch 4997/5000 4/4 [==============================] - 0s 0us/step - loss: 0.0034 Epoch 4998/5000 4/4 [==============================] - 0s 0us/step - loss: 0.0034 Epoch 4999/5000 4/4 [==============================] - 0s 0us/step - loss: 0.0034 Epoch 5000/5000 4/4 [==============================] - 0s 0us/step - loss: 0.0034 [[0.0587215 ] [0.9468337 ] [0.9323144 ] [0.05158457]]
Как вы определите X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]), ожидаемые входные округленные значения станут равны 0,1,1 и 0, что согласуется с прогнозами сети.
Машинное обучение применяется в различных областях, охватывая все большую аудиторию. Тем не менее, создание среды может быть сложней задачей. В этой статье вы узнали об основах создания среды Python на Windows с использованием Anaconda. Теперь, когда у вас есть основа, пришло время начать работу с настоящими приложениями.
Понравилась статья о настройке Python для машинного обучения? Книги по Python и другие материалы:
- Работа с документацией в Python: поиск информации и соглашения
- Машинное обучение за год
- Машинное обучение для самых маленьких
- 13 лучших книг по Python для начинающих и продолжающих
Источник: Настройка Python для машинного обучения on Realpython
Комментарии