public static double[] TrainRBFodel(MachineLearningController controller, TestCaseParameters param, List <double> outputToTest = null, int outputSize = 0)
    {
        MachineLearningTestCase.lastTestCaseParameters = param;
        if (param.neuronsPerLayer[0] < 3)
        {
            controller.InstantiateSpheresInScene(param.X, param.sampleSize, null);
        }

        int           eachOutputSize  = param.neuronsPerLayer[param.neuronsPerLayer.Count - 1];
        List <double> outputTest      = (outputToTest == null || outputToTest.Count == 0) ? param.X : outputToTest;
        int           outputTotalSize = (outputToTest == null || outputToTest.Count == 0) ? param.sampleSize * eachOutputSize: outputSize;

        IntPtr rawResut;

        rawResut = CppImporter.trainRBFModel(
            param.X.ToArray(),
            param.sampleSize,
            param.neuronsPerLayer[0],
            param.Y.ToArray(),
            param.nbCentroids,
            param.nbClasses,
            param.maxKmeans,
            outputTest.ToArray(),
            param.Y.ToArray(),
            param.gamma,
            outputTotalSize);


        double[] result = new double[outputTotalSize];
        Marshal.Copy(rawResut, result, 0, outputTotalSize);

        Debug.Log("Result rbf ");

        return(result);
    }
Ejemplo n.º 2
0
        public override void OnInspectorGUI()
        {
            DrawDefaultInspector();

            MachineLearningController mlc = (MachineLearningController)target;

            if (GUILayout.Button("Lancer le training"))
            {
                mlc.RunMachineLearningTestCase();
            }

            if (GUILayout.Button("Clear la scene"))
            {
                mlc.ResetSphere();
            }

            if (GUILayout.Button("Simulate test"))
            {
                mlc.SimulateResultTest();
            }

            if (GUILayout.Button("Load images"))
            {
                //mlc.LoadImagesSimple();
                mlc.LoadImagesClasses();
            }

//            if (GUILayout.Button("CIOMPUTE images"))
//            {
//                mlc.CiomputeImage();
//            }
//
//            if (GUILayout.Button("Generate and save rbf model"))
//            {
//                mlc.GenerateWeights();
//            }

//            if (GUILayout.Button("Tester une image"))
//            {
//                mlc.ChooseImage();
//            }
        }
 public static void StartGenerationRBFModel(MachineLearningController controller, List <double> images, int nbPixelInImage,
                                            int nbImages, List <double> output, int nbCentroid, int nbClasses, int maxKmeans, float gamma)
 {
     double[] centroid = ComputeAndSaveCentroids(images, nbImages, nbPixelInImage, nbCentroid, maxKmeans);
     ComputeAndSaveWeights(images, nbPixelInImage, nbImages, output, nbCentroid, nbClasses, maxKmeans, gamma, centroid.ToList());
 }