Объекты библиотеки NeuronalNet
Типы и структуры данных
TActivationFunctionType
- Тип активационной функции нейрона (нейронов если задается для слоя или подсети)
- afThresold - Пороговая
- afLinear - Линейная
- afSemilinear - Полулинейная (с порогами)_/-
- afSigmoid - Сигмоидная
- afHtanh - Гиперболический тангенс
- afRBF - РБФ Радиальная базисная функция (резерв)
TErrorFunctionType
- Тип функции ошибки
- efLine - Линейная
- efSquare - Квадратичная
- efLogistic - В Кросс-Энтропия
TLayerType
- Тип слоя Скрытый, входной, выходной, контекстный
- HiddenL - Скрытый
- InputL - входной
- OutputL - выходной
- ContextInputL - контекстный входной
- ContextOutputL - контекстный выходной
- ManageL - управляющий (слой содержащий нейроны управляющие активацией нейронов скрытых слоев
TCellType
- Тип нейрона Скрытый, входной, выходной, контекстный
- clHidden - скрытый
- clInput - входной
- clOutput - выходной
- clContextInput - контекстный входной
- clContextOutput - контекстный выходной
- clManage - управляющий
TStatType
- тип получаемой статистики нейрона (при вызове методов объекта TNeuroStat)
- stVariance - Дисперсия параметра
- stMean - Среднее по параметру
- stMax - Максимальное значение
- stMin - Минимальное
- stR - Корреляция последовательности целевых и спрогнозированных данных
- stMaxAbs - Максимальное отклонение от нуля
- stMinAbs - Минимальное отклонение от нуля
- stCountCases - Количество объектов оценки df
TStat = set of TStatType;
TParamType
- параметр по которому считается статистика
- ptErr - условная ошибка, которую обеспечил нейрон
- ptS - Активация на суммарном входе до преобразования функцией активации
- ptY - Выходная активация (после вычисления функции активации)
- ptD - Целевая активация на выходе (обучающая)
TParamStat = set of TParamType;
TNeuronCoord
- структура (record) содержащая координаты нейрона для идентификации в сети
- LayerIdx - Номер слоя
- NeuronIdxс - Номер нейрона в слое
TSetting
- элементы структурного типа,набора элементов для коррекции параметров нейронов использующийся в методах объектов Layer и SubNet для корректировки всех нейронов объекта вызываемых в методах SetAllNeurons
TSetting = set of (sAlfa,sThresold, sThresold1, sNu, sMu, sNoise, sNumSigma, sAFType, sInWeight);
-
sAlfa - Корректировать параметр активации
-
sThresold - Корректировать Порог 1 (нижний) функции активации
-
sThresold1 - Корректировать Порог 2 (верхний)
-
sNu - Корректировать Скорость обучения
-
sMu - Корректировать момент обучения (влияние накопленного предыдущего обучения для выхода из локальных минимумов)
-
sNoise - Корректировать уровень шума
-
sNumSigma - Корректировать количество сигм разных подсетей для корректировки
-
sAFType - Тип активационной функции
-
sInWeight - Инициализация весов с определенным разбросом
TOnCalcStat = procedure(Layer:TLayer;N:Int64) of Object; - Процедура событие вычисления статистики, вызывается когда слой активирован Activate или была распространена ошибка BackPropErr StatCount - раз. Параметры с которыми вызывается процедура Layer - Слой, вызывающий событие и N - размер выборки = StatCount.
Структура объектов библиотеки
TNetComponent
- компонент нейросеть
TNeuronalNet
- Объект список слоев в порядке прохождения активации, содержит объект список подсетей
- SubNets
- список подсетей
- TLayer
- "Слой" нейросети (список нейронов) принадлежаших этому слою
Объекты, их свойства и методы:
TNetComponent - Компонент, содержащий объект (TNeuronalNet) нейросеть. Его можно устанавливать на форму или DataModule.
Свойства:
Методы
-
Create(AOwner:TComponent)
- Создать сомпонент с владельцем AOwner (например Create(Form1))
-
Free
- Удалить компонент
-
SaveToFile(File:String)
- Сохранить сеть в бинарный файл. Сохраняется структура сети, все слои и подсети и все свойства нейронов и их связи
-
LoadFromFile(File:String)
- Загрузить сеть из бинарного файла
TNeuronalNet- Объект нейросеть, содержащий список слоев и отдельный объект SubNets содержащий список подсетей
Свойства:
-
Name
: Строка, содержащая название сети
-
InWeight:
Число ограничивающее диапазон инициализации весов -1*InWeight<w<1*InWeight при заполнении случайными числами
-
ActivationFunction:
Тип Функции активации сети для всех слоев и подсетей по умолчанию (TActivationFunctionType см выше). При создании задается afHtanh
-
Subnets:
Список объектов типа подсеть (TSubnet)
-
Alfa:
Коэффициент функции активации (в типичных случаях степень возрастания). По умолчанию - 1
-
Thresold:
Нижний порог функции активации (Граничное значение входной активации S при котором начинается возрастание функции). По умолчанию - 0
-
Thresold1:
Верхний порогфункции активации (Граничное значение входной активации S при котором заканчивается возрастание функции). По умолчанию - 0
-
Nu:
Скорость обучения или коррекции весов (по умолчанию 0.1)
-
Mu:
Момент обучения (влияние предыдущих циклов обучения). По умолчанию - 0
-
Noise:
Шум при обучении. По умолчанию - 0
-
ForceContext:
Глубина влияния контекста на обучение. (зарезервировано на будущее) По умолчанию - 0
Методы
-
Create(Owner:TComponent) -
Создать объект нейросеть
-
Free -
Уничтожить объект
-
LoadFromStream(Stream:TStream) -
Загрузить из бинарного потока всю структуру и свойства сети
-
procedure
SaveToXML(NetXMLFile:TFileName) -
Сохранить сеть в XML файл
-
procedure
LoadFromXML(NetXMLFile:TFileName) -
Загрузить сеть из XML файла
-
function
AddLayer(LayerType:TLayerType):TLayer -
Добавить новый слой типа TLayerType см. выше
-
procedure
DeleteLayer(NumLayer:Integer) -
Удалить слой из списка слоев по номеру (вместе с нейронами)
- procedure
ClearLayers -
Удалить все слои
-
procedure
Удалить все слои и подсети Инициализировать свойства
-
procedure
Reconnect -
Удалить все несуществующие связи, возникающие при удалении слоев или создании новых
-
function AddSubnet():TSubNet -
Добавить новую подсеть
-
Удалить подсеть по номеру
-
procedure SetAllNeurons(Setting:TSetting) -
Установить параметры указанные в структуре типа TSetting у всех нейронов во всех слоях на основе свойств преднастройки (см выше)
-
function FindNeuron(Coord:TNeuronCoord):TNeuron -
Получить ссылку на объект нейрон по координатам TNeuronCoord [номер слоя, номер нейрона] см. выше.
-
procedure InitWeights -
Загрузить случайные веса во все нейроны всех слоев сети кроме входных и управляющих
-
procedure SetTarget(Layer:TLayer; const ArrOutput:Tarray1D)
- Загрузить целевые значения выходного слоя Layer массивом чисел ArrOutput
-
procedure SetInputs(Layer:TLayer; const ArrInput:Tarray1D) -
Загрузить значения входного слоя Layer одномерным массивом чисел ArrInput
- procedure Activate -
Активировать сеть, то есть активировать все нейроны последовательно во всех слоях в соответствие с матрицей связей и активацией входных слоев и контекстных входных слоев (и рассчитать статистику активации если определена)
-
procedure BackPropError -
Передать ошибку всех подсетей от выходных слоев всем предыдущим слоям с которыми слой связан предварительно обнулив ошибки предыдущего цикла (и рассчитать статистику обучения если определена)
-
procedure Learn -
Обучится: поменять веса на основе распространенной ранее ошибки в соответствие с параметрами обучения
-
TSubNet: Объект подсеть
Методы
-
Constructor Create(Net:TNeuronalNet)
- Создать подсеть сети Net
-
Destructor Free;
- Удалить подсеть
-
procedure AddNeuron(Neuron:TNeuron); -
Добавить нейрон Neuron в подсеть если его нет
-
procedure DeleteNeuron(Neuron:TNeuron); -
Удалить нейрон Neuron из подсети если он есть
-
procedure ClearNeurons
; - Удалить все нейроны из списка подсети (сами нейроны в слоях не удаляются)
-
procedure SetAllNeurons(Setting:TSetting);
//Установка параметров в структуре Srtting всех нейронов из преднастроек подсети
-
procedure ConnectToNeuron(Neuron:TNeuron);
//Связать все нейроны подсети с нейроном Neuron (например с управляющим)
-
procedure Reconnect;
Проверить и удалить связи с несуществующими нейронами (если нейроны ранее были удалены)
-
procedure AddLayer(Layer:TLayer);
- Добавление всех нейронов слоя Layer в подсеть
-
procedure DeleteLayer(Layer:TLayer);
- Удаление всех нейронов слоя Layer из подсети
-
procedure AddSubnet(SubNet:TSubNet);
- Добавление в подсеть нейронов подсети SubNet
-
procedure DeleteSubnet(SubNet:TSubNet);
- Удаление всех нейронов подсети содержащихся в другой подсети SubNet
-
procedure AddFunnel(Neuron:TNeuron;NumLayers:Integer);
- Добавление в подсеть всех нейронов соответствующих воронке шеррингтона от этого нейрона (рецептивное поле во всех слоях
-
procedure DeleteFunnel(Neuron:TNeuron;NumLayers:Integer);
Удаление из подсети всех нейронов соответствующих воронке шеррингтона от этого нейрона (рецептивное поле во всех слоях
-
procedure SaveToXML(SubNetNode:IXMLNode);
- Сохранить подсеть в XML узел SubNetNode
-
procedure LoadFromXML(SubNetNode:IXMLNode);
- Загрузить подсеть из XML узла SubNetNode
-
procedure SaveOutsToXML(SubNetNode:IXMLNode);
//Сохранить выходные слои подсети из списка выходных слоев в XML узел SubNetNode
-
procedure LoadOutsFromXML(SubNetNode:IXMLNode);
//Загрузить выходные слои подсети из XML узла SubNetNode
-
procedure InitWeights;
//Проинициализировать входные веса нейронов подсети
Свойства:
-
property Name:AnsiString
- Текстовое название сети
-
property ActivationFunction:TActivationFunctionType;
- Тип Функции активации нейронов сети устанавливаемые по умолчанию (если в конкретном случае не задано другое)
-
property Alfa:Double
- Параметр активационной функции (ее наклон)
-
property Thresold:Double
- Порог активационной функции (или свободный член)
-
property Thresold1:Double
- Второй порог активационной функции
-
property Nu:Double
- Скорость обучения по умолчанию если в конкретном слое, подсети или нейроне не задано другое
-
property Mu:Double
- Степень влияния момента обучения;
-
property Noise:Double
- Коэффициент включения шума при обучении; (по умолчанию 0)
-
property ForceContext:Double
-Коэффициент глубины влияния контекста на обучение
-
property InWeight:Double
- Диапазон случайной инициализации весов -1*InWeight<w<1*InWeight
TLayer = class(TObjectList<TNeuron>):
Объект Слой содержит список всех нейронов слоя. При удалении нейрона из слоя , нейрон полностью удаляется
Методы:
-
constructor Create(Net:TNeuronalNet;LayerType:TLayerType);
- Создать слой сети Net с типом LayerType (список типов смотри выше)
-
destructor Free();
- Уничтожить слой и все нейроны слоя
-
function CreateNeuron:TNeuron;
- Создать нейрон и добавить его в список слоя (возвращает ссылку на этот нейрон
-
procedure DeleteNeuron(Neuron:TNeuron);
- Удалить нейрон указанный в параметре Neuron из списка слоя, если он там есть
-
procedure CreateNeurons(Number:Integer); -
Создатьидобавитвслой Number
нейронов
-
procedure ClearNeurons(); -
Удалитьвсенейроныслоя
-
procedure SetAllNeurons(Setting:TSetting);
-
Установкапараметровнаходящихсявструктуре Setting
всехнейронов
слояизпреднастроекслоя
-
procedure ConnectToNeuron(Neuron:TNeuron);
-
Связатьвсенейроныслояснейроном Neuron
которыйбудетихактивировать
-
procedure ConnectToLayer(Layer:TLayer);
-
Связатьвсенейроныслоясовсеминейронамидрогогослоя Layer
-
procedure Dis
с
onnectToLayer(Layer:TLayer);
Удалитьувсехнейроновслоявсесвязисослоем Layer
-
procedure Reconnect;
-
Проверитьиудалить
всенесуществующиевходныесвязивсехнейроновслоя(
судаленнымиранеенейронами)
-
procedure SetErrorFunctionType(efType:TErrorFunctionType);
-
Установитьнавсенейроныслояфункциювычисленияошибкипредсказания (
работаетеслиэтовыходнойслой)
-
procedure
SaveToXML
(
LayerNode
:
IXMLNode
);
- Сохранить слой в XML
узел LayerNode
-
procedure
LoadFromXML
(
LayerNode
:
IXMLNode
);
-Загрузить слой из XML
узла LayerNode
-
procedure
SaveConnectionsToXML
(
LayerNode
:
IXMLNode
);
- Сохранить связи нейронов в узел XML
LayerNode
-
procedure
LoadConnectionsFromXML
(
LayerNode
:
IXMLNode
); );
- Загрузить связи нейронов из узла XML
LayerNode
-
procedure
InitWeights
;
- Инициализировать веса слоя случайными числами в диапазоне в соответствии с параметром InWeights
-
procedure
InitSigma
;
- Обнуление всех сигм (предыдущих ошибок) всех нейронов слоя
-
function
InputCount
:
Integer
;
- Количество входных нейронов связи с которыми имеются у всех нейронов слоя
-
procedure
Activate
;
- Активировать нейроны слоя на основе активаций предыдущих слоев связанных с этим
-
procedure
SendBackSigma
;
- Передать ошибку всех подсетей всем входным слоям с которыми слой связан
-
procedure
Learn
; - Обучить слой на основе ошибки вычисленной процедурой SendBackSigma всех слоев, нейроны которых зависят от нейронов данного слоя
-
procedure
SetStatActOn
;
- Установить на все нейроны слоя подсчет статистики активаций и обнулить счетчики усреднения
-
procedure
SetStatLearnOn
;
- Установить на все нейроны слоя подсчет статистики обучения и обнулить счетчики усреднения
-
procedure
SetStatPause
;
- Приостановить на всех нейронах слоя подсчет статистики
-
procedure
SetStatContinue
;
- Возобновить на всех нейронах слоя подсчет статистики
-
function
CountStat
:
Integer
; - Возвращает сколько нейронов подсчитывают статистику
-
function
GetResStat
(
Param
:
TParamType
;
Stat
:
TStatType
):
TArray
1
D
;
- Получить результат подсчета статистики Stat параметра Param (см. выше) в результирующий динамический одномерный массив
TArray1
D
(описан в библиотеке
MyProc
.
pas
)
-
function
GetAvgResStat
(
Param
:
TParamType
;
Stat
:
TStatType
)
:
Double
; - ;
- Получить усредненный результат подсчета статистики Stat параметра Param в результирующий динамический одномерный массив
TArray1
D
(описан в библиотеке
MyProc
.
pas
)
-
function GetS:TArray1D; -
Получить массив значений активации нейронов до их преобразования через активационную функцию
-
function GetY:TArray1D;
-
Получить массив значений активации нейронов после их преобразования через активационную функцию
-
function GetSigmas:TArray1D;
-
Получить массив значений суммарных ошибок всех нейронов за которые они были ответственны по всем выходным слоям
-
function GetSigma:Double;
-
Среднее значение суммарных ошибок всех нейронов за которые они были ответственны по всем выходным слоям
-
function GetMaxVarErr:Double;
-
Получить максимальное отношение абсолютного значения ошибки к целевому значению из всех нейронов (для регуляции скорости обучения см отчет "В конечном итоге оптимальным оказался алгоритм, предложенный в статье (Рындин А. А., Ульев В. П. 2012) в котором скорость обучения η на каждом шаге модифицируется исходя из параметра представляющего максимум отношения абсолютного отклонения ошибки на выходе сети к абсолютному отклонению от нуля целевого значения")
Свойства:
-
property LayerType:TLayerType
-Тип слоя из списка LayerType (см.выше)
-
property NumSubNet:Integer
- Номер подсети и сигмы которой управляет этот выходной слой. Все ошибки в нейронах подразделяются по количеству подсетей, у каждой подсети может быть свой выходной слой, ошибки которого распространяются по всем нейронам в параметре Sigma, имеющим индекс именно этой подсети
property NumLayer:Integer
- Номер слоя в общем списке слоев (определяет последовательность активаций слоев
-
property ActivationFunction:TActivationFunctionType
- Активационная функция по умолчанию для всех нейронов слоя
-
property Name:AnsiString
- Название слоя
-
property InWeight:Double
- Диапазон случайной инициализации весов -1*InWeight<w<1*InWeight
-
property Alfa:Double
- Параметр активационной функции (ее наклон)
-
property Thresold:Double
- Порог активационной функции (или свободный член)
-
property Thresold1:Double
- Второй порог активационной функции
-
property Nu:Double
- Скорость обучения по умолчанию если в конкретном слое, подсети или нейроне не задано другое
-
property Mu:Double
- Степень влияния момента обучения;
-
property Noise:Double
- Коэффициент включения шума при обучении; (по умолчанию 0)
-
property ForceContext:Double
-Коэффициент глубины влияния контекста на обучение
-
property StatCount:Int64
- Количество циклов до подсчета статистики (Размер выборки)
-
property OnCalcActStat:TOnCalcStat
; - событие подсчета статистики при прохождении StatCount количества циклов Активации
-
property OnCalcLearnStat:TOnCalcStat;
- событие подсчета статистики при прохождении StatCount количества циклов Обучения
-
property LastNumTrain:Integer;
- Номер цикла обучения от инициализации весов
TNeuron = class(TObjectList<TConnect>) //Объект нейрон - Любая ячейка, нейрон, вход, выход и др. содержит список входных связей
Методы:
-
Constructor Create(Layer:TLayer;CellType:TCellType);
- Создать объект нейрон относящийся к слою Layer и типа CellType (см. выше)
-
destructor Free();
- Удалит объект нейрон
-
procedure Reconnect
; - Проверить все входные связи и удалить связи с несуществующими нейронами
-
procedure SaveToXML(NeuronNode:IXMLNode); -
Сохранитьсвойства из/в XML узел нейрона NeuronNode
-
procedure LoadFromXML(NeuronNode:IXMLNode)
; - Загрузить свойства из/в XML узел нейрона NeuronNode
-
procedure SaveConnectionsToXML(NeuronNode:IXMLNode); -
Сохранить/Загрузить список связей и их свойств в объект нейрон из XML узла нейрона
-
procedure LoadConnectionsFromXML(NeuronNode:IXMLNode); -
Сохранить/Загрузить список связей и их свойств в объект нейрон из XML узла нейрона
-
function Connect(Neuron:TNeuron;CheckOld:Boolean):TConnect;overload
; //Связать нейрон с входным нейроном Neuron и проверить была ли уже связь с этим нейроном если CheckOld
-
function Connect(NeuronCoord:TNeuronCoord;CheckOld:Boolean):
TConnect;overload; //Связать нейрон с входным нейроном заданным координатами
и проверить была ли уже связь с этим нейроном если CheckOld
-
procedure Disconnect(Neuron:TNeuron);
- Удалить связь с нейроном Neuron
-
procedure ConnectToLayer(Layer:TLayer);
- Связать нейрон со всеми нейронами слоя Layer
-
procedure AddRFToSubnet(SubNet:TSubNet;NumLayer:Integer);
- Добавить к подсети SubNet все нейроны Связанные с этим на NumLayer слоев назад
-
procedure DeleteRFfromSubnet(SubNet:TSubNet;NumLayer:Integer);
- Удалить из подсети все нейроны Связанные с этим нейроном в слое Layer на NumLayer слоев назад
-
procedure AddToSubnet(SubNet:TSubNet);
- Добавить этот нейрон к подсети SubNet
-
procedure DeleteFromSubnet(SubNet:TSubNet);
- Удалить этот нейрон из подсети SubNet
-
procedure ClearConnections();
- Удалить все связи нейрона
-
procedure SetNumSigma;
- Выставить длину массива ошибок (Sigma) равное количеству подсетей
-
procedure InitWeights;
- Инициализация весов нейрона случайными числами в соответствие с параметром InWeights
-
procedure Activate;
//Вычисление активации нейрона из всех связанных входных нейронов в соответствии с весами и вычислить активационную функцию
procedure Spyke;
//Вычисление Выходной активации через активационную функцию нейрона из активации S
-
procedure ExportToStrings(OutStrings:TStrings);
- Экспорт параметров нейрона в список строк
-
procedure SendBackSigma; -
Послать ошибки нейрона по всем подсетям во входящие нейроны связанные с этим
-
procedure Learn
; //Модифицировать веса нейрона на основе вклада в ошибку
Свойства:
-
SubNets: TObjectList<TSubnet>;
//массив подсетей к которым нейрон принадлежит
-
property Layer:TLayer
; //Номер слоя
-
property CellType:TCellType
Default clHidden; //Тип нейрона по умолчанию нейрон скрытого слоя
-
property Name:AnsiString
; //Название ячейки (нейрона)
-
Property Coord:TNeuronCoord;
//Координаты нейрона
-
property ActivationFunction:TActivationFunctionType
default afSigmoid
; //Тип активационной функции По умолчанию сигмоидная
-
property Alfa:Double
; //Кривизна активационной функции
-
property Thresold:Double;
//Порог активационной функции
-
property Thresold1:Double
; //(второй верхний) Порог активационной функции
-
property S:Double
; //Получить значение активации до преобразования активационной функцией умножением активации входных нейронов на веса связей
-
property Activation:Double
; //Текущая Активация нейрона (либо ее вычисление через вычисление S и активационную функцию)
-
property Derivate:Double
; //Производная функции активации в точке последнего преобразования
-
property Connection[Neuron:TNeuron]:TConnect
; //Получить Связь между данным нейронами
-
property Sigma[Index:Integer]:Double
; //ошибка которую детерминировал нейрон для подсети Index (каждая подсеть может обладать своим выходным слоем, на котором вычисляется ошибка и распространяется на все предыдущие слои в ошибке с данным индексом)
-
property Nu:Double
; //Скорость обучения
-
property Mu:Double
; //Момент обучения степень влияния предыдущих сдвигов весов на текущее смещение веса связи при обучении
-
property Noise:Double
; //Шум при обучении (случайное число в диапазоне Noise прибавляемое к весу при обучении, обычно увеличиваем для преодоления локальных минимумов)
-
property Stat:TNeuroStat
; //Объект статистики, Если он создан при выставлении isStat = True или из слоя процедурой SetStatActOn или SetStatLearnOn то статистика начинает считаться и обращаясь к нему можно получить результаты статистики
-
property isStat:Boolean
; //Создание, удаление Объекта статистики и запуск его
//*****************************************************
//Объект - состояние межнейронной связи - элемент списка объекта TNeuron
TConnect = class(TObject)
Методы:
-
constructor Create(Owner:TNeuron;NumIn:TNeuron);
- Создать связь с владельцем Owner и входным нейроном NumIn
-
procedure SendSigma(NumSubnet:Integer;Sigma:Double);
- Передать ошибку подсети предыдущему нейрону. NumSubNet - Номер подсети выходной слой которой сгенерировал эту ошибку, Sigma - значение ошибки
-
procedure SaveToStream(Stream:TStream);
dynamic; - Сохранить связь в поток Stream
-
procedure LoadFromStream(Stream:TStream);
-
procedure SaveToXML(ConnectionNode:IXMLNode);
- Сохранить св-ва связи в XML узел
-
procedure LoadFromXML(ConnectionNode:IXMLNode); -
Загрузить свойства связи из узла XML документа
Свойства:
-
property NeuronIn:TNeuron
; - Ссылка на входной нейрон
-
property Weight:Double
; - Вес связи между нейронами
-
property
DeltaW:Double
; - Текущее изменение связи между нейронами
-
property MomentW:Double
; - Общий тренд изменения связей (его влияние зависит от коэффициента Mu в TNeuron)
-
property Modified:Boolean
; - Если True - связь изменяется, False - не изменяется при обучении
//*****************************************************
//Статистика по нейрону
TNeuroStat = class(TObject)
Методы:
-
constructor Create(Owner:TNeuron;StartStat:Boolean);
- Создать объект статистики по нейрону Owner - нейрон владелец, StartStat - флаг запуска статистики True - немедленно запустить
-
function GetStat(ParamType:TParamType;StatType:TStatType):Double
; - Выдать статистику StatType по ParamType параметру нейрона (см. выше) владельца
-
procedure StartAct
; - Обнулить счетчики активаций нейрона и начать подсчет статистик
-
procedure StartLearn;
- Обнулить счетчики распространений ошибки и Начать подсчет статистик
-
procedure Pause
; - Остановить подсчет статистик
-
procedure Continue
; - Продолжить подсчет
Свойства: