Exemple #1
0
        /// <summary>
        /// Конструктор выходного слоя для распознавания чисел.
        /// </summary>
        /// <param name="neurons">Нейроны.</param>
        /// <param name="modeType">Тип мода сети.</param>
        /// <param name="type">Тип распознавания.</param>
        public OutputLayer(List<Neuron> neurons, NetworkModeType modeType,
            OutputLayerType type = OutputLayerType.NumberRecognizing)
        {
            if (!type.Equals(OutputLayerType.NumberRecognizing) &&
                !modeType.Equals(NetworkModeType.Recognizing))
                throw new Exception("Данный конструкто предназначен только для распознавания чисел.");

            _type = type;
            _layerNeurons = neurons;
        }
Exemple #2
0
        /// <summary>
        /// Матрица фильтра.
        /// </summary>
        /// <param name="size">Размер.</param>
        public FilterMatrix(int size, NetworkModeType type)
        {
            if (!type.Equals(NetworkModeType.Learning))
            {
                throw new Exception("Данный конструктор может использоваться только для обучения.");
            }

            Size  = size;
            _type = type;
        }
Exemple #3
0
        /// <summary>
        /// Свёрточный слой.
        /// </summary>
        /// <param name="map">Карта значений.</param>
        /// <param name="filterMatrix">Матрица фильтра.</param>
        /// <param name="modeType">Тип мода ети (для обучения выдаёт исключение).</param>
        public ConvolutionLayer(FigureMap map, FilterMatrix filterMatrix, NetworkModeType modeType)
        {
            if (!modeType.Equals(NetworkModeType.Recognizing))
            {
                throw new Exception("Данный конструктор не может использоваться для обучения!");
            }

            Map            = map;
            FilterMatrix   = filterMatrix;
            _isInitialized = true;
        }
Exemple #4
0
        /// <summary>
        /// Инициализация.
        /// </summary>
        /// <param name="type">Тип мода нейронной сети.</param>
        public override void Initialize(NetworkModeType type)
        {
            if (_isInitialized)
            {
                throw new Exception("Невозможно инициализировать уже инициализированную модель!");
            }

            // Независимо от типа мода сети инициализация проходит одинаково.
            PoolingMatrix = new PoolingMatrix(_poolingMatrixSize);

            _isInitialized = true;
        }
Exemple #5
0
        /// <summary>
        /// Матрица фильтра.
        /// </summary>
        /// <param name="size">Размер.</param>
        /// <param name="type">Тип мода сети.</param>
        /// <param name="cells">Ячейки.</param>
        public FilterMatrix(int size, NetworkModeType type, List <ModifiedCell> cells)
        {
            if (!type.Equals(NetworkModeType.Recognizing))
            {
                throw new Exception("Данный конструктор может использоваться только для распознавания.");
            }

            Cells = cells;
            Size  = size;
            _type = type;

            _isInitialized = true;
        }
Exemple #6
0
        /// <summary>
        /// Инициализация.
        /// </summary>
        /// <param name="type">Тип мода нейронной сети.</param>
        public override void Initialize(NetworkModeType type)
        {
            if (_isInitialized)
            {
                throw new Exception("Невозможно инициализировать уже инициализированную модель!");
            }

            // Независимо от типа мода нейронной сети возвращается карта.

            var size = GetDataSize();

            _layerData = new FigureMap(size, _data);

            _isInitialized = true;
        }
Exemple #7
0
        /// <summary>
        /// Инициализация.
        /// </summary>
        /// <param name="type">Тип мода нейронной сети.</param>
        public override void Initialize(NetworkModeType type)
        {
            if (_isInitialized)
            {
                throw new Exception("Невозможно инициализировать уже инициализированную модель!");
            }

            if (type.Equals(NetworkModeType.Learning))
            {
                FilterMatrix = new FilterMatrix(_filterMatrixSize, type);
                FilterMatrix.Initialize();
            }
            else
            {
                //TODO: Реализовать.
                throw new NotImplementedException();
            }

            _isInitialized = true;
        }
Exemple #8
0
        /// <summary>
        /// Инициализация слоя.
        /// </summary>
        /// <param name="type">Тип мода нейронной сети.</param>
        public override void Initialize(NetworkModeType type)
        {
            if (_isInitialized)
                throw new Exception("Невозможно инициализировать уже инициализированную модель!");

            switch (type)
            {
                case NetworkModeType.Learning:
                    _layerNeurons = new List<Neuron>();
                    CreateNeurons();
                    break;

                case NetworkModeType.Recognizing:
                    _isInitialized = true;
                    return;

                default:
                    throw new Exception("Неизвестный тип мода нейронной сети.");
            }

            _isInitialized = true;
        }
Exemple #9
0
 /// <summary>
 /// Инициализация слоя.
 /// </summary>
 /// <param name="type">Тип мода нейронной сети.</param>
 public override void Initialize(NetworkModeType type)
 {
     // Данный слой инициализируется автоматически,
     // при передаче ему нейронов с предыдущего слоя.
     return;
 }
Exemple #10
0
 /// <summary>
 /// Инициализация.
 /// </summary>
 /// <param name="type">Тип мода нейронной сети.</param>
 public abstract void Initialize(NetworkModeType type);