示例#1
0
        internal static NativeMethods.MlpKernelType ToNativeMlpKernelType(this MultilayerPerceptronKernelType type)
        {
            switch (type)
            {
            case MultilayerPerceptronKernelType.Kernel1:
                return(NativeMethods.MlpKernelType.Kernel1);

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }
        }
示例#2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MultilayerPerceptron{T}"/> class with the specified nodes of input layer, nodes of first hidden layer, nodes of second hidden layer, nodes of output layer, alpha and momentum.
        /// </summary>
        /// <param name="nodesInInputLayer">The number of nodes for input layer.</param>
        /// <param name="nodesInFirstHiddenLayer">The number of nodes for first hidden layer.</param>
        /// <param name="nodesInSecondHiddenLayer">The number of nodes for second hidden layer.</param>
        /// <param name="nodesInOutputLayer">The number of nodes for output layer.</param>
        /// <param name="alpha">The learning rate. The default value is 0.1.</param>
        /// <param name="momentum">The momentum. The default value is 0.8.</param>
        /// <exception cref="NotSupportedException">The specified type of kernel does not supported.</exception>
        public MultilayerPerceptron(int nodesInInputLayer,
                                    int nodesInFirstHiddenLayer,
                                    int nodesInSecondHiddenLayer = 0,
                                    int nodesInOutputLayer       = 1,
                                    double alpha    = 0.1,
                                    double momentum = 0.8)
        {
            if (!SupportTypes.TryGetValue(typeof(T), out var type))
            {
                throw new NotSupportedException($"{typeof(T).Name} does not support");
            }

            this._MultilayerPerceptronKernelType = type;
            var native = type.ToNativeMlpKernelType();

            this.NativePtr = NativeMethods.mlp_kernel_new(native,
                                                          nodesInInputLayer,
                                                          nodesInFirstHiddenLayer,
                                                          nodesInSecondHiddenLayer,
                                                          nodesInOutputLayer,
                                                          alpha,
                                                          momentum);
        }