Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Решение. 1. Открыть модель NeuronMdl




1. Открыть модель NeuronMdl.

2. Отредактировать маску блока Simple neuron, добавив в нее параметр для выбора функции активации. Для этого выполнить следующие действия:

2.1. Открыть маску блока Simple neuron, выполнив из его контекстного меню команду Edit mask (или каким-либо альтернативным способом). В результате выполнения откроется окно редактора маски подсистемы (см. рис. 1.26).

2.2. В открывшемся окне перейти на вкладку Parameters.

2.3. Добавить в список параметров новый элемент с именем f типа popup (выпадающий список). В качестве комментария задать строку Transfer function (f).

2.4. В список Popups (one per line) добавить названия функций активации из примера 1.4 и упражнения 1.5, расположив их в алфавитном порядке. Названия различных функций следует располагать на отдельных строках списка. Переход на новую строку в списке выполнять с помощью нажатия клавиши Enter.

2.5. Закрыть окно редактора маски, нажав кнопку OK.

3. Убедиться в том, что в диалоговом окне параметров блока Simple neuron появился новый параметр. Для этого выполнить следующие действия:

3.1. Двойным щелчком открыть диалоговое окно параметров блока Simple neuron (рис. 1.29).

При выборе из списка Transfer function конкретной функции активации локальной переменной автоматически присваивается порядковый номер выбранной функции. Поскольку названия функций активации в списке Transfer function расположены в алфавитном порядке, то при выборе функции hardlim переменной присваивается значение 1, при выборе функции hardlims – значение 2, при выборе функции logsig – значение 3 и т. д.

3.2. Закрыть диалоговое окно параметров блока Simple neuron, нажав кнопку Cancel.

4. Отредактировать подсистему Simple neuron, реализовав возможность выбора функции активации в соответствии со значением параметра Transfer function диалогового окна. Для этого выполнить следующие действия:

4.1. Открыть подсистему Simple neuron, выполнив из ее контекстного меню команду Look under mask (или каким-либо альтернативным способом). В результате выполнения откроется содержимое подсистемы Simple neuron (см. рис. 1.25).

4.2. Отсоединить блок hardlim от схемы. Для этого нужно нажать клавишу Shift, навести указатель мыши на блок hardlim, нажать левую кнопку и, не отпуская ее, переместить указатель мыши на любое свободное место в окне модели. Затем последовательно отпустить кнопку мыши и клавишу Shift.

4.3. Скопировать из библиотеки Simulink в окно NeuronMdl / Simple neuron блок Subsystem (см. п. 2.1 выполнения примера 1.4).

4.4. Переименовать блок Subsystem, назвав его Transfer function.

4.5. Поместить блок Transfer function на ту позицию, где находился блок hardlim до выполнения п. 4.2 примера. Соединение входа блока Transfer function с выходом блока Sum, а также выхода блока Transfer function с входом блока a должно произойти автоматически[19].

4.6. Реализовать выбор функции активации внутри подсистемы Transfer function. Для этого выполнить следующие действия:

4.6.1. Двойным щелчком войти внутрь подсистемы Transfer function. В результате выполнения откроется диалоговое окно, представленное на рис. 1.30. Таким образом, изначально блок Subsystem не выполняет никаких преобразований вход­ного сигнала, просто подавая его на выход.

4.6.2. Удалить линию, соединяющую входной порт In1 и выходой порт Out1 подсистемы Transfer function, выделив ее и нажав клавишу Delete.

4.6.3. Переименовать входной порт In1 и выходой порт Out1 подсистемы Transfer function, назвав их n и a соответственно.

4.6.4. Скопировать из библиотеки Simulink в окно NeuronMdl / Simple neuron / Transfer Function блок Switch Case.

4.6.5. Двойным щелчком открыть диалоговое окно параметров блока Switch Case (рис. 1.31).

4.6.6. В маске блока Simple neuron перечислено 10 функций активации от hardlim до tribas. Поэтому нужно реализовать 10 вариантов обработки входного сигнала u1 блока Switch Case. Для этого в поле Case conditions нужно задать множество {1,2,3,4,5,6,7,8,9,10}.

4.6.7. В диалоговом окне параметров блока Switch Case есть флажок Show default case. Если он установлен, то у блока будет присутствовать выходной порт default. Обработка ситуации default будет происходить в том случае, если значение входного сигнала u1 не будет совпадать ни с одним значением из множества, заданного в поле Case conditions. Если, например, входной сигнал u1 может принимать любое целочисленное значение от 1 до 20, и при значениях 11, 12, …, 20 он будет обрабатывать одинаково, то тогда наличие выходного порта default будет оправдано. В нашем случае это не так, поэтому флажок Show default case следует сбросить.

