Форум программистов, компьютерный форум, киберфорум
Искусственный интеллект
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.98/103: Рейтинг темы: голосов - 103, средняя оценка - 4.98
14 / 12 / 3
Регистрация: 20.02.2018
Сообщений: 445
1

Библиотеки C# для создания и обучения нейронной сети

26.10.2018, 16:33. Показов 21168. Ответов 26

Доброго времени суток!

Подскажите пожалуйста есть ли на C# нормальные библиотеки для написания и обучения нейронной сети для решения задачи регрессии?

Если да, то скажите какие и где про них можно почитать или посмотреть видео.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2018, 16:33
Ответы с готовыми решениями:

Алгоритмы оптимизации для обучения нейронной сети
Всем привет! Обращаюсь за помощью к людям, имеющим практический опыт программирования нейронных...

Сегментация изображения для обучения нейронной сети
Здравствуйте. Я разрабатываю нейронную сеть для диагностики двигателя автомобиля по...

Выборка русских символов алфавита для обучения нейронной сети.
Ищу большую выборку! Срочно!

Функция обучения нейронной сети
добрый день. «TRAIN вызывает функцию, которая задается NET.trainFcn, использующую параметры...

26
-21 / 30 / 1
Регистрация: 25.04.2017
Сообщений: 356
26.10.2018, 16:38 2
Вот это попробуйте посмотреть:
https://www.microsoft.com/en-us/cognitive-toolkit/
https://azure.microsoft.com/en... ng-studio/
2
14 / 12 / 3
Регистрация: 20.02.2018
Сообщений: 445
26.10.2018, 17:26  [ТС] 3
Цитата Сообщение от Ermit Посмотреть сообщение
Вот это попробуйте посмотреть:
Бегло прочитав заметил (не совсем понял библиотека ли это или что-то другое), что всё-таки это для питона, они на него там везде ссылаются. А у меня учебный проект на C# (с питоном вообще никогда дела не имел), поэтому нужна именно C# библиотека, которую я бы мог подключить в своём проекте и использовать.
0
1160 / 1098 / 173
Регистрация: 19.02.2010
Сообщений: 3,270
26.10.2018, 21:40 4
Volodya_, aforge http://www.aforgenet.com/frame... works.html
До нормальной ей - как до Луны (пара видов нейронок 30летней давности), но таки на С#.
Сам ей не пользовался и не собираюсь (в т.ч. потому, что на С# не работаю) - все вопросы к автору на форум, если документации/примеров будет не хватать.
0
499 / 395 / 53
Регистрация: 20.09.2014
Сообщений: 2,406
27.10.2018, 07:23 5
Цитата Сообщение от Volodya_ Посмотреть сообщение
не совсем понял библиотека ли это или что-то другое
Microsoft Azure - это облачный сервис Майкрософта, то есть ваш код будет обрабатываться на удалённом сервере. Небесплатно конечно.
А вот по первой ссылке - это вроде продукт, не просто библиотечка.
0
-21 / 30 / 1
Регистрация: 25.04.2017
Сообщений: 356
29.10.2018, 00:59 6
Цитата Сообщение от Volodya_ Посмотреть сообщение
не совсем понял библиотека ли это или что-то другое
Я бы все-таки рекомендовал Вам разобраться с майкрософтовскими библиотеками/сервисами, чем использовать древний говнокод, ...
0
Эксперт .NET
5553 / 3605 / 1492
Регистрация: 09.05.2015
Сообщений: 8,660
29.10.2018, 01:35 7
https://github.com/dotnet/machinelearning
https://github.com/dotnet/machinelearning-samples
https://github.com/dotnet/infer
0
14 / 12 / 3
Регистрация: 20.02.2018
Сообщений: 445
29.10.2018, 10:05  [ТС] 8
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
До нормальной ей - как до Луны (пара видов нейронок 30летней давности), но таки на С#.
Сам ей не пользовался и не собираюсь (в т.ч. потому, что на С# не работаю) - все вопросы к автору на форум, если документации/примеров будет не хватать.
Да,смущает, что это неофициальная MS-ая библиотека, поэтому никаких гарантий её корректной работы

Добавлено через 1 минуту
Цитата Сообщение от Ermit Посмотреть сообщение
Я бы все-таки рекомендовал Вам разобраться с майкрософтовскими библиотеками
Это и хочу сделать, и именно с библиотекой, что бы я её мог встроить в свой проект

Добавлено через 2 минуты
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Microsoft Azure - это облачный сервис Майкрософта, то есть ваш код будет обрабатываться на удалённом сервере. Небесплатно конечно.
А вот по первой ссылке - это вроде продукт, не просто библиотечка.
Облачный сервис сразу отбрасываем, нужно что бы всё работало внутри моего проекта.
По поводу продукта не знаю можно ли как-то это будет встроить в проект

Добавлено через 3 минуты
Цитата Сообщение от Someone007 Посмотреть сообщение
Это официальные MS-ие библиотеки или написанные сторонними разработчиками?
0
Эксперт .NET
5553 / 3605 / 1492
Регистрация: 09.05.2015
Сообщений: 8,660
29.10.2018, 13:42 9
Цитата Сообщение от Volodya_ Посмотреть сообщение
Это официальные MS-ие библиотеки или написанные сторонними разработчиками?
Официальные.
1
11 / 20 / 3
Регистрация: 12.10.2015
Сообщений: 126
04.11.2018, 14:35 10
Цитата Сообщение от Volodya_ Посмотреть сообщение
Подскажите пожалуйста есть ли на C# нормальные библиотеки для написания и обучения нейронной сети для решения задачи регрессии?
уточните что конкретно вам нужно "для написания" или только для "обучения", так как это совсем разные вещи
Цитата Сообщение от Volodya_ Посмотреть сообщение
у меня учебный проект на C#
чему учитесь? писать что то типа
var predict = new Mlp(...).fit(X,Y).decide(x);
или хотите Mlp самому написать?
0
14 / 12 / 3
Регистрация: 20.02.2018
Сообщений: 445
04.11.2018, 16:24  [ТС] 11
Цитата Сообщение от сахатый Посмотреть сообщение
чему учитесь? писать что то типа
var predict = new Mlp(...).fit(X,Y).decide(x);
или хотите Mlp самому написать?
Есть БД с данными (температура, влажность, давление, осадки и изменение уровня снежного покрова), нужно написать нейронку, которая обучалась бы на основе этих данных и потом на оснований новых данных (температура, влажность, давление, осадки) предсказывала бы изменение уровня снежного покрова. Т.е. нужно для написания самой нейронки и механизма её обучения.
С математическим аппаратом - алгоритм backpropagation на основе градиентного спуска разобрался, но как это всё воплотить в код не представляю. Не знаю как мне в коде протестировать различные варианты активационной функции, что бы понять какая из них даёт наилучшее приближение. Ну и ещё кое-что... Поэтому решил найти уже готовую библиотеку, которая бы упростила это всё
0
11 / 20 / 3
Регистрация: 12.10.2015
Сообщений: 126
04.11.2018, 18:10 12
Цитата Сообщение от Volodya_ Посмотреть сообщение
Есть БД с данными (температура, влажность, давление, осадки и изменение уровня снежного покрова), нужно написать нейронку, которая обучалась бы на основе этих данных и потом на оснований новых данных (температура, влажность, давление, осадки) предсказывала бы изменение уровня снежного покрова. Т.е. нужно для написания самой нейронки и механизма её обучения.
В общем советую решить вначале задачу готовой библиотекой, aforge например, что посоветовал ув. VGT, а потом, если будет мотивация поупражнять мозг, можно и MLP самому закодить с нуля, там примерно 150 строк кода, но если без копипаста и подглядываний в чужой код, это может занять недели, но зато потом будете очень горды)))

