Пример #1
0
        /// <summary>
        /// Инициализация.
        /// </summary>
        public void Initialize()
        {
            if (_isInitialized)
            {
                throw new Exception("Невозможно инициализировать уже инициализированную модель!");
            }

            if (_type.Equals(NetworkModeType.Learning))
            {
                for (var x = 0; x < Size; ++x)
                {
                    for (var y = 0; y < Size; ++y)
                    {
                        var value = new Random().NextDouble(
                            RandomConstants.NEURON_WEIGHT_START_MIN_VALUE,
                            RandomConstants.NEURON_WEIGHT_START_MAX_VALUE);

                        System.Threading.Thread.Sleep(20);
                        Cells.Add(new ModifiedCell(x, y, value));
                    }
                }
            }
            else
            {
                ///TODO : Реализовать.
                throw new NotImplementedException();
            }

            _isInitialized = true;
        }
Пример #2
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;
        }
Пример #3
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;
        }
Пример #4
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;
        }
Пример #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;
        }
Пример #6
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;
        }