4.6.8. Нажать кнопку OK. В результате выполнения диалоговое окно параметров блока Switch Case закроется, а сам блок примет вид, представленный на рис. 1.32.

4.6.9. Скопировать из библиотеки Simulink в окно NeuronMdl / Simple neuron / Transfer Function блок Constant.

4.6.10. Переименовать блок Constant, назвав его Transfer function.

4.6.11. Двойным щелчком открыть диалоговое окно параметров блока Constant и в поле Constant value задать значение f[20].

4.6.12. Соединить выход блока Transfer function с входом u1 блока Switch Case (рис. 1.33).

4.6.13. Скопировать из библиотеки Simulink в окно NeuronMdl / Simple neuron / Transfer function блок Switch Case Action Subsystem. Этот блок является подсистемой, имеющий стандартные порты In1 и Out1, а также входной порт Action (рис. 1.34).

4.6.14. Переименовать блок Switch Case Action Subsystem, назвав его hardlim.

4.6.15. Соединить выход case [ 1 ] блока Switch Case с входом Action блока hardlim. В результате выполнения входной порт Action изменил свое название на case: {} (рис. 1.35).

4.6.16. Двойным щелчком войти в подсистему hardlim (рис. 1.36). Внешне содержание подсистемы напоминает содержание стандартной подсистемы Subsystem (см. рис. 1.30), но, в отличие от нее, здесь присутствует блок Action Port.

4.6.17. Переименовать входной порт In1 и выходной порт Out1, назвав их n и a соответственно.

4.6.18. Выполнить два раза подряд команду меню View ► Go to parent для перехода вверх на два уровня иерархии модели. В результате выполнения откроется окно NeuronMdl / Simple neuron (см. рис. 1.25).

4.6.19. Вырезать из открывшегося окна отсоединенный от схемы блок hard­lim, выполнив команду меню Edit ► Cut [21].

4.6.20. Снова вернуться в окно NeuronMdl / Simple neuron / Transfer function / hardlim, последовательно входя в указанные подсистемы.

4.6.21. Вставить в открывшееся окно ранее вырезанный блок hardlim, выполнив команду меню Edit ► Paste [22].

4.6.22. Навести указатель мыши на вставленный блок hardlim, нажать левую кнопку и, не отпуская ее, переместить указатель таким образом, чтобы контур блока расположился поверх линии, соединяющей входной порт n и выходной порт a подсистемы. После этого отпустить кнопку мыши. В результате выполнения подсистема примет вид, представленный на рис. 1.37.

4.6.23. Двойным щелчком открыть диалоговое окно параметров блока a.

4.6.24. Из списка Output when disabled выбрать значение reset, а в поле Initial output задать значение 0[23].

4.6.25. Выполнить команду меню View ► Go to parent для перехода вверх на один уровень иерархии модели. В результате выполнения откроется окно NeuronMdl / Simple neuron / Transfer function (см. рис. 1.35).

4.6.26. Скопировать из библиотеки Simulink в окно NeuronMdl / Simple neuron / Transfer function блок Goto.

4.6.27. Двойным щелчком открыть диалоговое окно параметров блока Goto и в поле Tag ввести имя n[24].

4.6.28. Соединить входной порт n подсистемы Transfer function с входом блока Goto (рис. 1.38).

4.6.29. Скопировать из библиотеки Simulink в окно NeuronMdl / Simple neuron / Transfer function блок From.

4.6.30. Двойным щелчком открыть диалоговое окно параметров блока From и в поле Goto Tag ввести имя n.

4.6.31. Соединить выход блока From с входом n подсистемы hardlim (рис. 1.39). Таким образом, в подсистему hardlim опосредованно будет передано значение входного сигнала n[25].

4.6.32. Создать копию части модели в окне NeuronMdl / Simple neuron / Transfer function, включающей блоки From, hardlim и линию, соединяющую их. В результате выполнения скопированным блокам будут присвоены имена From1 и hardlim1 соответственно.

4.6.33. Переименовать блок hardlim1, назвав его hardlims.

4.6.34. Соединить выход case [ 2 ] блока Switch Case с входным портом Action подсистемы hardlims (рис. 1.40).

4.6.35. Двойным щелчком открыть блок hardlims. В результате выполнения откроется окно NeuronMdl / Simple neuron / Transfer function / hardlims (см. рис. 1.37).

