1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/sjsdfg-dl4j-tutorials

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 16 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 09:21 9467dde

Модель обучения с ранним прерыванием

  1. Создание ModelSaver

Используется для указания местоположения лучшей сохранённой модели во время процесса обучения:

  • InMemoryModelSaver — используется для сохранения в памяти;
  • LocalFileModelSaver — применяется для сохранения в локальном каталоге, может сохранять только результаты сети MultiLayerNetwork;
  • LocalFileGraphSaver — также используется для сохранения в локальный каталог, но может сохранять результаты только сети ComputationGraph.
  1. Настройка параметров обучения с ранним прерыванием

Включает следующие пункты:

  • epochTerminationConditions — условия завершения обучения;
  • evaluateEveryNEpochs — количество эпох, через которые проводится оценка модели;
  • scoreCalculator — калькулятор оценки модели:
    • org.deeplearning4j.earlystopping.scorecalc.RegressionScoreCalculator — используется для расчёта баллов регрессии;
    • ClassificationScoreCalculator — применяется для расчёта баллов классификации;
  • modelSaver — место хранения модели;
  • iterationTerminationConditions — контроль на каждой итерации.
  1. Получение информации о раннем прерывании
//Conduct early stopping training:
EarlyStoppingResult result = trainer.fit();
System.out.println("Termination reason: " + result.getTerminationReason());
System.out.println("Termination details: " + result.getTerminationDetails());
System.out.println("Total epochs: " + result.getTotalEpochs());
System.out.println("Best epoch number: " + result.getBestModelEpoch());
System.out.println("Score at best epoch: " + result.getBestModelScore());

//Print score vs. epoch
Map<Integer,Double> scoreVsEpoch = result.getScoreVsEpoch();
List<Integer> list = new ArrayList<>(scoreVsEpoch.keySet());
Collections.sort(list);
System.out.println("Score vs. Epoch:");
for( Integer i : list){
    System.out.println(i + "\t" + scoreVsEpoch.get(i));
}

Перенос обучения

  1. Получение существующей сетевой структуры
  // 构造数据模型
ZooModel zooModel = VGG16.builder().build();
ComputationGraph vgg16 = (ComputationGraph) zooModel.initPretrained();
  1. Изменение гиперпараметров модели
  • updater;
  • скорость обучения;
  • случайное число для воспроизведения модели.
FineTuneConfiguration fineTuneConf = new FineTuneConfiguration.Builder()
                 .updater(new Nesterovs(0.1, 0.9))
                 .seed(123)
                 .build();
  1. Изменение архитектуры сети

3.1 setFeatureExtractor — используется для определения слоя ниже которого слои не замораживаются.

3.2 Структурные изменения:

  • обычно аномалии формы возникают только между слоями сети;
  • необходимо настроить структуру и параметры сети в соответствии с аномалиями;
  • используются removeVertexKeepConnections и addLayer или addVertex для изменения структуры сети.

Создание собственного слоя GRU

На основе формулы прямого распространения GRU выводится формула обратного распространения и реализуется в dl4j.

Интеграция модели обучения DL4J с веб-приложением

Для интеграции модели обучения Deep Learning for Java (DL4J) с веб-проектом можно использовать следующие ресурсы:

Глубокое обучение: коррекция изображений, YOLO и Tesseract OCR

Видеоматериалы доступны по адресу: https://tianchi.aliyun.com/forum/videoStream.html#postsId=5312, а исходный код видео находится на GitHub: https://github.com/awaymeet/tesseract.

Распознавание лиц

Ресурсы для распознавания лиц:

Параметры совместного использования

StackVertex используется для совместного использования параметров. Математическое доказательство доступно в статье «DeepLearning4j's StackVertex реализует совместное использование параметров» (https://blog.csdn.net/pangerry/article/details/90814970).

MergeVertex похож на StackVertex, но отличается способом объединения: Merge объединяет вдоль dimension=1, а Stack — вдоль dimension=0. Объединение вдоль dimension=0 имеет преимущество в том, что независимо от длины первого измерения, форма весов не изменяется, и при обратном вычислении градиента она равна сумме градиентов, полученных от всех входных данных. Поэтому достаточно использовать StackVertex для объединения нескольких входов, затем добавить произвольные слои нейронной сети, такие как DenseLayer, LSTM и ConvLayer, и, наконец, использовать UnstackVertex для разделения выходных данных.

Математическое обоснование совместного использования параметров с помощью StackVertex представлено в статье, предоставленной @Gerry. Оно объясняет, почему StackVertex может реализовать совместное использование параметров только путём объединения.

Конкурс Tianchi — прогноз промышленного парового объёма

Информация о конкурсе доступна по ссылке: https://tianchi.aliyun.com/competition/entrance/231693/introduction?spm=5176.12281949.1003.9.493e4c2apzwdri.

Предыстория

Основной принцип работы электростанции заключается в нагреве воды за счёт сжигания топлива, что приводит к образованию пара высокого давления и температуры. Этот пар используется для вращения паровой турбины, которая, в свою очередь, приводит в движение генератор, вырабатывающий электроэнергию. В этом процессе ключевым фактором, влияющим на эффективность выработки электроэнергии, является эффективность сгорания в котле, определяемая такими параметрами, как расход топлива, первичный и вторичный воздух, дутьё, возврат и подача воды. Также на эффективность котла влияют его рабочие условия, такие как температура и давление в топке, температура перегревателя и давление.

