
O TINN (Tiny Neural Network) é uma biblioteca de rede neural livre de dependência de 200 linhas, escrita em C99.
Para uma demonstração sobre como aprender dígitos escritos à mão, obtenha alguns dados de treinamento:
wget http://archive.ics.uci.edu/ml/machine-learning-databases/semeion/semeion.data
make; ./test
Os dados de treinamento consistem em dígitos escritos à mão, escritos lenta e rapidamente. Cada linha no conjunto de dados corresponde a um dígito manuscrito. Cada dígito tem 16x16 pixels de tamanho, fornecendo 256 entradas à rede neural.
No final da linha, 10 dígitos significam o dígito escrito à mão:
0: 1 0 0 0 0 0 0 0 0 0
1: 0 1 0 0 0 0 0 0 0 0
2: 0 0 1 0 0 0 0 0 0 0
3: 0 0 0 1 0 0 0 0 0 0
4: 0 0 0 0 1 0 0 0 0 0
...
9: 0 0 0 0 0 0 0 0 0 1
Isso fornece 10 saídas à rede neural. O programa de teste produzirá a precisão de cada dígito. Espere acima de 99% de precisão para o dígito correto e menos essa precisão de 0,1% para os outros dígitos.
Portátil - é executado onde um compilador C99 ou C ++ 98 está presente.
Ativação sigmoidal.
Uma camada oculta.
O TINN nunca usará mais do que a biblioteca padrão C.
O TINN é ótimo para sistemas incorporados. Treine um modelo no seu poderoso desktop e carregue -o em um microcontrolador e use o conversor analógico para digital para prever eventos em tempo real.
O código -fonte do TINN sempre será inferior a 200 linhas. As funções externas no cabeçalho do zumbido são protegidas com o espaço para nome XT para o Tinn externo .
O TINN pode ser facilmente multithread com um pouco de ingenuidade, mas o ramo principal permanecerá um único rosqueado para ajudar no desenvolvimento de sistemas incorporados.
O TINN não semeia o gerador de números aleatórios. Não se esqueça de fazê -lo.
Sempre embaralhe seus dados de entrada. Embaralhar novamente após cada iteração de treinamento.
Obtenha maior precisão de treinamento recozando sua taxa de aprendizado. Por exemplo, multiplique sua taxa de aprendizado por 0,99 toda iteração de treinamento. Isso se concentrará em um bom mínimo de aprendizado.
Tinn é uma prática em minimalismo.
O TINN não é uma biblioteca neural de rede neural de destaque como Kann ou Genann:
https://github.com/attractivechaos/kann
https://github.com/codeplea/genann
Rust: https://github.com/dvdplm/rustinn
Um tutorial usando o TINN NN e CTYPES
Tiny Biblioteca de Rede Neural em 200 linhas de código