PS: А можно на датасет ваш посмотреть, если это не закрытый проект конечно? Просто интересно насколько прогнозируемы такие данные.
1
14 / 12 / 3
Регистрация: 20.02.2018
Сообщений: 445
04.11.2018, 18:24  [ТС] 13
Цитата Сообщение от сахатый Посмотреть сообщение
В общем советую решить вначале задачу готовой библиотекой, aforge например, что посоветовал ув. VGT
Кто такой VGT?
aforge - это официальная MS-ая библиотека или написанная сторонними разработчиками?
MLP - это MS библиотека?
0
Эксперт .NET
5553 / 3605 / 1492
Регистрация: 09.05.2015
Сообщений: 8,660
04.11.2018, 18:52 14
Лучший ответ Сообщение было отмечено Volodya_ как решение

Решение

Цитата Сообщение от Volodya_ Посмотреть сообщение
aforge - это официальная MS-ая библиотека или написанная сторонними разработчиками?
Сторонними.

Не понятно чем вас ML.NET не устраивает, к ней даже несколько примеров идет для регрессии
https://github.com/dotnet/mach... Prediction
https://github.com/dotnet/mach... ashboardML
https://github.com/dotnet/mach... ringDemand
1
14 / 12 / 3
Регистрация: 20.02.2018
Сообщений: 445
04.11.2018, 19:09  [ТС] 15
Цитата Сообщение от Someone007 Посмотреть сообщение
Не понятно чем вас ML.NET не устраивает, к ней даже несколько примеров идет для регрессии
Я не говорил, что не устраивает. Если честно я ещё пока не разбирался в предложенных вариантах, поэтому большое спасибо за ссылки на примеры, они мне будут очень полезны.
0
11 / 20 / 3
Регистрация: 12.10.2015
Сообщений: 126
04.11.2018, 20:26 16
Лучший ответ Сообщение было отмечено Volodya_ как решение

