Beispiel #1
0
 public RnnTrainRec(Database db, ObjectId mixtureId, Chromosome chromosome, double trainingSeconds,
                    Vec initialWeights, MRnnSpec rnnSpec, IEnumerable <double> costHistory)
     : base(db, mixtureId, chromosome, trainingSeconds)
 {
     InitialWeights = initialWeights;
     RnnSpec        = rnnSpec;
     CostHistory    = costHistory.ToArray();
     Database.Store(this);
 }
Beispiel #2
0
        public static RnnTrainRec TrainRnn(Mat input, Vec output, Chromosome chrom, MakeRnnTrainRecFunc makeResult, Func <bool> canceled = null)
        {
            Func <int, LayerSpec> logisticSigmoidRecurrent = nodeCount =>
                                                             new LayerSpec(nodeCount, true, ActivationType.LogisticSigmoid);

            var layers = new List <LayerSpec> {
                logisticSigmoidRecurrent(chrom.RnnLayer1NodeCount),
                logisticSigmoidRecurrent(chrom.RnnLayer2NodeCount),
                new LayerSpec(1, false, ActivationType.Linear)
            };
            var epochMax = chrom.RnnTrainingEpochs;

            var numInputs      = input.RowCount;
            var rnnWeightCount = RNN.GetWeightCount(layers, numInputs);
            var initialWeights = RNN.MakeRandomWeights(rnnWeightCount);
            var trainResult    = RNN.TrainSCG(layers, initialWeights, epochMax, input, output, canceled);

            return(makeResult(initialWeights, MRnnSpec.FromRnnSpec(trainResult.RNNSpec), trainResult.CostHistory));
        }