4.6.36. Удалить в открывшемся окне блок hardlim.

4.6.37. Открыть библиотеку функций активации TransferFunc­tions.mdl, созданную при выполнении п. 6 примера 1.4.

4.6.38. Скопировать из открывшегося библиотечного окна блок hardlims и поместить его в окно NeuronMdl / Simple neuron / Transfer function / hardlims на место удаленного блока.

4.6.39. Выполнить команду меню View ► Go to parent для перехода вверх на один уровень иерархии модели.

4.6.40. Повторить еще восемь раз выполнение пп. 4.6.32 – 4.6.39 примера для добавления всех оставшихся функций активации нейрона. В результате выполнения окно NeuronMdl / Simple neuron / Transfer function примет вид, представленный на рис. 1.41.

4.6.41. Закрыть библиотеку функций активации TransferFunctions.mdl.

4.6.42. Скопировать из библиотеки Simulink в окно NeuronMdl / Simple neuron / Transfer function блок Sum.

4.6.43. Двойным щелчком открыть диалоговое окно параметров блока Sum и в поле List of signs задать параметр ++++++++++.

4.6.44. Соединить попарно входы блока Sum с выходами блоков hardlim, hardlims и др. функций активации нейрона[26], а выход – с выходным портом a подсистемы (рис. 1.42).

4.6.45. Два раза подряд выполнить команду меню View ► Go to parent для перехода вверх на два уровня иерархии модели. Подсистема Simple neuron построена.

5. Выполнить тестирование всех функций активации, заданных в качестве параметров блока Simple neuron, и убедиться в том, что полученные результаты совпадают с результатами выполнения упражнения 1.5.

6. Скопировать блок Simple neuron в библиотеку функций активации TransferFunctions.mdl.

7. Поскольку реализация всех функций активации теперь возможна внутри блока Simple neuron, то созданные ранее тестовые модели HardlimsMdl.mdl, LogsigMdl.mdl и др. можно удалить с диска, сохранив лишь модель NeuronMdl.mdl и библиотеку TransferFunctions.mdl.

Упражнение 1.6. Выполнить решение задач из примера 1.3 и упражнений 1.3, 1.4 в системе Simulink, используя один или несколько блоков Simple neuron.


[1] Вообще говоря, автоматический поиск блока выполняется даже по части имени. Если, например, установить указатель в поле Find block и снова нажать клавишу Enter, то будет найден блок Constant Diagonal Matrix из раздела DSP Blockset библиотеки Simulink (если соответствующий пакет расширения, конечно же, был установлен на компьютер). Поэтому после нахождения блока нужно убедиться в том, что найден именно тот блок, который и был нужен, а не блок с похожим именем.

[2] Мы хотим выполнить тестирование нейрона на основе данных из примера 1.1. В этом примере на вход функции активации hardlim подается значение , равное [-0.7; 0.0; 0.8]. Поскольку , а значение входа мы взяли равным , то, следовательно, и .

[3] Вообще говоря, соединительную линию можно проводить не только от выхода блока к входу, но и в обратном направлении.

[4] Следует иметь в виду, что соединительная линия должна быть изображена в виде сплошной линии черного цвета, как показано на рис. 1.15. Если же отобразилась пунктирная линия красного цвета, то при ее проведении была допущена ошибка. В этом случае линию нужно удалить и провести повторно.

[5] Нулевое значение аргумента функции активации есть условие ее переключения с единицы на нуль и наоборот.

[6] Альтернативными способами являются выполнение команды Create subsystem из контекстного меню любого выделенного блока или нажатие комбинации клавиш Ctrl + G.

[7] Подсистемы в Simulink имеют то же назначение, что и подпрограммы при традиционном подходе к программированию, а именно – оформление часто используемых фрагментов модели в виде отдельного блока (модуля), который в дальнейшем можно неоднократно использовать в этой или в др. моделях.

[8] Буквами p и a ранее были обозначены соответственно вход и выход нейрона (см. рис. 1.6).

[9] Альтернативными способами являются выполнение команды Mask subsystem из контекстного меню блока или нажатие комбинации клавиш Ctrl + M.

[10] Возвращаясь к соответствию между подсистемами Simulink и подпрограммами при традиционном подходе к программированию, можно сказать, что параметры, описываемые в маске подсистемы, являются локальными и их область действия ограничивается этой маскируемой подсистемой.

