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)); } }
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(); } } }
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); * }*/ }
private void Start() { type = Layer.layerType; }