Home › Info modding › Reti apprese
Capitolo 10

Reti apprese

Perché un cervello può includere un .oann, l'aritmetica intera, gli strati, eseguirne una, oa-tool brain net, i limiti e che cosa mostra la Libreria.

Questo capitolo riassume docs/brains/oabrain-standard.md, docs/brains/authoring.md e docs/playing-with-brains.md. Quei documenti sono il testo normativo.

Perché un cervello può usarne una

Una rete si addestra altrove e viaggia nel pacchetto. Lo script la chiama quando vuole una decisione appresa. È una scelta dell'autore. Il giocatore computer proprio del motore resta il predefinito, e mettere al posto un cervello che porta dei pesi resta una scelta: un posto computer sulla macchina che lo esegue.

.oann e aritmetica intera

Un file di rete è un .oann di formato 1. Un tipo di tensore è int8, int16 o int32. Un esponente memorizzato va da -48 a 16. Gli input e le attivazioni sono int16. Gli output sono int16, salvo un output argmax, che è int32. Gli stessi input danno gli stessi output su ogni macchina.

Il digest si controlla quando si impacchetta, quando si installa, e di nuovo quando un posto carica il cervello, prima che si apra la sandbox. Una rete che porterebbe il posto oltre 64 MiB viene rifiutata prima di essere allocata. Il posto viene rimosso e lo tiene il giocatore computer integrato. Il caricamento resta fuori da ogni fase.

Gli strati

I tipi di strato, in quest'ordine. Gli input e le attivazioni sono int16.

StratoCosa fa
denseL'output è int16.
conv2dL'output è int16.
maxpoolL'output è int16.
reluL'output è int16.
leaky_reluL'output è int16.
tanhL'output è int16.
sigmoidL'output è int16.
addL'output è int16.
concatL'output è int16.
flattenL'output è int16.
softmaxL'output è int16.
argmaxL'output è int32.
embeddingL'output è int16.

Eseguirne una

brain.network(id) restituisce l'handle. brain.tensor costruisce un tensore immutabile da 1 a 4.194.304 numeri. net:run prende una tabella con esattamente i nomi di input della rete e restituisce una tabella nuova. Un output int16 è un tensore. Un output argmax è un intero Lua. brain.grid costruisce un tensore quadrato da 1 a 10 di questi nomi di strato, di dimensione 8, 16, 32, 64 o 128, e 64 è il valore predefinito: sight, explored, water, height, metal, own, allies, enemies, threat e radar. L'esempio dello standard registra un campione:

brain.record{
  features = { sectors = brain.grid({"own", "explored"}, 8) },
  decision = 0
}

features va da 1 a 16 tensori. decision è un intero o un tensore. La chiamata scrive un campione di addestramento quando la partita sta registrando, e controlla e addebita lo stesso quando nessun file è aperto. Un'opzione può lasciare una rete inutilizzata: leggi me.options e salta la chiamata quando il giocatore la spegne. La rete viene caricata lo stesso con il pacchetto.

Farne una con oa-tool brain net

oa-tool brain net legge un modello ONNX di opset da 11 a 21 e scrive un .oann. Questo è il comando che stampa la guida:

oa-tool brain net MODEL.onnx --calibrate DATA [--out FILE] [--weights int8|int16] [--max-difference X] [--force] [--json]

I pesi sono int8, salvo che sia impostato --weights int16. --calibrate è un file di righe JSON. Il rapporto è la differenza più grande su ogni output, o la quota di campioni su cui un argmax concorda. --max-difference rifiuta una differenza più grande e non scrive nulla. Elenca il file sotto networks con il suo sha256. I byte devono dare quel digest.

I limiti

Un file, un'esecuzione e un record restano dentro queste dimensioni.

LimiteValore
Il file .oannal massimo 64 MiB
Tensori in un fileda 2 a 4,096
Strati in un fileda 1 a 1,024
Il rango di un tensore, e una dimensionerango da 1 a 4; una dimensione da 1 a 65,535
Elementi in un tensore del fileal massimo 16,777,216
pesi di dense, conv2d ed embedding insiemeal massimo 8,388,608 elementi
Operazioni che un'esecuzione può compiereal massimo 268,435,456
Memoria di rete, a parte il tetto Lua64 MiB (67,108,864 byte)
Numeri in un brain.tensorda 1 a 4,194,304
brain.gridda 1 a 10 nomi di strato; dimensione 8, 16, 32, 64 o 128. 64 è il valore predefinito
Un brain.record, e il file di recordda 1 a 16 tensori, al massimo 4,194,304 elementi. Il file si ferma a 1 GiB

Che cosa vede un giocatore

La Libreria etichetta un cervello che porta dei pesi con Rete e la riga Usa una rete appresa ({size}). La voce mostra anche i livelli del cervello, con che cosa funziona e se ha la vista completa. Il giocatore computer integrato resta elencato per primo, e resta il predefinito finché un giocatore non ne sceglie un altro.