Las API de Swift para TensorFlow utilizan el tipo Tensor
como medio principal para realizar cálculos acelerados. Un Tensor
representa una matriz multidimensional de valores, y las operaciones en Tensor
se envían automáticamente a los aceleradores disponibles utilizando uno de los dos backends.
Un Tensor
es genérico sobre el tipo de valores que contiene. El tipo de estos valores debe ajustarse a TensorFlowScalar
, siendo los tipos comunes Float
, Int32
y Bool
. Por ejemplo, para inicializar dos Tensor
que contienen Float
con algunos valores predeterminados, puedes hacer lo siguiente:
let tensor1 = Tensor<Float>([0.0, 1.0, 2.0])
let tensor2 = Tensor<Float>([1.5, 2.5, 3.5])
Si hubiera omitido el parámetro de tipo <Float>
, Swift inferiría un tipo de Tensor<Double>
. Double
es el tipo predeterminado para literales de punto flotante en Swift. Los valores Float
tienden a ser más comunes en los cálculos de aprendizaje automático, por eso los usaremos aquí.
Muchos operadores comunes trabajan en Tensor
s. Por ejemplo, para sumar dos de ellos y obtener el resultado, puedes hacer lo siguiente:
let tensor3 = tensor1 + tensor2
La lista completa de operaciones que puede realizar en un Tensor
está disponible en la documentación de la API .
_Operaciones _Raw
Las operaciones Tensor
están respaldadas por dos medios diferentes de trabajar con aceleradores, pero tienen una interfaz unificada de alto nivel. Debajo del capó, se definen operaciones _Raw
que se envían a las versiones _RawXLA
o _RawTFEager
, dependiendo del backend utilizado para los Tensor
en cuestión. Estos enlaces _Raw
a TensorFlow o X10 se generan automáticamente.
Normalmente, no sería necesario interactuar directamente con las operaciones _Raw
. Se han construido interfaces idiomáticas de Swift sobre estas, y así es como normalmente realizarás cálculos Tensor
.
Sin embargo, no todas las operaciones subyacentes de TensorFlow tienen interfaces Swift coincidentes, por lo que ocasionalmente es posible que necesites acceder a operadores _Raw
en tu código. Si necesita hacerlo, hay un tutorial interactivo disponible para demostrar cómo funciona.