예제 #1
0
                public override IntPtr Operator(TTrainer trainer, float minLearningRate, int cacheSize)
                {
                    BatchTrainerHelper.GetTypes <TScalar, TTrainer>(out _,
                                                                    out var svmTrainerType,
                                                                    out var svmKernelType,
                                                                    out var sampleType);

                    if (!(minLearningRate > 0))
                    {
                        throw new ArgumentOutOfRangeException($"{nameof(minLearningRate)} must be greater than 0.");
                    }
                    if (!(cacheSize > 0))
                    {
                        throw new ArgumentOutOfRangeException($"{nameof(cacheSize)} must be greater than 0.");
                    }

                    var error = NativeMethods.verbose_batch_cached_float(svmKernelType.ToNativeKernelType(),
                                                                         sampleType.ToNativeMatrixElementType(),
                                                                         svmTrainerType,
                                                                         trainer.NativePtr,
                                                                         minLearningRate,
                                                                         cacheSize,
                                                                         out var ret);

                    switch (error)
                    {
                    case NativeMethods.ErrorType.MatrixElementTypeNotSupport:
                        throw new ArgumentException($"{sampleType} is not supported.");

                    case NativeMethods.ErrorType.SvmBatchTrainerNotSupport:
                        throw new ArgumentException($"{svmTrainerType} is not supported.");

                    case NativeMethods.ErrorType.SvmKernelNotSupport:
                        throw new ArgumentException($"{svmKernelType} is not supported.");
                    }

                    return(ret);
                }
예제 #2
0
 public abstract IntPtr Operator(TTrainer trainer, TScalar minLearningRate, int cacheSize);