Список форумов neuroproject.ru neuroproject.ru
Форум сайта компании НейроПроект
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

FANN --- библиотека для работы с многослойными перцептронами
На страницу 1, 2  След.
 
Начать новую тему   Ответить на тему    Список форумов neuroproject.ru -> Нейронные сети
Предыдущая тема :: Следующая тема  
Автор Сообщение
DmitryShm
Участник форума
Участник форума


Зарегистрирован: 09 Апр 2006
Сообщения: 63
Откуда: Россия, Казань

СообщениеДобавлено: Пн Фев 09, 2009 3:59 pm    Заголовок сообщения: FANN --- библиотека для работы с многослойными перцептронами Ответить с цитатой

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

Можно отметить несколько библиотек, которым я посвятил большее время: jneural, lwnn и fann. Из них выбрал FANN, как наиболее подходящую под основные требования. Я согласен с выводами, которые сделал автор FANN в документации по библиотеке. Он честно сравнивал ее с этими библиотеками.

Вообще Steffen Nissen провел внушительную работу над своей библиотекой, и я думаю, что она достойна того, чтобы прирастать пользовательским фидбеком и прочей помощью от интернет-сообщества.

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

Попросту говоря, предлагаю помощь в быстром освоении FANN в решении вашей простой задачи (для реально сложных у меня и самого пока теоретических знаний нет).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Finder
Новый посетитель
Новый посетитель


Зарегистрирован: 09 Июл 2007
Сообщения: 20

СообщениеДобавлено: Пн Фев 09, 2009 10:12 pm    Заголовок сообщения: Ответить с цитатой

А можно оценить насколько быстрее работа с этой библиотекой и вообще C++ по сравнению с аналогом в VBA (VB6) ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DmitryShm
Участник форума
Участник форума


Зарегистрирован: 09 Апр 2006
Сообщения: 63
Откуда: Россия, Казань

СообщениеДобавлено: Вт Фев 10, 2009 5:26 am    Заголовок сообщения: Ответить с цитатой

Можно, но лично я этим скорее всего заниматься никогда не буду. FANN можно будет "обучить" работе с VB только после создания соответствующего COM-интерфейса активных объектов для FANN. Сами накладные затраты на передачу данных могут обернуться потерей скорости. Хотя это уже сильно зависит от требований к конкретному приложению.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Victor G. Tsaregorodtsev
Эксперт
Эксперт


Зарегистрирован: 28 Июн 2005
Сообщения: 248
Откуда: Красноярск

СообщениеДобавлено: Вт Фев 10, 2009 5:28 pm    Заголовок сообщения: Ответить с цитатой

Finder

Если у васика псевдокомпилятор, то, наверно, раз в 20-25. Я подобные цифры ускорения получал при переносе "мозгов" советника в МетаТрейдере (есть такой распространенный торговый терминал для Форекса) с околоСишного языка МетаТрейдера в реальную внешнюю скомпилированную С-компилятором dll-библиотеку. Язык (С или Бэйсик) тут особо роли не играет - играет роль относительная скорость исполнения скомпилированного кода или скорость интерпретации исходного или псевдокомпилированного кода.
Т.е., если у ВБ псевдокомпилятор, то скорость будет поменьше на порядок (раз в десять и более, но вряд ли в 100), а если реальный компилятор, то, наверно, будет сравнима со скоростью работы прог после трансляторов с борландовскими корнями (Делфи и С++Билдер) и раза в 2-3 проигрывать хорошо оптимизирующим Сишным компиляторам типа интеловского, майкрософтовского или гнусного.
Хотя, конечно, и в С/С++ можно наворотить так, что все возможности оптимизации математики будут угроблены на корню (если все синапсы делать классами-объектами, то фиг используешь векторизацию вычислений с помощью SSEx-команд, и накладные расходны на вызовы методов будут сильно большие).
_________________
neuropro.ru - нейронные сети, анализ данных, прогнозирование
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Finder
Новый посетитель
Новый посетитель


