/// <summary> /// Construct the LMA object. /// </summary> /// <param name="network">The network to train. Must have a single output neuron.</param> /// <param name="training">The training data to use. Must be indexable.</param> /// <param name="h">The Hessian calculator to use.</param> public LevenbergMarquardtTraining(BasicNetwork network, IMLDataSet training, IComputeHessian h) : base(TrainingImplementationType.Iterative) { ValidateNetwork.ValidateMethodToData(network, training); Training = training; _indexableTraining = Training; this._network = network; _trainingLength = (int)_indexableTraining.Count; _weightCount = this._network.Structure.CalculateSize(); _lambda = 0.1; _deltas = new double[_weightCount]; _diagonal = new double[_weightCount]; var input = new BasicMLData( _indexableTraining.InputSize); var ideal = new BasicMLData( _indexableTraining.IdealSize); _pair = new BasicMLDataPair(input, ideal); _hessian = h; _hessian.Init(network, training); }
/// <summary> /// Construct the LMA object. /// </summary> /// <param name="network">The network to train. Must have a single output neuron.</param> /// <param name="training">The training data to use. Must be indexable.</param> /// <param name="h">The Hessian calculator to use.</param> public LevenbergMarquardtTraining(BasicNetwork network, IMLDataSet training, IComputeHessian h) : base(TrainingImplementationType.Iterative) { ValidateNetwork.ValidateMethodToData(network, training); Training = training; _indexableTraining = Training; _network = network; _trainingLength = _indexableTraining.Count; _weightCount = _network.Structure.CalculateSize(); _lambda = 0.1; _deltas = new double[_weightCount]; _diagonal = new double[_weightCount]; _hessian = h; }
/// <summary> /// Construct the LMA object. /// </summary> /// <param name="network">The network to train. Must have a single output neuron.</param> /// <param name="training"></param> /// <param name="h">The training data to use. Must be indexable.</param> public LevenbergMarquardtTraining(BasicNetwork network, IMLDataSet training, IComputeHessian h) : base(TrainingImplementationType.Iterative) { ValidateNetwork.ValidateMethodToData(network, training); Training = training; _indexableTraining = Training; this._network = network; _trainingLength = _indexableTraining.Count; _weightCount = this._network.Structure.CalculateSize(); _lambda = 0.1; _deltas = new double[_weightCount]; _diagonal = new double[_weightCount]; var input = new BasicMLData( _indexableTraining.InputSize); var ideal = new BasicMLData( _indexableTraining.IdealSize); _pair = new BasicMLDataPair(input, ideal); _hessian = h; }