public void SaveTrainingData() { ANNSaveData savedata = GetData(); string path = Application.dataPath + "/Resources/AI/rec_weights.json"; File.WriteAllText(path, JsonUtility.ToJson(savedata)); }
void InitPerceptrons() { ANNSaveData savedata = LoadWeights(); bias = new Perceptron(this); bias.State = 1f; InitInputPerceptrons(); InitHiddenPerceptrons(savedata); InitOutputPerceptrons(savedata); }
ANNSaveData GetData() { ANNSaveData savedata = new ANNSaveData(); savedata.inputLayerWeights = new List <PerceptronSaveData>(); savedata.hiddenLayerWeights = new List <PerceptronSaveData>(); for (int i = 0; i < m_hiddenLayers.Count; i++) { GetWeightData(ref savedata.inputLayerWeights, m_hiddenLayers[i].hiddenPerceptrons); } GetWeightData(ref savedata.hiddenLayerWeights, m_outputPerceptrons); return(savedata); }
void InitOutputPerceptrons(ANNSaveData savedata) { List <Perceptron> lastHiddenLayerPerceptrons = m_hiddenLayers[m_hiddenLayers.Count - 1].hiddenPerceptrons; for (int i = 0; i < nbOutputPerceptrons; i++) { Perceptron perceptron = new Perceptron(this); for (int j = 0; j < nbHiddenPerceptrons; j++) { Perceptron.Input input = new Perceptron.Input(); input.inputPerceptron = lastHiddenLayerPerceptrons[j]; if (savedata != null) { input.weight = savedata.hiddenLayerWeights[i].weightList[j]; } else { input.weight = Random.Range(-WeightRange, WeightRange); } perceptron.inputs.Add(input); } Perceptron.Input biasInput = new Perceptron.Input(); biasInput.inputPerceptron = bias; if (savedata != null) { List <float> weightList = savedata.hiddenLayerWeights[i].weightList; int lastIndex = weightList.Count - 1; biasInput.weight = weightList[lastIndex]; } else { biasInput.weight = Random.Range(-WeightRange, WeightRange); } perceptron.inputs.Add(biasInput); m_outputPerceptrons.Add(perceptron); } }
void InitHiddenPerceptrons(ANNSaveData savedata) { for (int layerIndex = 0; layerIndex < nbHiddenLayers; layerIndex++) { int nb; List <Perceptron> perceptronList; HiddenLayer layer; layer.hiddenPerceptrons = new List <Perceptron>(); if (layerIndex == 0) { nb = nbInputPerceptrons; perceptronList = m_inputPerceptrons; } else { nb = nbHiddenPerceptrons; perceptronList = m_hiddenLayers[layerIndex - 1].hiddenPerceptrons; } for (int i = 0; i < nbHiddenPerceptrons; i++) { Perceptron perceptron = new Perceptron(this); for (int j = 0; j < nb; j++) { Perceptron.Input input = new Perceptron.Input(); input.inputPerceptron = perceptronList[j]; if (savedata != null) { input.weight = savedata.inputLayerWeights[i].weightList[j]; } else { input.weight = Random.Range(-WeightRange, WeightRange); } perceptron.inputs.Add(input); } Perceptron.Input biasInput = new Perceptron.Input(); biasInput.inputPerceptron = bias; if (savedata != null) { List <float> weightList = savedata.inputLayerWeights[i].weightList; int lastIndex = weightList.Count - 1; biasInput.weight = weightList[lastIndex]; } else { biasInput.weight = Random.Range(-WeightRange, WeightRange); } perceptron.inputs.Add(biasInput); layer.hiddenPerceptrons.Add(perceptron); m_hiddenLayers.Add(layer); } } }