Зарегистрирован: 09 Июл 2007
Сообщения: 20

СообщениеДобавлено: Вт Фев 10, 2009 8:21 pm    Заголовок сообщения: Ответить с цитатой

Заявлен VB6 в MS ACCESS как компилятор, но сомнения имеются.
Поэтому хочу тестовые програмки сравнить для разных языков, чтобы если реально на порядок можно скорость нарастить, то всю вычислялку буду осваивать на С++ или Delphi. Но это надо проверить "на пальцах".
Сетки модульные. Описаны в VB как вложенные массивы типов сеть-слой-нейрон-связь. Соотв. пробег по ним идет по вложенным циклам.
Быстродействие на 99,99 % зависит только от скорости прямого счета сети - это проверено.


DmitryShm

Задача обучения сети автономна. Все данные можно передавать туда-сюда простым .txt Необязательно коннектить C и VBA в памяти.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DmitryShm
Участник форума
Участник форума


Зарегистрирован: 09 Апр 2006
Сообщения: 63
Откуда: Россия, Казань

СообщениеДобавлено: Вт Фев 10, 2009 8:41 pm    Заголовок сообщения: Ответить с цитатой

Для VB6 эта библиотека не писалась.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Finder
Новый посетитель
Новый посетитель


Зарегистрирован: 09 Июл 2007
Сообщения: 20

СообщениеДобавлено: Сб Фев 14, 2009 3:33 am    Заголовок сообщения: Ответить с цитатой

Ну вот провел тестики. Компилятор Dev-C++ обогнал VBA на простейших вложенных циклах ровно в 6,2 раза! И как теперь именовать VB6? Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DmitryShm
Участник форума
Участник форума


Зарегистрирован: 09 Апр 2006
Сообщения: 63
Откуда: Россия, Казань

СообщениеДобавлено: Вс Фев 15, 2009 12:15 am    Заголовок сообщения: Ответить с цитатой

Можно еще долото с топором сравнивать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Finder
Новый посетитель
Новый посетитель


Зарегистрирован: 09 Июл 2007
Сообщения: 20

СообщениеДобавлено: Вс Фев 15, 2009 4:17 am    Заголовок сообщения: Ответить с цитатой

А вот и не совсем так. Исправил ошибочку в тестах и добавил математику+преобразование типов -> во вложенные циклы.
Компилятор GCC из последних. Оболочка wxDev-C++
Результат - выигрыш только ровно в 2 раза!
Прогоню далее работу с массивами на циклах с математикой и если результат будет таким же - смысла переходить на C нет. Раз в 5-10 был бы.
Victor как в воду глядел.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
NeuroB
Участник форума
Участник форума


Зарегистрирован: 18 Мар 2009
Сообщения: 49

СообщениеДобавлено: Сб Мар 21, 2009 3:47 pm    Заголовок сообщения: Ответить с цитатой

Скажите пожалуйста, а какой интерес вообще VB вызывает к программированию более-менее серьёзных проектов?
Нежелание освоить другие, серьёзные языки (С, Ява,..) или какой-то скрытый смысл в использовании VB в таких задачах всё же присутствует? Smile

Victor G. Tsaregorodtsev
Вы пишете программы под конкретный процессорную архитектуру?
Насколько я помню SSE (первый) поддерживался как Pentium-3, так и AMD (тут если я не ошибаюсь, АМД слизало эти команды у p-3 в то время), а затем их пути разошлись уже с SSE2 (p-4).
Хотя да.. кому АМД нужен для выполнения сложный вычислений Laughing


