コード例 #1
0
        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());
        }
コード例 #2
0
        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();
        }
コード例 #3
0
ファイル: HuffmanTree.cs プロジェクト: OwenDF/NeuralNetwork
        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);
            }
        }
コード例 #4
0
ファイル: FileHandler.cs プロジェクト: OwenDF/NeuralNetwork
 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);
         }
     }
 }
コード例 #5
0
ファイル: FileHandler.cs プロジェクト: OwenDF/NeuralNetwork
 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())}");
             }
         }
     }
 }