Пример #1
0
    void SelfTrainNetwork()
    {
        _NetSelfTrain = true;

        var inputlayer   = new DenseLayer(10, 4, Activation.Sigmoid());
        var hiddenlayer1 = new DenseLayer(inputlayer, Activation.Sigmoid(), 100, LayerType.Hidden);
        var hiddenlayer2 = new DenseLayer(hiddenlayer1, Activation.Sigmoid(), 20, LayerType.Hidden);
        var outputlayer  = new DenseLayer(hiddenlayer2, Activation.Linear(), 9, LayerType.Output);

        Network = outputlayer;

        Network.Initilize();
        _NetSelfTrain = true;
    }
Пример #2
0
    IEnumerator TrainNetwork()
    {
        var inputlayer   = new DenseLayer(10, 4, Activation.ReLU());
        var hiddenlayer1 = new DenseLayer(inputlayer, Activation.ReLU(), 30, LayerType.Hidden);
        var hiddenlayer2 = new DenseLayer(hiddenlayer1, Activation.ReLU(), 500, LayerType.Hidden);
        var outputlayer  = new DenseLayer(hiddenlayer1, Activation.TangesHyperbolic(), 2, LayerType.Output);

        Network = outputlayer;

        outputlayer.Initilize();

        var trainingdata = GenerateTrainingData();

        int epoch      = 0;
        int epochsize  = trainingdata.GetLength(0);
        var epocherror = float.MaxValue;

        yield return(0);

        while (epocherror > 10 && _Training)
        {
            yield return(0);

            epocherror = 0f;
            epoch++;
            for (var t = 0; t < epochsize; t++)
            {
                var truth = trainingdata[t, 1];
                var input = trainingdata[t, 0];

                var output = (Tensor1D)outputlayer.Forward(input);
                var dif    = output - truth;
                var sq     = dif * dif;
                epocherror += (float)Math.Pow(sq.ElementSum(), 2);
                outputlayer.Backward(dif);
            }
            ErrorText.text = epocherror.ToString();
        }
        ErrorText.text = ("Finished!");
        _Training      = false;
    }