Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Вниз

Потоки?   Найти похожие ветки 

 
Ломброзо ©   (2004-10-01 23:53) [0]

Пытаюсь смоделировать в графике распространение сигнала в простенькой (десяток тысяч элементов) однослойной нейронной сети (на вход периодически подаётся сигнал, распространяющийся по сети; каждый "нейрон" работает как сумматор, причём уровень выходного сигнала зависит как от суммы входных сигналов, так и от значения некоторой изменяющейся во времени функции).
Практически дело выглядит так: с суммацией сигнала на входе (дендритах) "нейрона" всё относительно просто, а вот с функцией... в конструкторе каждого "нейрона" мыслил создавать поток, который запускает расчёт функции (ну, к примеру, синуса или косинуса - непринципиально). Подозреваю, что от десятка тысяч потоков система просто сдохнет. Ещё не экспериментировал и даже не стану пробовать. Но рассчитывать свою функцию каждый "нейрон" должен сам.
Как бы это дело реализовать красиво и нересурсоёмко?


 
iZEN ©   (2004-10-02 00:01) [1]

Использовать пул потоков, например из 50 штук. Каждый поток берёт и исполняет функцию какого-то нейрона, завершает функцию, освобождается (не уничтожается, не выходит из метода execute(), а приостанавливается, спин-блокируется, в общем, аналогия на Java - wait()) и помещается обратно в пул, или если есть другие нейроны, обрабатывает их последовательно.

Хотя могла бы сработать цепочка подсоединения нитей join() (в Java), когда сигнал в нейронной сети имеет "волновой" характер.


 
Ломброзо ©   (2004-10-02 00:03) [2]

Вдогонку: где в Delphi размеры TLS задаются?


 
Игорь Шевченко ©   (2004-10-02 00:03) [3]


> Подозреваю, что от десятка тысяч потоков система просто
> сдохнет. Ещё не экспериментировал и даже не стану пробовать.


Правильно подозреваешь.


> Но рассчитывать свою функцию каждый "нейрон" должен сам.
>
> Как бы это дело реализовать красиво и нересурсоёмко?


fibers ?

Я надеюсь, они все не одновременно должны рассчитывать ?


 
Cobalt ©   (2004-10-02 00:06) [4]

Эээ, батенька, неужто не знаете, что нейронные сети аппартано делают? А моделируют - на кластерах? (в этом, правда, не уверен :))

А вообще, если боитесь потоков, то делайте поочерёдный обход списка нейронов  - каждый обход - такт.
На каждое действие - задержка в N тактов.
Перемещение сигналов от нейрона к нейрону - тут уже надо, наверное, выбирать направление обхода нейронов.
Или в такте будет 3 ступени -
1) занесение сигнала на входе "во входной буфер".
2) действие внутри нейрона
3) Выдача данных на "выход нейрона"


 
Игорь Шевченко ©   (2004-10-02 00:08) [5]


> Вдогонку: где в Delphi размеры TLS задаются?


TlsAlloc

The constant TLS_MINIMUM_AVAILABLE defines the minimum number of TLS indexes available in each process. This minimum is guaranteed to be at least 64 for all systems. The limits are as follows:

System Limit
Windows XP and Windows 2000 1088 indexes per process
Windows 98/Me 80 indexes per process
Windows NT and Windows 95 64 indexes per process

А глупый вопрос: А как Excel формулы в своих SpreadSheet"ах считает, тебе метод не подходит ? Последовательно...


 
Ломброзо ©   (2004-10-02 00:09) [6]

>Я надеюсь, они все не одновременно должны рассчитывать
У меня с математикой не совсем лады, потому объясню как умею :)

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

Вроде как сам на свой вопрос ответил.

Пойду про fibers читать.


 
Ломброзо ©   (2004-10-02 00:11) [7]

> как Excel формулы в своих SpreadSheet"ах
"аштойта" (ц)

Век живи - век учись (

---------
Всем большое спасибо!


 
Игорь Шевченко ©   (2004-10-02 00:17) [8]


> Пойду про fibers читать.


Я боюсь, что я несколько не подумав, предложил - это "мягкий" аналог потоков, без участия ядра, с самостоятельным переключением, реализуемым пользователем.


 
Ломброзо ©   (2004-10-02 00:23) [9]

> с самостоятельным переключением,
SwitchToFiber? М-да. Это я не осилю )
В голове плюс ко всему настоящие нейроны обладают разной импульсной активностью, то есть более активные нейроны выдают импульсы пачками с более высокой частотой (т.е. "считают функцию быстрее"). Соответственно SetThreadPriority в идеале должен приобретать не семь дискретных значений, а побольше.

Ну да ладно


 
panov ©   (2004-10-02 02:26) [10]

>Ломброзо ©   (02.10.04 00:23) [9]
Соответственно SetThreadPriority в идеале должен приобретать не семь дискретных значений, а побольше.

Достаточно использовать разные задержки при расчетах...


 
Cobalt ©   (2004-10-02 08:30) [11]

> Cobalt ©   (02.10.04 00:06) [4]
Вот этот алгоритм, как мне кажется, - должен обеспечивать полную "одновременность" расчёта. Конечно, при условии грамотного построения модели.
Вот такое вот скромное заявление :)


 
iZEN ©   (2004-10-02 16:24) [12]

to Ломброзо ©   (01.10.04 23:53).

Встречный вопрос: как организована нейронная сеть? Это простой массив с объектами (нейроны) и "картой соединений", может быть направленный граф или списки, где каждый нейрон ссылается на непосредственных соседей, или что-то ещё?
Спасибо.


 
TUser ©   (2004-10-02 16:29) [13]


> А моделируют - на кластерах?

FineReader на ПК работает.

А для НС, ИМХО, на нейрон поток вешать нельзя, т.к. результат, получается, будет зависеть от воли Винды - когда какому потоку время выделит.


 
DiamondShark ©   (2004-10-02 17:11) [14]


> В модели, конечно, лучше, чтобы все одновременно

Дык модельное время с реальным не связано.
Расчитываем последовательно, как все расчитали -- наступило "модельное завтра".


 
Ломброзо ©   (2004-10-02 19:50) [15]

>iZEN ©   (02.10.04 16:24) [12]
Если рассматривать клетки под микрсокопом - однонаправленный граф. Каждый нейрон имеет один "исходящий" отросток - аксон, и множество "входящих" - дендритов. Активность нейронов регулируется положительной или отрицательной обратной связью. Сеть может быть "слоистой".

Ещё раз всем спасибо, тема закрыта. Осознал, что в одиночку тут ничего не сделать. Нашёл сайтик http://www.orc.ru/~stasson/neurox.html, ушёл читать.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.035 c
4-1095424108
SashkoSoft
2004-09-17 16:28
2004.10.24
Как достучаться до dll ?


9-1087839046
Spingoffer
2004-06-21 21:30
2004.10.24
Естественный(искуственный) интеллект и отбор


14-1096286314
Delpher
2004-09-27 15:58
2004.10.24
Изменение значений


1-1097149277
Alex_s
2004-10-07 15:41
2004.10.24
Глюки Delphi7


1-1097420959
Саид
2004-10-10 19:09
2004.10.24
Демка браузера в Delphi.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский