public void WriteOutputMatrix(WordCollection wordCollection, Layer neuralNetwork) { using (var fs = new FileStream(_outputFile, FileMode.OpenOrCreate, FileAccess.Write)) { fs.Seek(0, SeekOrigin.End); using (var writer = new StreamWriter(fs, Encoding.UTF8)) { var words = wordCollection.GetWords().ToList(); var stringBuilder = new StringBuilder(); stringBuilder.Append(","); foreach (var word in words) { stringBuilder.Append($"{word},"); } stringBuilder.AppendLine(); for (var i = 0; i < words.Count; i++) { var inputs = new double[words.Count]; inputs[i] = 1; neuralNetwork.PopulateAllOutputs(inputs); stringBuilder.Append($"{words[i]},"); for (var j = 0; j < words.Count; j++) { stringBuilder.Append($"{neuralNetwork.Nodes[j].Output},"); } stringBuilder.AppendLine(); } writer.WriteLine(stringBuilder.ToString()); } } }
private void InitUnigramTable() { if (_wordCollection.GetNumberOfUniqueWords() == 0) { return; } int a; var power = 0.75; _table = new int[TableSize]; var trainWordsPow = _wordCollection.GetTrainWordsPow(power); var i = 0; var keys = _wordCollection.GetWords().ToArray(); var d1 = Math.Pow(_wordCollection.GetOccurrenceOfWord(keys.First()), power) / trainWordsPow; for (a = 0; a < TableSize; a++) { _table[a] = i; if (a / (double)TableSize > d1) { i++; d1 += Math.Pow(_wordCollection.GetOccurrenceOfWord(keys[i]), power) / trainWordsPow; } if (i >= _wordCollection.GetNumberOfUniqueWords()) { i = _wordCollection.GetNumberOfUniqueWords() - 1; } } }
public void WriteOutput(WordCollection wordCollection, int numberOfDimensions, float[,] hiddenLayerWeights) { using (var fs = new FileStream(_outputFile, FileMode.OpenOrCreate, FileAccess.Write)) { fs.Seek(0, SeekOrigin.End); using (var writer = new StreamWriter(fs, Encoding.UTF8)) { var keys = wordCollection.GetWords().ToArray(); for (var a = 0; a < wordCollection.GetNumberOfUniqueWords(); a++) { var bytes = new List <byte>(); for (var dimensionIndex = 0; dimensionIndex < numberOfDimensions; dimensionIndex++) { bytes.AddRange(BitConverter.GetBytes(hiddenLayerWeights[a, dimensionIndex])); } writer.WriteLine($"{keys[a]}\t{Convert.ToBase64String(bytes.ToArray())}"); } } } }