Deeplearning4j — бібліотека програм мовою Java, яка використовується як фреймворк для глибокого навчання. Включає реалізацію через обмежену машину Больцмана, глибоку мережу переконань, глибокий автокодувальник, стековий автокодувальник з фільтрацією шуму, рекурсивну тензорну нейронну мережу, word2vec, doc2vec та GloVe. Ці алгоритми включено також у версії бібліотеки, що підтримують розподілені обчислення, інтегровані з архітектурою Apache Hadoop і Spark.
Є відкритим програмним забезпеченням, поширюється під ліцензією Apache 2.0; головні розробники — група машинного навчання в Сан-Франциско на чолі з Адамом Ґібсоном, комерційні впровадження підтримує стартап Skymind.
Технологія Deeplearning4j реалізована мовою Java і виконується в середовищі, при цьому сумісна з Clojure і включає інтерфейс (API) для мови Scala. Додаткова бібліотека ND4J відкритого доступу забезпечує обчислення на графічних процесорах з підтримкою CUDA . Крім того, є засоби для роботи з бібліотекою мовою Python через фреймворк Keras.
Фреймворк дозволяє комбінувати компоненти, об'єднуючи звичайні нейронні мережі з машинами Больцмана, згортковими нейронними мережами, автокодувальниками і рекурентними мережами в одну систему. Крім того, підтримуються розширені засоби візуалізації. Навчання відбувається як за допомогою звичайних багатошарових нейронних мереж, так і для складних мереж, в яких визначено граф обчислень.
Розподілені обчислення Навчання в Deeplearning4j здійснюється через кластери. Нейронні мережі навчаються паралельно з застосуванням ітерації, процес підтримується архітектурою Hadoop-YARN та Spark. Deeplearning4j здійснює також інтеграцію з ядром архітектури CUDA для проведення чистих операцій з GPU і розподілу операцій на графічних процесорах.
Наукові розрахунки для JVM Deeplearning4j включає клас для роботи з -вимірним масивом даних у бібліотеці ND4J. Це полегшує обчислення для наукових задач мовами Java і Scala, функціональність при цьому подібна до функціональності, яку бібліотека NumPy забезпечує для мови Python. Ефективність у практичних застосуваннях досягається завдяки використанню бібліотек лінійної алгебри і матричних перетворень.
Бібліотека векторизації DataVec для машинного навчання Бібліотека DataVec проводить векторизацію файлів різних вхідних і вихідних форматів методом, подібним до MapReduce; при цьому дані перетворюються у векторну форму. DataVec векторизує табличний формат CSV, зображення, звуки, тексти, відео і часові послідовності даних.
Обробка природної мови і текстів Для обробки великих обсягів текстів з використанням потужності паралельних графічних процесорів Deeplearning4j залучає інструментарій векторного і тематичного моделювання мовою Java.
Бібліотека містить реалізації частотної інверсії (TF-IDF), глибоке навчання, алгоритм Міколова word2vec, doc2vec, і GloVe, оптимізовані на Java. При цьому використовується принцип стохастичного вбудовування сусідів з розподілом Стьюдента (t-SNE) для реалізації хмари слів.
Безпека У бібліотеку додано засоби захисту від зовнішнього втручання і безпеки від злому, що особливо важливо у фінансових задачахhttps://skymind.ai/bsa-aml, у промислових системах, в електронній комерції та підприємництві, застосовується розпізнавання аномалій і розпізнавання образівhttps://skymind.ai/image. Deeplearning4j інтегрований з іншими платформами машинного навчання — такими як RapidMiner, Prediction.io і Weka.
Тести продуктивності Зіставлення продуктивності показує, що Deeplearning4j можна порівняти з Caffe в задачах нетривіального розпізнавання образів із залученням паралельних графічних процесорів. Для програмістів, які незнайомі з HPC на JVM, є кілька параметрів, які можна регулювати для поліпшення продуктивності навчання нейронних мереж. Серед них — налаштування динамічної пам'яті, алгоритм збирання сміття, підкачка пам'яті і попереднє збереження даних для прискорення ETL. Комбінуючи ці налаштування, можна збільшити продуктивність Deeplearning4j до десяти разів.
Примітки
Див. також Порівняння програмного забезпечення глибокого навчання
Література
Посилання