private void InitNetwork() { var inputLayer = new Layer("input", _wordCollection.GetNumberOfUniqueWords(), new Layer[0]); var hiddenLayer = new Layer("hidden", _numberOfDimensions, new[] { inputLayer }); _neuralNetwork = new Layer("output", _wordCollection.GetNumberOfUniqueWords(), new[] { hiddenLayer }); // do not initialise output weights (?) hiddenLayer.Initialise(new Random()); }
private void InitNetwork() { long wordIndex, dimensionIndex; ulong nextRandom = 1; var numberOfWords = _wordCollection.GetNumberOfUniqueWords(); _hiddenLayerWeights = new float[numberOfWords, _numberOfDimensions]; if (_negative > 0) { _outputLayerWeights = new float[_wordCollection.GetNumberOfUniqueWords(), _numberOfDimensions]; for (wordIndex = 0; wordIndex < _wordCollection.GetNumberOfUniqueWords(); wordIndex++) { for (dimensionIndex = 0; dimensionIndex < _numberOfDimensions; dimensionIndex++) { _outputLayerWeights[wordIndex, dimensionIndex] = 0; } } } for (wordIndex = 0; wordIndex < _wordCollection.GetNumberOfUniqueWords(); wordIndex++) { for (dimensionIndex = 0; dimensionIndex < _numberOfDimensions; dimensionIndex++) { nextRandom = LinearCongruentialGenerator(nextRandom); _hiddenLayerWeights[wordIndex, dimensionIndex] = ((nextRandom & 0xFFFF) / (float)65536 - (float)0.5) / _numberOfDimensions; } } var huffmanTree = new HuffmanTree(); huffmanTree.Create(_wordCollection); GC.Collect(); }
private static void IterateQueue(WordCollection wordCollection, List <Node> queue) { var numberOfInteriorNodes = 0; for (var a = 0; a < wordCollection.GetNumberOfUniqueWords() - 1; a++) { var node = CreateInteriorNode(queue, numberOfInteriorNodes); numberOfInteriorNodes++; InsertNodeInQueue(queue, node); } }
public void WriteDescription(WordCollection wordCollection, int numberOfDimensions) { using (var fs = new FileStream(_outputFile, FileMode.OpenOrCreate, FileAccess.Write)) { fs.Seek(0, SeekOrigin.End); using (var writer = new StreamWriter(fs, Encoding.UTF8)) { writer.WriteLine(wordCollection.GetNumberOfUniqueWords()); writer.WriteLine(numberOfDimensions); } } }
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())}"); } } } }