Цель

Используя данные датчиков из предварительно обработанного котла, предсказать объём производимого пара.

Рекомендательная система

Рекомендации основаны на следующих ресурсах:

Ссылки:

  1. Прямая трансляция реализации видео на YouTube (с лестницей).
  2. Реализация механизмов внимания NLP с DeepLearning4j (перемещено в bilibili).
  3. Исходный код Attention.
  4. Механизмы внимания (Enterprise AI Virtual Meetup).pdf.

GAN

  • Использование MNIST в примере GAN (предоставлено участниками группы @城枫林 и @liweigu).
  • Gan_deeplearning4j.
  • Как использовать Deeplearning4j для реализации GAN.

Создание собственного поискового ИИ-движка для изображений

Участник группы @射水鱼 написал книгу «Создание собственного поискового ИИ-двигалка для изображений» с использованием DeepLearning4j. В книге подробно рассказывается о принципах и реализации основных компонентов поисковых систем для изображений, а также приводится пошаговое руководство по созданию веб-поисковика для изображений на основе глубокого обучения. Каждая глава содержит описание соответствующих теорий и методов, а также примеры кода на Java с подробными комментариями.

Книга доступна по адресу https://www.epubit.com/book/detail/30316, исходный код — по адресу https://box.lenovo.com/l/LHh2vR (пароль: 1aaa).

Если в проекте отсутствуют зависимости, загрузите следующие jar-файлы:

— TarsosLSH-0.9 доступен для скачивания по ссылке https://pan.baidu.com/s/1sbmvbkab6K5tRF92U-ItHw (код извлечения: 88qv). — Также можно скачать TarsosLSH с GitHub и скомпилировать самостоятельно.

Для локального импорта jar-файлов используйте область видимости system или установите их в локальном репозитории Maven с помощью команды:

mvn install:install-file -Dfile=/path/to/jar -DgroupId=be.tarsos -DartifactId=TarsosLSH -Dversion=0.9 -Dpackaging=jar

Усиленное обучение RL4j

Источники:

  1. Статья на платформе jianshu.
  2. Код на gitee.

Открытые проекты Deeplearning4j

  1. ScalphaGoZero: независимая реализация DeepMind's AlphaGoZero на Scala с использованием Deeplearning4J (DL4J).
  2. YOLO для обнаружения объектов в реальном времени — Magic Cube.
  3. PhotoLabeller: Android-клиент для распределённого обучения на Kotlin.
  4. Real-time Sudoku Solver: решение судоку с DL4J.
  5. Kafka Streams Machine Learning Examples: машинное обучение с Kafka.
  6. Textdigester: DL4J для обобщения документов.

Получение последних версий Deeplearning4j (Snapshots And Daily Builds)

Источники:

  1. https://deeplearning4j.org/docs/latest/deeplearning4j-config-snapshots

Настройка файла pom.xml:

<repositories>
    <repository>
        <id>snapshots-repo</id>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>  <!-- Optional, update daily -->
        </snapshots>
    </repository>
</repositories>

Автоматическое получение обновлений компиляции jar-пакетов от skymind.

Чтение данных из Spark

  1. https://github.com/deeplearning4j/dl4j-examples/issues/689
  2. Руководство по конвейерам данных Spark.
  3. Руководство по обучению Spark.
ok, so there's 2 ways
(a) use SparkContext.parallelize (that's a standard spark op) - easy but bad performance (all preprocessing happens on master)
(b) write a better data pipeline that does the proper reading + conversion in parallel

Проекты, которыми поделились участники группы

  1. Извлечение и обучение на основе dl4j для быстрого получения трёх результатов: https://github.com/awaymeet/lottery_kuai_san/tree/master.

  2. Открытый проект по изучению SpringCloud, Deeplaring4j и IBM Watson: https://github.com/JamesZow/Spring-Cloud-Project.

  3. Демо-версия OCR на основе CNN+RNN+CTC: https://github.com/WuWei1986/dl4j-ocr-demo.

  4. Зародыш фреймворка нейронной сети с полным соединением слоёв: https://github.com/woshiyigebing/my_dl4j. # Дополнительные ресурсы

  5. Сборник высококачественных наборов данных для машинного обучения.

  6. Обработка китайского открытого корпуса диалогов.

  7. GitXiv: только статьи с открытым исходным кодом, который можно воспроизвести.

  8. Papers with code — статьи и коды.

  9. Hadoop-winutils — предоставляет файлы hadoop.dll и winutils.exe для работы с Hadoop на платформе Windows. Это упрощает запуск Spark-local в Windows.

  10. Глубокое обучение: теория и практика. Расширенное издание.

  11. Tablesaw — библиотека Java для работы с фреймами данных и визуализации. Предоставляет функции, аналогичные Pandas и Matplot в Python.

  12. Повышение интерпретируемости машинного обучения.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/sjsdfg-dl4j-tutorials.git
git@api.gitlife.ru:oschina-mirror/sjsdfg-dl4j-tutorials.git
oschina-mirror
sjsdfg-dl4j-tutorials
sjsdfg-dl4j-tutorials
master