public IEnumerator TrainNetwork() { if (trainingSet != null) { if (trainingSet.Count > 0) { while (trainingSolver.trainingInProgress) { yield return(null); } List <float[, , ]> observation_inputs = new List <float[, , ]>(); List <float[]> decision_outputs = new List <float[]>(); List <float> trainingSetWeights = new List <float>(); for (int n = 0; n < trainingSet.Count; n++) { observation_inputs.Add(Noedify_Utils.AddTwoSingularDims(trainingSet[n].observation)); decision_outputs.Add(trainingSet[n].decision); trainingSetWeights.Add(trainingSet[n].weight); } trainingSolver.TrainNetwork(net, observation_inputs, decision_outputs, trainingEpochs, trainingBatchSize, trainingRate, Noedify_Solver.CostFunction.MeanSquare, Noedify_Solver.SolverMethod.MainThread, trainingSetWeights, N_threads); } } }
// Evaluate netowrk to generate decision float[] AIDecision(float[] observation) { evalSolver.Evaluate(simController.net, Noedify_Utils.AddTwoSingularDims(observation), Noedify_Solver.SolverMethod.MainThread); return(evalSolver.prediction); }