[11] Вообще говоря, функция активации также является параметром нейрона, и она включена в маскируемую подсистему. Однако на данном этапе мы не будем описывать ее в качестве параметра блока. Вход нейрона не является его внутренним параметром и в маскируемую подсистему он не был включен (см. рис. 1.23).

[12] В системе Simulink нельзя использовать буквы русского алфавита даже в текстовых комментариях. Поэтому вместо словосочетания Весовые коэффициенты мы использовали его англоязычный аналог.

[13] Существуют еще два типа параметра – флажок checkbox и выпадающий список popup.

[14] Если выяснится, что маскирование подсистемы является ненужным, а маска уже создана, то подсистему можно демаскировать, нажав в окне редактора маски кнопку Unmask (см. рис. 1.26).

[15] Если при создании маски была допущена ошибка, то можно снова открыть редактор маски и внести нужные изменения. Для этого используются те же приемы, что были описаны в п. 8.1 примера, но соответствующая команда меню будет называться уже не Mask subsystem, а Edit mask.

[16] Эти значения весового коэффициента и смещения нейрона были заданы при выполнении пп. 2.2 и 2.3 примера.

[17] Альтернативными способами являются выполнения команды Look under mask из контекстного меню блока или нажатие комбинации клавиш Ctrl + U.

[18] Как уже было сказано ранее, W – имя локальной переменной, определенное в редакторе маски (см. п. 8.2.3 примера) и с этим именем связано конкретное числовое значение 1, заданное в диалоговом окне параметров блока (см. п. 8.6.2). При выполнении блока W вместо его одноименного параметра будет использоваться это числовое значение, и именно оно будет подано на выход блока.

[19] Этому может помешать несоответствие расстояния между соединительными линиями красного цвета, которые появились в результате перемещения блока hardlim, и шириной блока Subsystem. Чтобы устранить это несоответствие, можно изменить расстояние между соединительными линиями, переместив одну из двух независимых частей схемы. Можно также изменить ширину блока Subsystem.

[20] Это есть имя переменной, с которой связан параметр маски блока, заданный при выполнении п. 2.3 примера.

[21] Можно также воспользоваться альтернативными способами, выполнив команду Cut из контекстного меню блока или нажав комбинацию клавиш Ctrl + X.

[22] Можно также воспользоваться альтернативными способами, выполнив команду Paste из контекстного меню рабочей области в окне модели (оно открывается нажатием правой кнопки мыши на любом свободном от блоков месте) или нажав комбинацию клавиш Ctrl + V.

[23] Подсистема hardlim является условно исполняемой, т. е. она будет выполняться только при выполнении определенного условия (в нашем случае – при f = 1). В случае если условие f = 1 не выполняется, подсистема выполняться не будет. Однако на ее выход все равно должен быть подан какой-либо сигнал. В качестве этого сигнала может быть значение, полученное при последнем выполнении подсистемы. В этом случае из списка Output when disabled нужно выбрать значение held. Также в качестве выходного сигнала может быть задано вполне определенное значение, не связанное с предыдущими выполнениями подсистемы. В этом случае из списка Output when disabled нужно выбрать значение reset, а в поле Initial output задать значение, которое будет подаваться на выход подсистемы по умолчанию.

[24] Это означает, что значение сигнала, подаваемого на вход блока Goto, будет сохраняться в локальной переменной n, откуда ее в дальнейшем можно считать и подать на вход др. блока с помощью блока From.

[25] Можно было бы поступить значительно проще, напрямую соединив входной порт n и одноименный порт подсистемы hardlim. Однако в этом окне подсистема hardlim будет далеко не единственной. Кроме нее, будет еще девять подсистем, каждая из которых реализует определенную функцию активации нейрона. Следовательно, входной порт n нужно будет соединять со всеми десятью блоками. Кроме того, нужно будет соединить выходы блока Switch Case (их тоже десять) с портами Action подсистем, реализующих соответствующие функции активации. В результате эти 20 соединительных линий будут пересекать одна другую, и схема утратит наглядность. Поэтому и был выбран такой способ опосредованной передачи сигнала.

[26] Несмотря на то, что складываются результаты выполнения всех функций активации, в действительности выполняться будет только одна из них – та, которая соответствует значению параметра f, заданному в маске подсистемы. Остальные же функции активации будут возвращать нулевые значения (см. п. 4.6.24). Поэтому результат сложения выходных значений всех функций активации совпадет с результатом выполнения той, которая была выбрана.




Поделиться с друзьями:


Дата добавления: 2015-06-27; Просмотров: 588; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.056 сек.