Przegląd tensora

Interfejsy API Swift for TensorFlow używają typu Tensor jako podstawowego sposobu wykonywania przyspieszonych obliczeń. Tensor reprezentuje wielowymiarową tablicę wartości, a operacje na Tensor są automatycznie wysyłane do dostępnych akceleratorów przy użyciu jednego z dwóch backendów.

Tensor jest ogólny jeśli chodzi o typ wartości, które zawiera. Typ tych wartości musi być zgodny z TensorFlowScalar , przy czym typowymi typami są Float , Int32 i Bool . Na przykład, aby zainicjować dwa elementy Tensor zawierające Float z pewnymi z góry określonymi wartościami, możesz wykonać następujące czynności:

let tensor1 = Tensor<Float>([0.0, 1.0, 2.0])
let tensor2 = Tensor<Float>([1.5, 2.5, 3.5])

Jeśli pominąłeś parametr typu <Float> , Swift wywnioskowałby typ Tensor<Double> . Double jest domyślnym typem literałów zmiennoprzecinkowych w języku Swift. Wartości Float są zwykle bardziej powszechne w obliczeniach uczenia maszynowego, więc użyjemy ich tutaj.

Wiele popularnych operatorów pracuje na Tensor . Na przykład, aby dodać dwa z nich i uzyskać wynik, możesz wykonać następujące czynności:

let tensor3 = tensor1 + tensor2

Pełna lista operacji jakie możesz wykonać na Tensor dostępna jest w dokumentacji API .

_Raw operacje

Operacje Tensor są wspierane przez dwa różne sposoby pracy z akceleratorami, ale mają ujednolicony interfejs wysokiego poziomu. Pod maską zdefiniowano operacje _Raw , które wysyłają do wersji _RawXLA lub _RawTFEager , w zależności od backendu używanego dla danego Tensor . Te powiązania _Raw z TensorFlow lub X10 są generowane automatycznie.

Zwykle nie trzeba bezpośrednio wchodzić w interakcję z operacjami _Raw . Na ich podstawie zbudowano interfejsy Idiomatic Swift i w ten sposób zazwyczaj wykonuje się obliczenia Tensor .

Jednak nie wszystkie podstawowe operacje TensorFlow mają pasujące interfejsy Swift, więc czasami może być konieczne uzyskanie dostępu do operatorów _Raw w kodzie. Jeśli zajdzie taka potrzeba, dostępny jest interaktywny samouczek pokazujący, jak to działa.