Visão geral do tensor

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.