示例#1
0
    public void OnStartCompute()
    {
        // Only continue if the server is not already computing:
        if (isComputing)
        {
            return;
        }
        isComputing = true;

        if (pointAtManager)
        {
            pointAtManager.WriteToConfig();
        }

        if (UI)
        {
            UI.UpdateProgressText("   Processing...");
        }
        else
        {
            Debug.LogError("ERROR: No UI Object found. ");
        }

        if (evalSimple)
        {
            CLayerType[] layers = new CLayerType[Layers.Count];
            for (int i = 0; i < Layers.Count; i++)
            {
                layers[i] = Layers[i].layerType;
            }
            StartCoroutine(evalSimple.Evaluate(layers));
        }
    }
示例#2
0
    public IEnumerator Evaluate(CLayerType[] simpleLayers)
    {
        if (modelHandler)
        {
            modelHandler.ShowGPUs(true);
        }

        EvaluateRequest req = new EvaluateRequest {
        };
        bool flat           = false;

        for (int i = 0; i < simpleLayers.Length; i++)
        {
            CLayerType l = simpleLayers[i];
            switch (l)
            {
            case CLayerType.Conv:
                if (flat)
                {
                    throw new System.ArgumentException("tried to add multidimensional layer after flatten");
                }
                req.Layers.Add(new Evaluator.Layer {
                    Convolution = new Evaluator.ConvolutionLayer {
                        Filters = 32
                    }
                });
                break;

            case CLayerType.Full:
            case CLayerType.Dense:
                if (!flat)
                {
                    req.Layers.Add(new Evaluator.Layer {
                        Flatten = new Evaluator.FlattenLayer {
                        }
                    });
                    flat = true;
                }
                req.Layers.Add(new Evaluator.Layer {
                    Dense = new Evaluator.DenseLayer {
                        Neurons = 128
                    }
                });
                break;

            case CLayerType.Pool:
                if (flat)
                {
                    throw new System.ArgumentException("tried to add multidimensional layer after flatten");
                }
                req.Layers.Add(new Evaluator.Layer {
                    Maxpooling = new Evaluator.MaxpoolingLayer {
                    }
                });
                break;

            case CLayerType.Dropout:
                req.Layers.Add(new Evaluator.Layer {
                    Dropout = new Evaluator.DropoutLayer {
                        Dimension = 0.5f
                    }
                });
                break;

            default:
                throw new System.ArgumentException("unknown layer type: " + l);
            }
        }
        if (!flat)
        {
            //req.Layers.Add(new Evaluator.Layer { Convolution = new Evaluator.ConvolutionLayer { Filters = 32 } });
            req.Layers.Add(new Evaluator.Layer {
                Flatten = new Evaluator.FlattenLayer {
                }
            });
        }
        bIsCalculating = true;
        using (var call = client.EvaluateAsync(req)) {
            //StartCoroutine(UpdateProgress());
            while (!call.ResponseAsync.IsCompleted)
            {
                //accuracy = call.ResponseAsync.Result.Accuracy;
                yield return(new WaitForSeconds(0.5f));
            }
            bIsCalculating = false;
            accuracy       = call.ResponseAsync.Result.Accuracy;
            if (manager)
            {
                manager.CompleteComputation(accuracy);
            }

            yield return(new WaitForSeconds(0.5f));

            if (modelHandler)
            {
                modelHandler.Reset();
            }
        }
    }
示例#3
0
    public IEnumerator Evaluate(CLayerType[] simpleLayers)
    {
        yield return(null);

        string args = "";

        bool flat = false;

        for (int i = 0; i < simpleLayers.Length; i++)
        {
            CLayerType l = simpleLayers[i];
            switch (l)
            {
            case CLayerType.Conv:
                if (flat)
                {
                    throw new System.ArgumentException("tried to add multidimensional layer after flatten");
                }
                args += "Conv2D:" + "32,";   // :filters
                break;

            case CLayerType.Full:
            case CLayerType.Dense:
                if (!flat)
                {
                    args += "Flatten,";
                    flat  = true;
                }
                args += "Dense:128,";
                break;

            case CLayerType.Pool:
                if (flat)
                {
                    throw new System.ArgumentException("tried to add multidimensional layer after flatten");
                }
                args += "Pool,";
                break;

            case CLayerType.Dropout:
                args += "Dropout:0.5,";
                break;

            default:
                throw new System.ArgumentException("unknown layer type: " + l);
            }
        }
        if (!flat)
        {
            args += "Flatten,";
        }
        args += "$"; // End of stream

        // Send to python as string
        bIsCalculating = true;


        RunPythonScript("python evaluator.py", args);

        /*using (var call = client.EvaluateAsync(req))
         * {
         *  StartCoroutine(UpdateProgress());
         *  while (!call.ResponseAsync.IsCompleted)
         *  {
         *      //accuracy = call.ResponseAsync.Result.Accuracy;
         *      yield return new WaitForSeconds(0.5f);
         *  }
         *  bIsCalculating = false;
         *  accuracy = call.ResponseAsync.Result.Accuracy;
         *  if (manager) manager.CompleteComputation(accuracy);
         * }*/
    }
示例#4
0
 private void Start()
 {
     type = Layer.layerType;
 }