Последний раз редактировалось: NeuroB (Сб Мар 21, 2009 4:05 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Finder
Новый посетитель
Новый посетитель


Зарегистрирован: 09 Июл 2007
Сообщения: 20

СообщениеДобавлено: Сб Мар 21, 2009 4:02 pm    Заголовок сообщения: Ответить с цитатой

VB (VBA) используется как основной язык работы с базами данных в MS ACCESS. Поэтому его можно очень эффективно использовать для задач, требующих не более (примерно) миллиона записей в одном файле. Плюс полная интеграция в MS Office. Т.е. соединение математики и СУБД в одном флаконе. Для меня это было главным критерием, когда выбирал платформу в конце 90-х. На C программировал раньше. Это конечно более изящная штука, но интеграции с субд не было.
По производительности как оказалось нынешний VBA равен Visual C и только в 2-3 раза уступает "крутым" C компиляторам. Таким образом при критической важности времени счета (особливо для НС) вопрос можно просто решить за счет железа.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
NeuroB
Участник форума
Участник форума


Зарегистрирован: 18 Мар 2009
Сообщения: 49

СообщениеДобавлено: Сб Мар 21, 2009 4:07 pm    Заголовок сообщения: Ответить с цитатой

Finder писал(а):
VB (VBA) используется как основной язык работы с базами данных в MS ACCESS. Поэтому его можно очень эффективно использовать для задач, требующих не более (примерно) миллиона записей в одном файле. Плюс полная интеграция в MS Office. Т.е. соединение математики и СУБД в одном флаконе. Для меня это было главным критерием, когда выбирал платформу в конце 90-х. На C программировал раньше. Это конечно более изящная штука, но интеграции с субд не было.
По производительности как оказалось нынешний VBA равен Visual C и только в 2-3 раза уступает "крутым" C компиляторам. Таким образом при критической важности времени счета (особливо для НС) вопрос можно просто решить за счет железа.

А почему не использовать другую СУБД? Фришный MySQL например.. Он разве заметно уступает MS ACCESS? (честно говоря, не знаю, поэтому и спрашиваю Smile ).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DmitryShm
Участник форума
Участник форума


Зарегистрирован: 09 Апр 2006
Сообщения: 63
Откуда: Россия, Казань

СообщениеДобавлено: Сб Мар 21, 2009 4:09 pm    Заголовок сообщения: Ответить с цитатой

Для С\С++ есть API для работы с базами данных: DAO. Существует уже давно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Victor G. Tsaregorodtsev
Эксперт
Эксперт


Зарегистрирован: 28 Июн 2005
Сообщения: 248
Откуда: Красноярск

СообщениеДобавлено: Сб Мар 21, 2009 5:32 pm    Заголовок сообщения: Ответить с цитатой

NeuroB писал(а):

Вы пишете программы под конкретный процессорную архитектуру?


Нет, я до сих пор сижу преимущественно на С++Билдер версий 3 и 6, которые SSE пользоваться не умеют. Т.е. проги скорее всего пойдут и на первом пне.
Если бывает нужна скорость - то профилировщик в руки и смотрю самые узкие места, которые затем оптимизирую (например, вручную на ассемблере). Но поскольку сильно ООП я на самых глубоких уровнях абстракции не увлекаюсь (классы-объекты у меня - сети, а не их слои, отдельные нейроны или не дай бог синапсы), то вся нейроматематика у меня реализуется преимущественно послойно через обычные векторно-матричные операторы (матрично-векторное произведение, векторно-матричное произведение, тензорное произведение векторов, сложение векторов,...), хорошо оптимизированных библиотек работы с которыми в мире куча, в т.ч. и под самые свежие процы.
_________________
neuropro.ru - нейронные сети, анализ данных, прогнозирование
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
NeuroB
Участник форума
Участник форума


Зарегистрирован: 18 Мар 2009
Сообщения: 49

СообщениеДобавлено: Сб Мар 21, 2009 6:00 pm    Заголовок сообщения: Ответить с цитатой

Понятно. Я просто подумал, что Вы всё подряд пишете через SSE и асм Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
nemezis
Участник форума
Участник форума


Зарегистрирован: 04 Мар 2009
Сообщения: 34

СообщениеДобавлено: Вс Мар 22, 2009 2:31 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
Попросту говоря, предлагаю помощь в быстром освоении FANN в решении вашей простой задачи

мне нужно написать НС для распознование символов (вероятнее всего цифер), в начале хотел сам написать мини библиотеку, изучил теорию по теме, вроде все понятно, вроде несложно, сел реализовывать и понял что немогу Sad, вот проста немогу и все. Огорчился сильно. Наткнулся на эту тему.
Если несложно помогите Smile
какую версию лучьше качать 2.0 или 2.1 beta ?, как я понял дока тока англ., может у вас есть какиенибуть наработки перевода ее ?
Вот на этом сайте http://www.orc.ru/~stasson/neurox.html в разделе
Цитата:
Нейронные сети: алгоритм обратного распространения
В статье рассмотрен алгоритм обучения нейронной сети с помощью процедуры обратного распространения, описана библиотека классов для С++

не эта библиотека описана ? А описаная там библиоткека работоспособна, там прота неуказано что эта за библиотека и где можно скачать, но по функциональности она простая и подходит моей задачи, чего незнаю на счет производительности.

я так думаю FANN на MVS2008 небудет работать ? [/b]
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DmitryShm
Участник форума
Участник форума


Зарегистрирован: 09 Апр 2006
Сообщения: 63
Откуда: Россия, Казань

СообщениеДобавлено: Вс Мар 22, 2009 2:56 pm    Заголовок сообщения: Ответить с цитатой

Там описана не та библиотека, если это вообще можно считать за описание. Вообще FANN --- мультиплатформенная библиотека, и ее можно использовать в проектах MSVS2008. Задавайте конкретные вопросы, но для начала прочитайте документацию.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
nemezis
Участник форума
Участник форума


Зарегистрирован: 04 Мар 2009
Сообщения: 34

СообщениеДобавлено: Вс Мар 22, 2009 8:10 pm    Заголовок сообщения: Ответить с цитатой

непонял как работает констуктор fann_create_sparse

fann_get_total_neurons, выводит общее число нейронов, как на сайте написано для сети 2-4-2 выведет 2+4+2+2(bias), отсюда встает вопрос, почему 2bias нейрона, и почему это вообще нейроны ? этоже вроде должна быть свободная связь у нейрона на которую всегда поступает сигнал +1. В их стандартном каструкторе сказано про это, но от туда я подумал что они для каждого нейрона из скрытого слоя делают связь с постоянням нейроном выходное значение которого равно +1, но теперь непонятно какже это у них реализовано.
Возможно так: на каждом слое кромы выходного они добавляют по 1 нейрону связаный со всеми нейронами след. слоя, и значение этого нейрона всегда +1. Так ?

а что делает метод fann_get_connection_rate
(Get the connection rate used when the network was created) непонимаю
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DmitryShm
Участник форума
Участник форума


Зарегистрирован: 09 Апр 2006
Сообщения: 63
Откуда: Россия, Казань

СообщениеДобавлено: Вс Мар 22, 2009 9:02 pm    Заголовок сообщения: Ответить с цитатой

fann_get_connection_rate возвращает связность МНС. Бывают полносвязные МНС, где каждый нейрон слоя связан с каждым нейроном предыдущего слоя, но можно указать параметр связности сети, и тогда fann создаст сеть, где каждый нейрон слоя будет связан не со всеми нейронами предыдущего слоя. Как это реализовано в деталях я не знаю, т.к. не пользовался этим.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Finder
Новый посетитель
Новый посетитель


Зарегистрирован: 09 Июл 2007
Сообщения: 20

СообщениеДобавлено: Вс Мар 22, 2009 9:27 pm    Заголовок сообщения: Ответить с цитатой

NeuroB писал(а):

А почему не использовать другую СУБД? Фришный MySQL например.. Он разве заметно уступает MS ACCESS? (честно говоря, не знаю, поэтому и спрашиваю Smile ).


И я не знаю Smile
Просто давно выбрал платформу и не копал остальные. Сейчас масса возможностей - главное, чтобы инструментарий точно соответствовал задаче.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов neuroproject.ru -> Нейронные сети Часовой пояс: GMT + 4
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Rambler's Top100 Rambler's Top100