A tarefa é a do artigo: y = Σ tanh²(aₖ·x) − 1 com três termos, entrada de dimensão 8, lote cheio. Um bloco é camada, normalização, ReLU, camada, normalização — e, se o atalho estiver ligado, a soma entra antes da última ReLU. Tudo é sorteado pelo splitmix64 da série, e nada aqui depende do relógio: mesma configuração, mesmos números.
A escala aqui é menor que a do artigo, e vale dizer por quê: largura 12 e lote 32, contra 16 e 64 lá, porque a rede treina no seu navegador a cada mexida no controle. Os valores absolutos não batem com os das tabelas; o que bate é a forma — a perda subindo com a profundidade sem atalho, e não subindo com ele. Rodado na configuração do artigo, este mesmo código em JavaScript reproduz as seis linhas da tabela de gradientes nos sete dígitos impressos, e é o que IL21_lab_cross.py confere.
Escala logarítmica. A linha tracejada é a perda que a testemunha alcança — a rede rasa de quatro camadas copiada para dentro desta profundidade, com identidades no resto. Ela é um ponto do espaço de parâmetros desta rede, e o que a curva fizer acima dela é o otimizador não achando o que está lá.
Uma barra por camada, da entrada à saída, em escala logarítmica. Ligue e desligue o atalho na mesma profundidade: o perfil da rede simples abre em leque, e o da residual não. É a forma da Seção 7 do artigo — em escala menor, com razões menores — e repare no que importa: o gradiente da primeira camada é o maior, não o menor.