Решение

Цитата Сообщение от Volodya_ Посмотреть сообщение
Кто такой VGT?
aforge - это официальная MS-ая библиотека или написанная сторонними разработчиками?
MLP - это MS библиотека?
VGT - VTsaregorodtsev(Царегородцев Виктор Геннадьевич http://neuropro.ru/about.shtml)
aforge - не MS, но она хороша тем что по человечески написана, без бесконечного наследования и ссылок на другие библиотеки, то есть можно даже разобраться что к чему))) Что вряд ли можно сказать про современные фрэймворки которые намеренно написаны типа "опен соурс" но хрен разберёшся, короче структурная обфускация, порой такой код не проще понять чем дезасемблированный.
1
499 / 395 / 53
Регистрация: 20.09.2014
Сообщений: 2,406
05.11.2018, 06:45 17
Цитата Сообщение от Volodya_ Посмотреть сообщение
Есть БД с данными (температура, влажность, давление, осадки и изменение уровня снежного покрова), нужно написать нейронку, которая обучалась бы на основе этих данных и потом на оснований новых данных (температура, влажность, давление, осадки) предсказывала бы изменение уровня снежного покрова. Т.е. нужно для написания самой нейронки и механизма её обучения.
С математическим аппаратом - алгоритм backpropagation на основе градиентного спуска разобрался, но как это всё воплотить в код не представляю. Не знаю как мне в коде протестировать различные варианты активационной функции, что бы понять какая из них даёт наилучшее приближение. Ну и ещё кое-что... Поэтому решил найти уже готовую библиотеку, которая бы упростила это всё
Забавно, но в моем проекте почти такие же исходные данные. Только задача несколько иного характера - прогнозирование температуры в помещении.
Что я хотел бы отметить? На мой взгляд, тот факт, что вы хотите построение модели полностью отдать на откуп статистическому обучению - это ошибка.
Высота снежного покрова довольно хорошо предсказуемая величина, можно выделить всего три-четыре фактора, которые ее определяют. Можно также разработать модель, в которой будут неизвестны лишь коэффициенты. И тогда вместо нейронок можно будет применить обычный линейный классификатор или даже просто решить систему линейных уравнений.
Основа модели: производная по времени высоты h снежного покрова равна линейной комбинации факторов.
dh/dt = k1 * factor1 + k2 * faktor2 + ...
Можете усложнить модель и сделать ее нелинейной правую часть. Но тогда все прелести линейных систем улетучатся.

Производная по времени вычисляется как изменение высоты h за час, сутки или неделю. То есть нужно сделать по два измерения h и тогда можете получить одно линейное уравнение. Если сделать больше измерений, то можно получить целую систему уравнений, решив которую, можно найти все неизвестные коэффициенты модели. Обязательно каждое новое уравнение получать при разных значениях факторов, иначе полученное уравнение будет коллинеарно предыдущему и не даст новой информации. Таким образом следует написать алгоритм, который из "скучного" датасета отберет моменты, когда наблюдается снегопад, экстремальные температуры, яркое солнце и т.п. Далее выбрать период относительно постоянного действия фактора и сделать измерения высоты h до действия фактора и после него.

Очень важно некоторые факторы предобработать: например, температуру сравнить с нулем:
temperature* = max(temperature,0)
Чтобы в вашей модели снег изменял свою высоту только при положительной температуре (таяние).

Уровень осадков предобработать с учетом знака температуры, если это еще не сделано (разделить фактор осадков на фактор мокрых осадков и фактор снега). Учтите, что плюс-минус 2 градуса вокруг нуля имеется неопределенность формы осадков.

Одни из промежуточных факторов - плотность и чистота снежного покрова. Плотный и чистый покров медленнее тает. Как вычислить эти факторы?

