Le API Swift per TensorFlow utilizzano il tipo Tensor
come mezzo principale per eseguire calcoli accelerati. Un Tensor
rappresenta un array multidimensionale di valori e le operazioni sui Tensor
vengono automaticamente inviate agli acceleratori disponibili utilizzando uno dei due backend.
Un Tensor
è generico riguardo al tipo di valori che contiene. Il tipo di questi valori deve essere conforme a TensorFlowScalar
, con i tipi comuni Float
, Int32
e Bool
. Ad esempio, per inizializzare due Tensor
contenenti Float
con alcuni valori predeterminati, è possibile effettuare le seguenti operazioni:
let tensor1 = Tensor<Float>([0.0, 1.0, 2.0])
let tensor2 = Tensor<Float>([1.5, 2.5, 3.5])
Se avessi tralasciato il parametro di tipo <Float>
, Swift dedurrebbe un tipo di Tensor<Double>
. Double
è il tipo predefinito per i valori letterali a virgola mobile in Swift. I valori Float
tendono ad essere più comuni nei calcoli di machine learning, quindi li utilizzeremo qui.
Molti operatori comuni lavorano su Tensor
s. Ad esempio, per sommarne due e ottenere il risultato, puoi procedere come segue:
let tensor3 = tensor1 + tensor2
L'elenco completo delle operazioni che puoi eseguire su un Tensor
è disponibile nella documentazione dell'API .
_Operazioni _Raw
Le operazioni Tensor
sono supportate da due diversi modi di lavorare con gli acceleratori, ma hanno un'interfaccia unificata di alto livello. Sotto il cofano, vengono definite le operazioni _Raw
che vengono inviate alle versioni _RawXLA
o _RawTFEager
, a seconda del backend utilizzato per i Tensor
in questione. Questi collegamenti _Raw
a TensorFlow o X10 vengono generati automaticamente.
Normalmente non sarebbe necessario interagire direttamente con le operazioni _Raw
. Le interfacce Swift idiomatiche sono state costruite sopra queste, ed è così che in genere eseguirai i calcoli Tensor
.
Tuttavia, non tutte le operazioni TensorFlow sottostanti hanno interfacce Swift corrispondenti, quindi occasionalmente potresti dover accedere agli operatori _Raw
nel tuo codice. Se necessario, è disponibile un tutorial interattivo per dimostrare come funziona.