示例#1
0
    public void Awake()
    {
        if (!GenerateGraphFromCode)
        {
            return;
        }
        Random.InitState(0);

//        return;
        points = new List <Transform>();
        for (float x = -1f; x < 1f; x += 0.1f)
        {
            for (float y = -1f; y < 1f; y += 0.1f)
            {
                var p = new GameObject("grid", typeof(SpriteRenderer));
                p.transform.parent = transform;
                p.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Box Neuron");
                p.transform.localScale = new Vector3(0.1f, 0.1f, 1f);
                grid.Add(p.GetComponent <SpriteRenderer>());
                p.transform.localPosition = new Vector3(x, y, 0);

                var c = gradient.Evaluate(0);
                c.a = 0.4f;
                p.GetComponent <SpriteRenderer>().color        = c;
                p.GetComponent <SpriteRenderer>().sortingOrder = -100;
            }
        }
        for (int i = 0; i < 30; i++)
        {
            var p = new GameObject("point", typeof(SpriteRenderer));
            p.transform.parent = transform;
            p.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Box Neuron");
            p.transform.localScale = new Vector3(0.05f, 0.05f, 1f);
            points.Add(p.transform);
            if (i < 16)
            {
                p.GetComponent <SpriteRenderer>().color = gradient.Evaluate(0);
                p.transform.localPosition = Random.insideUnitCircle * 0.5f;
//                p.transform.localPosition = Random.insideUnitCircle * 0.3f + new Vector2(-0.5f, 0);
                p.tag = "low";
            }
            else
            {
                p.GetComponent <SpriteRenderer>().color = gradient.Evaluate(1);
                p.transform.localPosition = Random.insideUnitCircle.normalized * 0.7f;
//                p.transform.localPosition = Random.insideUnitCircle.normalized * 0.3f + new Vector2(0.5f, 0);
                p.tag = "high";
            }
        }

        var layer1 = new List <CONTENT_NeuronLstm>();

        // input
        for (int i = 0; i < 2; i++)
        {
            var g = new GameObject("input 0 (" + i + ")");
            g.transform.localPosition = new Vector3(0, i);
            var v = g.AddComponent <CONTENT_NodeValue>();
            v.value    = Random.Range(-0.5f, 0.5f);
            v.display  = v.gameObject.AddComponent <CONTENT_Display>();
            v.canTrain = false;
            input.Add(v);
        }
        // layer 1
        for (int i = 0; i < 1; i++)
        {
            var g = new GameObject("layer 1 (" + i + ")");
            g.transform.localPosition = new Vector3(1, i * 0.4f);
            var n = g.AddComponent <CONTENT_NeuronLstm>();
            foreach (var a in input)
            {
                foreach (var b in n.input)
                {
                    CONTENT_ConnectionWeighted.Create(a, b);
                }
//                CONTENT_ConnectionWeighted.Create(item, n.input);
            }
            layer1.Add(n);
        }


//        // input
//        for (int i = 0; i < 2; i++)
//        {
//            var g = new GameObject("input 0 (" + i + ")");
//            g.transform.localPosition = new Vector3(0, i);
//            var v = g.AddComponent<CONTENT_NodeValue>();
//            v.value = Random.Range(-0.5f, 0.5f);
//            v.display = v.gameObject.AddComponent<CONTENT_Display>();
//            v.canTrain = false;
//            input.Add(v);
//        }
//
//        // layer 1
//        for (int i = 0; i < 6; i++)
//        {
//            var g = new GameObject("layer 1 (" + i + ")");
//            g.transform.localPosition = new Vector3(1, i * 0.4f);
//            var n = g.AddComponent<CONTENT_Neuron>();
//            foreach (var item in input)
//            {
//                CONTENT_ConnectionWeighted.Create(item, n.input);
//            }
//            layer1.Add(n);
//        }
//        // layer 2
//        for (int i = 0; i < 3; i++)
//        {
//            var g = new GameObject("layer 2 (" + i + ")");
//            g.transform.localPosition = new Vector3(2, i * 0.66f);
//            var n = g.AddComponent<CONTENT_Neuron>();
//            foreach (var item in layer1)
//            {
//                CONTENT_ConnectionWeighted.Create(item.output, n.input);
//            }
//            layer2.Add(n);
//        }
//
        // output
        {
            var g = new GameObject("output");
            g.transform.localPosition = new Vector3(3, 0);
            output         = g.AddComponent <CONTENT_NodeAdd>();
            output.tag     = "output";
            output.display = output.gameObject.AddComponent <CONTENT_Display>();
            foreach (var item in layer1)
            {
                CONTENT_ConnectionWeighted.Create(item.output, output);
//                CONTENT_Connection.Create(item.output, output, true);
            }
        }
//        CONTENT_ConnectionWeighted.Create(input[0], output);
    }
 public void Start()
 {
     CONTENT_ConnectionWeighted.Create(from, to, weight);
 }