И прочие проблемы и вопросы.

Так что забудьте про нейронки и c#. Берите эксель, все в нем сделаете.
1
14 / 12 / 3
Регистрация: 20.02.2018
Сообщений: 445
05.11.2018, 10:28  [ТС] 18
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Так что забудьте про нейронки и c#. Берите эксель, все в нем сделаете.
Но у меня курсовая работа по C# )

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

Добавлено через 6 минут
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Производная по времени вычисляется как изменение высоты h за час, сутки или неделю. То есть нужно сделать по два измерения h и тогда можете получить одно линейное уравнение. Если сделать больше измерений, то можно получить целую систему уравнений, решив которую, можно найти все неизвестные коэффициенты модели. Обязательно каждое новое уравнение получать при разных значениях факторов, иначе полученное уравнение будет коллинеарно предыдущему и не даст новой информации. Таким образом следует написать алгоритм, который из "скучного" датасета отберет моменты, когда наблюдается снегопад, экстремальные температуры, яркое солнце и т.п. Далее выбрать период относительно постоянного действия фактора и сделать измерения высоты h до действия фактора и после него.
Вот это интересно, может быть получится это реализовать в C# с помощью алгоритма Гаусса.
0
499 / 395 / 53
Регистрация: 20.09.2014
Сообщений: 2,406
05.11.2018, 10:56 19
Начните в экселе, в нём проще анализировать результаты, строить графики. Затем перенесете в код на C#.

Меньше тыкайте наугад, попробуйте изучить процессы снегообразования. Я вам уже подсказал, что высота сугроба - это вещь интегральная от суммы факторов (или, что тоже самое, сумма факторов - это производная от высоты). То есть, когда факторы действуют, сугроб растёт или уменьшается, быстро или медленно. Неизвестно лишь, как быстро или как медленно растёт, то есть неизвестны постоянные (?) коэффициенты при факторах.
Решение системы линейных уравнений - это то, что вы можете быстро сделать, чтобы построить первую модель и обкатать её на реальных данных. Затем берите линейный регрессор и обучайте его. На входе линейного регрессора - факторы, на выходе производная высоты dh/dt.

Если солнечный фактор у вас не получается измерить, то добавьте факторы времени:
- количество дней от начала осени,
- количество дней от начала зимы,
- количество дней от начала весны.
Если осень, зима или весна не наступили, то количество дней считать равным нулю. Если осень, зима, весна закончились, то значение заморозить - ~90 дней.

Добавлено через 8 минут
Цитата Сообщение от Volodya_ Посмотреть сообщение
Вот это интересно, может быть получится это реализовать в C# с помощью алгоритма Гаусса.
Запросто. Но изящнее это сделать вычислением обратной матрицы и умножением матриц (матричный метод). Обязательно проверить систему уравнений на совместность (сравнить ранги матриц согласно теореме Кронекера-Капелли).

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

Добавлено через 4 минуты
Ой, извините, писал "линейный классификатор", а имел в виду линейную регрессию. Поправился.
0
14 / 12 / 3
Регистрация: 20.02.2018
Сообщений: 445
05.11.2018, 11:10  [ТС] 20
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Ой, извините, писал "линейный классификатор", а имел в виду линейную регрессию. Поправился.
Это оже нейронка решающая задачу регрессии?

Цитата Сообщение от Mikhaylo Посмотреть сообщение
Неизвестные коэффициенты, найденные методом решения системы уравнений, могут быть очень неточны, так как основаны на всего на нескольких измерениях, а в измерениях могут быть шумы. Поэтому линейный классификатор окажется гораздо точнее, так как он основывается на множестве измерений и минимизирует сумму квадратов разностей между измеренными и вычисленными значениями.
Не пойму вот чего, вот мы сперва рассчитали коэффициенты для нескольких различных ситуации - решили несколько таких систем, запомнили коэффициенты. А как мы это потом используем в линейном классификаторе? Или линейная регрессия у нас начинает расчет (обучение) коэффициентов при факторах с нуля?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2018, 11:10

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

Не работает процедура обучения нейронной сети
Здравствуйте! Я написал свой класс нейронной сети, но обучение по алгоритму обратного...

Как хранить веса связей многослойной нейронной сети после обучения?
Форумчане, здравствуйте! Подскажите пожалуйста как лучше хранить веса связей многослойной...

Нормализация данных для нейронной сети
У меня есть вопрос, как нормализовать данные для нейронной сети? Нейронная сеть и описание проблемы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru