Е. Миркес - Учебное пособие по курсу «Нейроинформатика»
- Название:Учебное пособие по курсу «Нейроинформатика»
- Автор:
- Жанр:
- Издательство:КРАСНОЯРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
- Год:2002
- Город:Красноярск
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Е. Миркес - Учебное пособие по курсу «Нейроинформатика» краткое содержание
Данное учебное пособие подготовлено на основе курса лекций по дисциплине «Нейроинформатика», читавшегося с 1994 года на факультете Информатики и вычислительной техники Красноярского государственного технического университета.
Несколько слов о структуре пособия. Далее во введении приведены учебный план по данному курсу, задания на лабораторные работы. Следующие главы содержат одну или несколько лекций. Материал, приведенный в главах, несколько шире того, что обычно дается на лекциях. В приложения вынесены описания программ, используемых в данном курсе (Clab и Нейроучебник), и проект стандарта нейрокомпьютера, включающий в себя два уровня — уровень запросов компонентов универсального нейрокомпьютера и уровень языков описания отдельных компонентов нейрокомпьютера.
Данное пособие является электронным и включает в себя программы, необходимые для выполнения лабораторных работ.
Учебное пособие по курсу «Нейроинформатика» - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
StringNetName Name"Имя сети" Default"";
IntegerWhat Name"Что обучать" Default Parameters;
ColorInstColor Name"Цвет примеров обучающего множества" DefaultHFFFF; {По умолчанию}
IntegerOperColor Name"Операция для отбора цветов" Default CIn;
Var {все примеры, в цвете которых есть хоть один единичный бит}
PRealArrayMap, DirectMap; {Для хранения текущего и случайного массивов параметров}
RealEst1, Est2; {Для хранения текущей и случайной оценки}
RealRadius; {Текущий радиус}
IntegerTryNum, RadiusNum; {Число попыток, номер использованного радиуса}
IntegerHandle; {Номер сеанса задачника}
StringQName; {Имя запроса}
Init
Begin
If NotSetInstructionObject(What, @NetName) Then GoToExit; {Задаем объекты обучения}
QName = "InitSession"; {Задаем имя запроса}
Map = NewArray(mRealArray, 3); {Создаем массив для аргументов запроса}
IfMap = Null Then GoToExit;
TPointer(Map^[1]) = @InstColor; {Заносим адрес первого аргумента}
TPointer(Map^[2]) = @OperColor; {Заносим адрес второго аргумента}
TPointer(Map^[3]) = @Handle; {Заносим адрес третьего аргумента}
If NotGenerateQuest(@QName, Map) Then GoToExit;{Открываем сеанс работы с задачником}
If NotFreeArray(mRealArray, Map) Then GoToExit; {Освобождаем массив для аргументов}
{Собственно начало обучения}
Map = CreateArray; {Создаем вспомогательные массивы}
DirectMap= CreateArray;
IfMap = Null Then GoToExit;
IfDirectMap= Null Then GoToExit;
Est1 = Estimate(Handle, True);
If Error<> 0 Then GoToExit;
RadiusNum = 1; {Обрабатываем первый радиус}
Radius = 1 / RadiusNum; {Вычисляем первый радиус}
If NotSaveArray(Map) Then GoToExit; {Сохраняем начальный массив параметров}
End
InstrStepRadius > MinRadius {Обработка с одним радиусом – один шаг обучения}
Begin
TryNum = 0;
While TryNum < Try Do Begin
If NotSetArray(Map) Then GoToExit; {Устанавливаем лучший массив параметров}
If NotRandomArray(DirectMap) Then GoToExit; {Генерируется новый массив параметров}
If NotModify(DirectMap, 1, Radius) Then GoToExit; {Модифицируем массив параметров}
Est2 = Estimate(Handle, True);
If Error<> 0 Then GoToExit;
IfEst1>Est2 Then Begin
If NotSaveArray(Map) Then GoToExit; {Сохраняем лучший массив параметров}
Est1 = Est2;
TryNum = 0;
End ElseTryNum = TryNum + 1; {Увеличиваем счетчик отказов}
End
RadiusNum = RadiusNum + 1; {Обрабатываем следующий радиус}
Radius = 1 / RadiusNum; {Вычисляем следующий радиус}
End
Close
Begin
Exit:
If NotSetArray(Map) Then; {Восстанавливаем лучший массив параметров}
If NotEraseArray(Мар1) Then; {Освобождаем вспомогательные массивы}
If NotEraseArray(Мар2) Then;
QName = "CloseSession"; {Задаем имя запроса}
Map = NewArray(mRealArray, 1); {Создаем массив для аргументов запроса}
IfMap = Null Then GoToExit1;
TPointer(Map^[1]) = @Handle; {Заносим адрес единственного аргумента}
If NotGenerateQuest(@QName, Map) Then;{Открываем сеанс работы с задачником}
If NotFreeArray(mRealArray, Map) Then; {Освобождаем массив для аргументов}
Exit1:
End
End Instructor
Пример 2. Библиотека функций
InstrLibLibrary1; {Библиотека содержит функции для следующего учителя}
{Метод наискорейшего спуска}
FunctionSDM( Handle : Integer;Step : Real) : Real;
LabelExit, Endd;
Var
RealEst;
Begin
Est = CalcGradient(Handle, True);
If Error<> 0 Then GoToExit;
Est =Optimize(Null, Step); {Вызываем функцию подбора оптимального шага}
If Error<> 0 Then GoToExit;
SDM = Est;
GoTo Endd;
Exit :
SDM = 0;
Endd :
End
{Метод случайного поиска}
FunctionRDM( Handle : Integer;Step : Real) : Real;
LabelExit, Endd;
Var
RealEst;
PRealArray: Direction;
Begin
Direction = CreateArray; {Создаем вспомогательный массив}
IfDirection = Null Then GoToExit;
If NotRandomArray(Direction) Then GoToExit; {Генерируется новый массив параметров}
If Error<> 0 Then GoToExit;
Est =Optimize(Direction, Step); {Вызываем функцию подбора оптимального шага}
If Error<> 0 Then GoToExit;
RDM = Est;
GoTo Endd;
Exit :
RDM = 0;
Endd :
End
End InstrLib
Пример 3. Антиовражная процедура обучения.
InstructorkParTan UsedLibrary1; {Антиовражная процедура обучения kParTan}
Main {Обучение ведется по всему обучающему множеству}
LabelExit, Exit1;
Static
ColorInstColor Name"Цвет примеров обучающего множества"
DefaultHFFFF; {По умолчанию}
IntegerOperColor Name"Операция для отбора цветов" Default CIn;
{все примеры, в цвете которых есть хоть один единичный бит }
StringNetName Name"Имя сети" Default"";
IntegerWhat Name"Что обучать" Default Parameters;
{По умолчанию 2ParTan}
Integerk Name"Число шагов между ParTan шагами" Default2;
RealAccuracy Name"Требуемый минимум оценки" Default0.00001;
LogicDirection Name"Случайное направление или антиградиент"
11 Default True; {Если истина,то антиградиент }
Var
IntegerHandle; {Номер сеанса задачника}
StringQName; {Имя запроса}
PRealArrayMap1, DirectMap; {Для текущего массива параметров и ParTan направления}
RealStep, ParTanStep; {Длины шагов для оптимизации шага}
RealEst1, Est2; {Для хранения текущей и случайной оценки}
LongI;
Init
Begin
If NotSetInstructionObject(What, @NetName) Then GoToExit; {Задаем объекты обучения}
QName = "InitSession"; {Задаем имя запроса}
Map1 = NewArray(mRealArray, 3);{Создаем массив для аргументов запроса}
IfMap = Null Then GoToExit;
Интервал:
Закладка: