public void AddConnection(string p_inLayerId, string p_outLayerId, Connection p_connecion) { NeuralGroup inGroup = _layers[p_inLayerId].OutputGroup; NeuralGroup outGroup = _layers[p_outLayerId].InputGroup; _connections.Add(p_connecion.Id, p_connecion); if (inGroup != null) { inGroup.AddOutConnection(p_connecion); } if (outGroup != null) { outGroup.AddInConnection(p_connecion); } CreateGraphBase(); }
public Connection(NeuralGroup p_inGroup, NeuralGroup p_outGroup, bool p_trainable, string p_inLayer = null, string p_outLayer = null) { _id = GenID(); _inGroup = p_inGroup; _outGroup = p_outGroup; if (p_inGroup != null) { _inDim = p_inGroup.Dim; } else { _inDim = p_outGroup.Dim; } _outDim = p_outGroup.Dim; _weights = BasePool.Instance.Get(_outDim, _inDim); _trainable = p_trainable; _inLayer = p_inLayer; _outLayer = p_outLayer; }
public Connection AddConnection(string p_inLayerId, string p_outLayerId, Connection.INIT p_init = Connection.INIT.UNIFORM, bool p_trainable = true, float p_limit = 0.05f) { NeuralGroup inGroup = _layers[p_inLayerId].OutputGroup; NeuralGroup outGroup = _layers[p_outLayerId].InputGroup; Connection connection = new Connection(inGroup, outGroup, p_trainable, _layers[p_inLayerId].Id, _layers[p_outLayerId].Id); connection.Init(p_init, p_limit); _connections.Add(connection.Id, connection); if (inGroup != null) { inGroup.AddOutConnection(connection); } if (outGroup != null) { outGroup.AddInConnection(connection); } CreateGraphBase(); return(connection); }
public Connection(string p_id, NeuralGroup p_inGroup, NeuralGroup p_outGroup, JSONObject p_data) { _id = p_id; _inGroup = p_inGroup; _outGroup = p_outGroup; if (p_inGroup != null) { _inDim = p_inGroup.Dim; } else { _inDim = p_outGroup.Dim; } _outDim = p_outGroup.Dim; int nRows = _outGroup.Dim; int nCols = _inGroup == null ? _outGroup.Dim : _inGroup.Dim; _weights = BasePool.Instance.Get(nRows, nCols); byte[] buffer = Convert.FromBase64String(p_data["weights"].str); MemoryStream stream = new MemoryStream(buffer); BinaryReader reader = new BinaryReader(stream); for (int i = 0; i < nRows; i++) { for (int j = 0; j < nCols; j++) { _weights[i, j] = reader.ReadSingle(); } } _trainable = p_data["trainable"].str.Equals("1"); _inLayer = p_data.HasField("inlayer") ? p_data["inlayer"].str : null; _outLayer = p_data.HasField("outlayer") ? p_data["outlayer"].str : null; }