Читаем Учебное пособие по курсу «Нейроинформатика» полностью

Instructor kParTan Used Library1; {Антиовражная процедура обучения kParTan}

Main {Обучение ведется по всему обучающему множеству}

 Label Exit, Exit1;

 Static

  Color InstColor Name "Цвет примеров обучающего множества"

  Default HFFFF; {По умолчанию}

  Integer OperColor Name "Операция для отбора цветов" Default CIn;

  {все примеры, в цвете которых есть хоть один единичный бит }

  String NetName Name "Имя сети" Default "";

  Integer What Name "Что обучать" Default Parameters;

  {По умолчанию 2ParTan}

  Integer k Name "Число шагов между ParTan шагами" Default 2;  

  Real AccuracyName "Требуемый минимум оценки"Default 0.00001;

  Logic Direction Name "Случайное направление или антиградиент"

  11 Default True; {Если истина,то антиградиент }

 Var

  Integer Handle; {Номер сеанса задачника}

  String QName; {Имя запроса}

  PRealArray Map1, DirectMap; {Для текущего массива параметров и ParTan направления}

  Real Step, ParTanStep; {Длины шагов для оптимизации шага}

  Real Est1, Est2; {Для хранения текущей и случайной оценки}

  Long I;

Init

 Begin

  If Not SetInstructionObject(What, @NetName) Then GoTo Exit; {Задаем объекты обучения}

  QName = "InitSession"; {Задаем имя запроса}

  Map1 = NewArray(mRealArray, 3);{Создаем массив для аргументов запроса}

  If Map = Null Then GoTo Exit;

  TPointer(Map^[1]) = @InstColor; {Заносим адрес первого аргумента}

  TPointer(Map^[2]) = @OperColor; {Заносим адрес второго аргумента}

  TPointer(Map^[3]) = @Handle; {Заносим адрес третьего аргумента}

  If Not GenerateQuMap(@QName, Map) Then GoTo Exit;{Открываем сеанс работы с задачником}

  If Not FreeArray(mRealArray, Map) Then GoTo Exit;{Освобождаем массив для аргументов}

  {Собственно начало обучения}

  Map = CreateArray; {Создаем вспомогательные массивы}

  DirectMap= CreateArray;

  If Map = Null Then GoTo Exit;

  If DirectMap = Null Then GoTo Exit;

  Est1 = Accuracy*10; {Задаем оценку, не удовлетворяющую требованию точности}

  Step = 0.005; {Задаем начальное значение шагу}

 End

InstrStep Est > Accuracy

 Begin

  If Not SaveArray(Map1) Then GoTo Exit; {Сохраняем начальный массив параметров}

  For I = 1 To k Do Begin {Выполняем k межпартанных шагов}

   If Direct Then Est = SDM(Handle, Step) Else Est = RDM(Handle, Step);

   If Error <> 0 Then GoTo Exit;

  End;

  If Not SaveArray(DirectMap) Then GoTo Exit; {Сохраняем конечный массив параметров}

  For I = 1 To TLong(Map^[0]) Do

   DirectMap^[I] = DirectMap^[I] - Map^[I]; {Вычисляем направление ParTan шага}

  ParTanStep = 1; {Задаем начальное значение ParTan шагу}

  Est =Optimize(DirectMap, ParTanStep); {Вызываем функцию подбора оптимального шага}

  If Error <> 0 Then GoTo Exit;

 End

Close

 Begin

Exit:

  If Not EraseArray(Мар) Then; {Освобождаем вспомогательные массивы}

Перейти на страницу:

Похожие книги

История математики. От счетных палочек до бессчетных вселенных
История математики. От счетных палочек до бессчетных вселенных

Эта книга, по словам самого автора, — «путешествие во времени от вавилонских "шестидесятников" до фракталов и размытой логики». Таких «от… и до…» в «Истории математики» много. От загадочных счетных палочек первобытных людей до первого «калькулятора» — абака. От древневавилонской системы счисления до первых практических карт. От древнегреческих астрономов до живописцев Средневековья. От иллюстрированных средневековых трактатов до «математического» сюрреализма двадцатого века…Но книга рассказывает не только об истории науки. Читатель узнает немало интересного о взлетах и падениях древних цивилизаций, о современной астрономии, об искусстве шифрования и уловках взломщиков кодов, о военной стратегии, навигации и, конечно же, о современном искусстве, непременно включающем в себя компьютерную графику и непостижимые фрактальные узоры.

Ричард Манкевич

Зарубежная образовательная литература, зарубежная прикладная, научно-популярная литература / Математика / Научпоп / Образование и наука / Документальное