Visão geral
Reinterpretação em C# puro de um problema clássico de Machine Learning no navegador (inspirado num artigo que resolve o mesmo problema com TensorFlow.js): uma rede neural feedforward que reconhece o nome de uma cor a partir do RGB. Toda a matemática — multiplicação de matriz, forward pass, backpropagation, gradiente descendente — está escrita à mão, sem ML.NET nem nenhum binding de TensorFlow.
Como funciona
Motor de rede neural genérico (RedeNeural.Nucleo) separado do domínio específico do
problema (ClassificadorCores.Dominio). Um pipeline de treino offline (console)
gera um dataset sintético de 11 cores, treina, avalia acurácia real, e salva os pesos em
JSON. A demo em Blazor WebAssembly carrega esse modelo pré-treinado e prevê inteiramente
no navegador, sem nenhuma chamada de servidor.
Verificação matemática
O backpropagation escrito à mão foi verificado com gradient checking: o gradiente analítico (das fórmulas de derivada) é comparado ao gradiente numérico (diferença finita) em vários pesos e bias de ambas as camadas. Essa técnica encontrou e ajudou a corrigir um bug real de referência obsoleta no próprio teste.
Testes
52 testes automatizados (31 no motor de rede neural — matriz, ativações, perda, gradient checking e convergência — e 21 no domínio, incluindo o pipeline de treino real reproduzido com os hiperparâmetros de produção, afirmando acurácia real no conjunto de teste).
Stack
C# 12, .NET 8, Blazor WebAssembly, xUnit.