汉智
Цель проекта — разработать набор простых, эффективных, гибких, удобных и расширяемых инструментов машинного обучения, которые лучше подходят для изучения и использования китайскими пользователями. В настоящее время набор включает:
Компиляция и установка
Windows:
Используйте VS2013 для непосредственного открытия win/HanZhi.sln. Если вы хотите запустить примеры, вам нужно вручную добавить соответствующие файлы в проект.
Кроме того, CBLAS (например, OpenBLAS-0.3.0) рекомендуется перекомпилировать на вашем устройстве.
Linux:
Вы можете выполнить make && make install для компиляции и установки. make может иметь следующие параметры:
1. USE_CBLAS=y указывает на использование CBLAS.
2. PREFIX=каталог HanZhi используется для указания каталога установки HanZhi.
3. cbals=каталог CBLAS используется для указания каталога CBLAS (необходимо установить заранее).
Если вы используете BLAS для ускорения, необходимо установить CBLAS заранее (например, OpenBLAS-0.3.0), а затем добавить USE_CBLAS=y при выполнении make.
Кодировщик векторов слов
W2V основан на word2vec и был переработан и оптимизирован по скорости. Алгоритм и параметры W2V такие же, как у оригинального word2vec, но после оптимизации структура W2V стала более чёткой, а скорость увеличилась более чем в два раза.
Использование: создайте новый объект W2V, затем передайте основной параметр методу run. Вы можете обратиться к samples/w2v/testw2v_en.cpp. Параметры совместимы с word2vec. Кроме того, предоставляются китайские параметры. Подробную информацию о памяти можно найти в «doc/W2V 参数.txt».
Пример:
./w2v -train text8 -filetype en -output text8_vec -cbow 1 -size 200 -window 8 -negative 25 -hs 0 -sample 1e-4 -iter 15
./w2V -输入 text8 -文本格式 英文 -输出 text8_vec -填空 1 -词向量长 200 -窗口大小 8 -负样本数 25 -分层训练 0 -采样丢弃高频词系数 1e-4 -迭代次数 15
Приведённые выше две формы записи имеют одинаковый эффект.
Нейронные сети
В основе нейронных сетей HanZhi лежит вычислительный граф. В настоящее время поддерживается только вычисление на CPU. Скорость локального тестирования выше, чем у TensorFlow (использование CBLAS для обучения mnist может ускорить процесс в 1 раз и более).
Структура: состоит из шести основных модулей: вычислительного графа, узла графа, класса данных, размера данных, исполнителя и тренера.
Процесс использования:
Пример создания DNN-сети:
addNode("输入", WaitInput, "尺寸:30,100"); // Добавляем узел с именем «ввод», который ожидает ввода данных. Размерность: 30, 100 означает, что размер пакета равен 30, а длина вектора равна 100.
addNode("权重", Random, "尺寸:20,100;标准差:0.1"); // Добавляем узел с именем «вес», который является случайным числом. Используется случайное число со стандартным отклонением 0,1 для инициализации.
addNode("偏置", FixedVal, "尺寸:20;值:0.1"); // Добавляем узел с именем «смещение», которое является фиксированным значением. Начальное значение равно 0,1.
addNode("输出", mul2d, NULL, "输入,权重,偏置"); // Добавляем двумерный умножающий узел с именем «вывод». Для получения подробной информации о двумерном умножении обратитесь к «doc/神经网络.txt».
Пример создания CNN-сети:
addNode("输入", WaitInput, "尺寸:0,128,128,3"); // Добавляем узел с именем «вход», который ожидает ввода данных. Размеры: 0, 128, 128, 3 означают, что количество пакетов может варьироваться, размер одной картинки составляет 128 x 128 пикселей, а глубина равна 3.
addNode("卷积核", Random, "尺寸:10,7,7,3;标准差:0.1"); // Добавляем узел с именем «ядро свертки», который является случайным числом. Используем случайное число со стандартным отклонением 0,1 для инициализации.
addNode("偏置", FixedVal, "尺寸:10;值:0.1"); // Добавляем узел с именем «смещение», который является фиксированным значением. Начальное значение равно 0,1.
addNode("卷积", Conv2d, "补白:是;步长:2,2", "图像输入,卷积核1,偏置1"); // Добавляем двумерный сверточный узел с именем «свертка». Таким образом, можно создать слой свертки.
Вычислить значение узла:
Actuator *actuator1 = new Actuator(); // Определяем исполнителя.
actuator1->cal("卷积"); // Вычисляем значение узла с именем «свертка».
Тренировка сети:
Actuator *actuator1 = new Actuator(); // Определяем исполнителя.
AdamTrainer *_trainer = new AdamTrainer("卷积"); // Определяем тренера.
actuator1->train(_trainer); // Тренируем.
Сохранить данные, загрузить данные:
saveData("model", 1); // Сохраняем данные.
loadData("model", 1); // Загружаем данные.
Полный пример обучения рукописных цифр можно посмотреть в samples/nn/mnist.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )