As APIs Swift para TensorFlow usam o tipo Tensor
como o principal meio de realizar computação acelerada. Um Tensor
representa uma matriz multidimensional de valores, e as operações em Tensor
s são despachadas automaticamente para aceleradores disponíveis usando um dos dois back-ends.
Um Tensor
é genérico sobre o tipo de valores que contém. O tipo desses valores deve estar em conformidade com TensorFlowScalar
, sendo os tipos comuns Float
, Int32
e Bool
. Por exemplo, para inicializar dois Float
contendo Tensor
s com alguns valores predeterminados, você poderia fazer o seguinte:
let tensor1 = Tensor<Float>([0.0, 1.0, 2.0])
let tensor2 = Tensor<Float>([1.5, 2.5, 3.5])
Se você tivesse omitido o parâmetro de tipo <Float>
, o Swift inferiria um tipo de Tensor<Double>
. Double
é o tipo padrão para literais de ponto flutuante em Swift. Valores Float
tendem a ser mais comuns em cálculos de aprendizado de máquina, por isso estamos usando isso aqui.
Muitos operadores comuns trabalham em Tensor
s. Por exemplo, para somar dois deles e obter o resultado, você pode fazer o seguinte:
let tensor3 = tensor1 + tensor2
A lista completa de operações que você pode realizar em um Tensor
está disponível na documentação da API .
_Operações _Raw
As operações Tensor
são apoiadas por dois meios diferentes de trabalhar com aceleradores, mas possuem uma interface unificada de alto nível. Nos bastidores, são definidas operações _Raw
que são enviadas para versões _RawXLA
ou _RawTFEager
, dependendo do back-end usado para os Tensor
s em questão. Essas ligações _Raw
para TensorFlow ou X10 são geradas automaticamente.
Normalmente, você não precisaria interagir diretamente com as operações _Raw
. Interfaces idiomáticas do Swift foram construídas sobre elas, e é assim que você normalmente realizará cálculos Tensor
.
No entanto, nem todas as operações subjacentes do TensorFlow têm interfaces Swift correspondentes, portanto, ocasionalmente, você pode precisar acessar operadores _Raw
no seu código. Se precisar fazer isso, um tutorial interativo está disponível para demonstrar como isso funciona.