Konstrukcje

Poniższe struktury są dostępne na całym świecie.

  • Połączenie dwóch sekwencji z tym samym typem elementu.

    Deklaracja

    public struct Concatenation<Base1: Sequence, Base2: Sequence>: Sequence
    where Base1.Element == Base2.Element
    extension Concatenation: Collection where Base1: Collection, Base2: Collection
    extension Concatenation: BidirectionalCollection
    where Base1: BidirectionalCollection, Base2: BidirectionalCollection
    extension Concatenation: RandomAccessCollection
    where Base1: RandomAccessCollection, Base2: RandomAccessCollection
  • Obrócony widok na kolekcję.

    Deklaracja

    public struct RotatedCollection<Base> : Collection where Base : Collection
    extension RotatedCollection: BidirectionalCollection
    where Base: BidirectionalCollection
    extension RotatedCollection: RandomAccessCollection
    where Base: RandomAccessCollection
  • Deklaracja

    public struct AnyDifferentiable : Differentiable
  • Wartość pochodna usunięta typem.

    Typ AnyDerivative przekazuje swoje operacje do dowolnej bazowej wartości pochodnej zgodnej z Differentiable i AdditiveArithmetic , ukrywając szczegóły wartości bazowej.

    Deklaracja

    @frozen
    public struct AnyDerivative : Differentiable & AdditiveArithmetic
  • Wielowymiarowa tablica elementów będąca uogólnieniem wektorów i macierzy na potencjalnie wyższe wymiary.

    Parametr ogólny Scalar opisuje typ skalarów w tensorze (taki jak Int32 , Float itp.).

    Deklaracja

    @frozen
    public struct Tensor<Scalar> where Scalar : TensorFlowScalar
    extension Tensor: Collatable
    extension Tensor: CopyableToDevice
    extension Tensor: AnyTensor
    extension Tensor: ExpressibleByArrayLiteral
    extension Tensor: CustomStringConvertible
    extension Tensor: CustomPlaygroundDisplayConvertible
    extension Tensor: CustomReflectable
    extension Tensor: TensorProtocol
    extension Tensor: TensorGroup
    extension Tensor: ElementaryFunctions where Scalar: TensorFlowFloatingPoint
    extension Tensor: VectorProtocol where Scalar: TensorFlowFloatingPoint
    extension Tensor: Mergeable where Scalar: TensorFlowFloatingPoint
    extension Tensor: Equatable where Scalar: Equatable
    extension Tensor: Codable where Scalar: Codable
    extension Tensor: AdditiveArithmetic where Scalar: Numeric
    extension Tensor: PointwiseMultiplicative where Scalar: Numeric
    extension Tensor: Differentiable & EuclideanDifferentiable where Scalar: TensorFlowFloatingPoint
    extension Tensor: DifferentiableTensorProtocol
    where Scalar: TensorFlowFloatingPoint
  • Funkcja pullback, która wykonuje transpozycję rozgłaszania dwóch Tensors .

    Deklaracja

    public struct BroadcastingPullback
  • Kontekst przechowujący lokalne informacje kontekstowe wątku używane przez interfejsy API głębokiego uczenia się, takie jak warstwy.

    Użyj Context.local aby pobrać bieżący kontekst lokalny wątku.

    Przykłady:

    • Ustaw bieżącą fazę uczenia się na szkolenie, aby warstwy takie jak BatchNorm obliczały średnią i wariancję po zastosowaniu do danych wejściowych.
      Context.local.learningPhase = .training
    
    • Ustaw bieżącą fazę uczenia się na wnioskowanie, aby warstwy takie jak Dropout nie traciły jednostek po zastosowaniu do danych wejściowych.
      Context.local.learningPhase = .inference
    

    Deklaracja

    public struct Context
  • Warstwa splotu 1-D (np. splot czasowy w szeregu czasowym).

    Warstwa ta tworzy filtr splotu, który jest splatany z wejściem warstwy w celu wytworzenia tensora wyników.

    Deklaracja

    @frozen
    public struct Conv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Warstwa splotu 2-D (np. splot przestrzenny na obrazach).

    Warstwa ta tworzy filtr splotu, który jest splatany z wejściem warstwy w celu wytworzenia tensora wyników.

    Deklaracja

    @frozen
    public struct Conv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Warstwa splotu 3-D do splotu przestrzennego/przestrzenno-czasowego na obrazach.

    Warstwa ta tworzy filtr splotu, który jest splatany z wejściem warstwy w celu wytworzenia tensora wyników.

    Deklaracja

    @frozen
    public struct Conv3D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Warstwa splotu transponowanego 1-D (np. splot czasowy transponowany na obrazach).

    Warstwa ta tworzy filtr splotu, który jest splatany transpozycją z danymi wejściowymi warstwy w celu wytworzenia tensora wyników.

    Deklaracja

    @frozen
    public struct TransposedConv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Dwuwymiarowa transponowana warstwa splotu (np. przestrzenna transpozycja splotu na obrazach).

    Warstwa ta tworzy filtr splotu, który jest splatany transpozycją z danymi wejściowymi warstwy w celu wytworzenia tensora wyników.

    Deklaracja

    @frozen
    public struct TransposedConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Trójwymiarowa transponowana warstwa splotu (np. przestrzenna transpozycja splotu na obrazach).

    Warstwa ta tworzy filtr splotu, który jest splatany transpozycją z danymi wejściowymi warstwy w celu wytworzenia tensora wyników.

    Deklaracja

    @frozen
    public struct TransposedConv3D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Dwuwymiarowa warstwa splotu wgłębnego.

    Warstwa ta tworzy rozdzielne filtry splotu, które są splatane z wejściem warstwy w celu wytworzenia tensora wyników.

    Deklaracja

    @frozen
    public struct DepthwiseConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Warstwa służąca do dodania zerowego wypełnienia w wymiarze czasowym.

    Deklaracja

    public struct ZeroPadding1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Warstwa służąca do dodawania zer w wymiarach przestrzennych.

    Deklaracja

    public struct ZeroPadding2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Warstwa umożliwiająca dodanie zerowego wypełnienia w wymiarach przestrzennych/przestrzenno-czasowych.

    Deklaracja

    public struct ZeroPadding3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Oddzielna warstwa splotu 1-D.

    Warstwa ta wykonuje splot wgłębny, który działa oddzielnie na kanały, po którym następuje splot punktowy, który miesza kanały.

    Deklaracja

    @frozen
    public struct SeparableConv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Oddzielna warstwa splotu 2-D.

    Warstwa ta wykonuje splot wgłębny, który działa oddzielnie na kanały, po którym następuje splot punktowy, który miesza kanały.

    Deklaracja

    @frozen
    public struct SeparableConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Spłaszczona warstwa.

    Spłaszczona warstwa spłaszcza materiał wejściowy po nałożeniu, bez wpływu na wielkość partii.

    Deklaracja

    @frozen
    public struct Flatten<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Warstwa zmiany kształtu.

    Deklaracja

    @frozen
    public struct Reshape<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Warstwa zawierająca niestandardową funkcję różniczkowalną.

    Deklaracja

    public struct Function<Input, Output> : ParameterlessLayer where Input : Differentiable, Output : Differentiable
  • Wartość typu dynamicznego TensorFlow, którą można utworzyć na podstawie typów zgodnych z TensorFlowScalar .

    Deklaracja

    public struct TensorDataType : Equatable
  • Deklaracja

    @frozen
    public struct BFloat16
    extension BFloat16: TensorFlowScalar
    extension BFloat16: XLAScalarType
  • Reprezentuje potencjalnie duży zestaw elementów.

    Dataset może służyć do reprezentowania potoku wejściowego jako kolekcji tensorów elementów.

    Deklaracja

    @available(*, deprecated, message: "Datasets will be removed in S4TF v0.10. Please use the new Batches API instead.")
    @frozen
    public struct Dataset<Element> where Element : TensorGroup
    extension Dataset: Sequence
  • Typ, który umożliwia iterację elementów zestawu danych.

    Deklaracja

    @available(*, deprecated)
    @frozen
    public struct DatasetIterator<Element> where Element : TensorGroup
    extension DatasetIterator: IteratorProtocol
  • Struktura podobna do 2 krotek zgodna z TensorGroup, która reprezentuje krotkę 2 typów zgodną z TensorGroup .

    Deklaracja

    @frozen
    public struct Zip2TensorGroup<T, U> : TensorGroup where T : TensorGroup, U : TensorGroup
  • Gęsto połączona warstwa sieci neuronowej.

    Dense implementuje operację activation(matmul(input, weight) + bias) , gdzie weight jest macierzą wag, bias jest wektorem odchylenia, a activation jest funkcją aktywacji elementarną.

    Warstwa ta obsługuje również trójwymiarowe tensory wag z dwuwymiarowymi macierzami odchylenia. W tym przypadku pierwszy wymiar obu jest traktowany jako wielkość partii, która jest wyrównana z pierwszym wymiarem danych input i używany jest wariant operacji matmul(_:_:) wsadowej, w ten sposób stosując inną wagę i obciążenie dla każdego elementu w partii wejściowej.

    Deklaracja

    @frozen
    public struct Dense<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Urządzenie, na którym można przydzielić Tensor .

    Deklaracja

    public struct Device
    extension Device: Equatable
    extension Device: CustomStringConvertible
  • Warstwa odpadająca.

    Rezygnacja polega na losowym ustawieniu ułamka jednostek wejściowych na 0 przy każdej aktualizacji w czasie uczenia, co pomaga zapobiegać nadmiernemu dopasowaniu.

    Deklaracja

    @frozen
    public struct Dropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • GaussianNoise dodaje szum próbkowany z rozkładu normalnego.

    Dodany szum zawsze ma średnią zero, ale ma konfigurowalne odchylenie standardowe.

    Deklaracja

    public struct GaussianNoise<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • GaussianDropout mnoży dane wejściowe przez szum pobrany z rozkładu normalnego ze średnią 1,0.

    Ponieważ jest to warstwa regularyzacyjna, jest ona aktywna tylko w czasie treningu. Podczas wnioskowania GaussianDropout przechodzi przez wejście bez modyfikacji.

    Deklaracja

    public struct GaussianDropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Warstwa odpadająca Alpha.

    Porzucenie alfa to Dropout , które utrzymuje średnią i wariancję danych wejściowych na ich oryginalnych wartościach, aby zapewnić właściwość samonormalizacji nawet po tym porzuceniu. Alpha Dropout dobrze pasuje do skalowanych wykładniczych jednostek liniowych, losowo ustawiając aktywacje na ujemną wartość nasycenia.

    Źródło: Samonormalizujące się sieci neuronowe: https://arxiv.org/abs/1706.02515

    Deklaracja

    @frozen
    public struct AlphaDropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Warstwa osadzająca.

    Embedding jest w rzeczywistości tabelą przeglądową, która odwzorowuje indeksy ze stałego słownictwa na reprezentacje wektorowe o stałym rozmiarze (gęste), np. [[0], [3]] -> [[0.25, 0.1], [0.6, -0.2]] .

    Deklaracja

    public struct Embedding<Scalar> : Module where Scalar : TensorFlowFloatingPoint
  • Pusta struktura reprezentująca puste TangentVector s dla warstw bez parametrów.

  • Para momentów pierwszego i drugiego (tj. średnia i wariancja).

    Notatka

    Jest to potrzebne, ponieważ typów krotek nie można różnicować.

    Deklaracja

    public struct Moments<Scalar> : Differentiable where Scalar : TensorFlowFloatingPoint
  • Dwuwymiarowa morfologiczna warstwa dylatacyjna

    Warstwa ta zwraca morfologiczną dylatację tensora wejściowego za pomocą dostarczonych filtrów

    Deklaracja

    @frozen
    public struct Dilation2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Dwuwymiarowa morfologiczna warstwa erozyjna

    Warstwa ta zwraca erozję morfologiczną tensora wejściowego za pomocą dostarczonych filtrów

    Deklaracja

    @frozen
    public struct Erosion2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Leniwy dobór elementów, w podanej kolejności, z jakiejś bazowej kolekcji.

    Deklaracja

    public struct Sampling<Base: Collection, Selection: Collection>
    where Selection.Element == Base.Index
    extension Sampling: SamplingProtocol
    extension Sampling: Collection
    extension Sampling: BidirectionalCollection
      where Selection: BidirectionalCollection
    extension Sampling: RandomAccessCollection
      where Selection: RandomAccessCollection
  • Zbiór najdłuższych, nie nakładających się, sąsiadujących ze sobą wycinków pewnej kolekcji Base , zaczynających się od pierwszego elementu i mających stałą maksymalną długość.

    Wszystkie elementy tej kolekcji, z wyjątkiem ostatniego, mają count batchSize , chyba że Base.count % batchSize !=0 , w którym to przypadku count ostatniej partii to base.count % batchSize.

    Deklaracja

    public struct Slices<Base> where Base : Collection
    extension Slices: Collection
  • Warstwa normalizacyjna wsadowa.

    Normalizuje aktywacje poprzedniej warstwy w każdej partii, tj. stosuje transformację, która utrzymuje średnią aktywację w pobliżu 0 i odchylenie standardowe aktywacji w pobliżu 1 .

    Odniesienie: Normalizacja wsadowa: przyspieszanie uczenia głębokiej sieci poprzez zmniejszenie wewnętrznego przesunięcia współzmiennych .

    Deklaracja

    @frozen
    public struct BatchNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Warstwa, która stosuje normalizację warstw w mini-partii danych wejściowych.

    Odniesienie: Normalizacja warstw .

    Deklaracja

    @frozen
    public struct LayerNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Warstwa, która stosuje normalizację grupową w mini-partii danych wejściowych.

    Odniesienie: Normalizacja grupy .

    Deklaracja

    @frozen
    public struct GroupNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Warstwa, która stosuje normalizację instancji w mini-partii danych wejściowych.

    Odniesienie: Normalizacja instancji: brakujący składnik szybkiej stylizacji .

    Deklaracja

    @frozen
    public struct InstanceNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
  • Określ pojedynczy krok pojedynczej wagi w optymalizatorze.

    Deklaracja

    public struct OptimizerWeightStepState
  • Stan globalny dostępny za pośrednictwem StateAccessor .

    Deklaracja

    public struct OptimizerState
  • [String: Float] ale dostęp do elementów można uzyskać tak, jakby były członkami.

    Deklaracja

    @dynamicMemberLookup
    public struct HyperparameterDictionary
  • Optymalizator pracujący na pojedynczej grupie parametrów.

    Deklaracja

    public struct ParameterGroupOptimizer
  • Bezpieczne dla typu opakowanie wokół wartości indeksu Int dla lokalnych wartości optymalizatora.

    Deklaracja

    public struct LocalAccessor
  • Bezpieczne dla typu opakowanie wokół wartości indeksu Int dla wartości globalnych optymalizatora.

    Deklaracja

    public struct GlobalAccessor
  • Bezpieczne dla typu opakowanie wokół wartości indeksu Int dla wartości stanu optymalizatora.

    Deklaracja

    public struct StateAccessor
  • Tworzy ParameterGroupOptimizer . Jest to stosowane zasadniczo na poziomie pojedynczego ciężaru w modelu. Mapowanie grup parametrów wybranych przez ( [Bool] do ParameterGroupOptimizer) definiuje ostateczny optymalizator.

    Deklaracja

    public struct ParameterGroupOptimizerBuilder
  • Maksymalna warstwa łączenia danych tymczasowych.

    Deklaracja

    @frozen
    public struct MaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Maksymalna warstwa łączenia danych przestrzennych.

    Deklaracja

    @frozen
    public struct MaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Maksymalna warstwa łączenia danych przestrzennych lub czasoprzestrzennych.

    Deklaracja

    @frozen
    public struct MaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Średnia warstwa gromadząca dane tymczasowe.

    Deklaracja

    @frozen
    public struct AvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Średnia warstwa łączenia danych przestrzennych.

    Deklaracja

    @frozen
    public struct AvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Średnia warstwa gromadząca dane przestrzenne lub czasoprzestrzenne.

    Deklaracja

    @frozen
    public struct AvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Globalna średnia warstwa gromadząca dane tymczasowe.

    Deklaracja

    @frozen
    public struct GlobalAvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Globalna średnia warstwa łączenia danych przestrzennych.

    Deklaracja

    @frozen
    public struct GlobalAvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Globalna średnia warstwa gromadząca dane przestrzenne i czasoprzestrzenne.

    Deklaracja

    @frozen
    public struct GlobalAvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Globalna maksymalna warstwa łączenia danych tymczasowych.

    Deklaracja

    @frozen
    public struct GlobalMaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Globalna maksymalna warstwa łączenia danych przestrzennych.

    Deklaracja

    @frozen
    public struct GlobalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Globalna warstwa maksymalnego łączenia danych przestrzennych i czasoprzestrzennych.

    Deklaracja

    @frozen
    public struct GlobalMaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Ułamkowa maksymalna warstwa łączenia danych przestrzennych. Uwaga: FractionalMaxPool nie ma implementacji XLA i dlatego może mieć wpływ na wydajność.

    Deklaracja

    @frozen
    public struct FractionalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • PythonObject reprezentuje obiekt w Pythonie i obsługuje dynamiczne wyszukiwanie elementów członkowskich. Każdy dostęp członkowski, taki jak object.foo będzie dynamicznie żądał środowiska wykonawczego Pythona dla członka o określonej nazwie w tym obiekcie.

    PythonObject jest przekazywany i zwracany przez wszystkie wywołania funkcji Pythona i odniesienia do elementów członkowskich. Obsługuje standardowe operatory arytmetyczne i porównania w języku Python.

    Wewnętrznie PythonObject jest zaimplementowany jako wskaźnik zliczany przez referencje do API PyObject języka Python C.

    Deklaracja

    @dynamicCallable
    @dynamicMemberLookup
    public struct PythonObject
    extension PythonObject : CustomStringConvertible
    extension PythonObject : CustomPlaygroundDisplayConvertible
    extension PythonObject : CustomReflectable
    extension PythonObject : PythonConvertible, ConvertibleFromPython
    extension PythonObject : SignedNumeric
    extension PythonObject : Strideable
    extension PythonObject : Equatable, Comparable
    extension PythonObject : Hashable
    extension PythonObject : MutableCollection
    extension PythonObject : Sequence
    extension PythonObject : ExpressibleByBooleanLiteral, ExpressibleByIntegerLiteral,
    ExpressibleByFloatLiteral, ExpressibleByStringLiteral
    extension PythonObject : ExpressibleByArrayLiteral, ExpressibleByDictionaryLiteral
  • Opakowanie PythonObject umożliwiające rzucanie wywołań metod. Wyjątki generowane przez funkcje Pythona są odzwierciedlane jako błędy Swift i zgłaszane.

    Notatka

    Celowo ThrowingPythonObject nie ma atrybutu @dynamicCallable , ponieważ składnia wywołania jest nieintuicyjna: x.throwing(arg1, arg2, ...) . Metody będą nadal nazywane dynamicallyCall do czasu dalszej dyskusji/projektu.

    Deklaracja

    public struct ThrowingPythonObject
  • Opakowanie PythonObject umożliwiające dostęp do elementów członkowskich. Operacje dostępu do elementów członkowskich zwracają wynik Optional . W przypadku niepowodzenia dostępu do elementu członkowskiego zwracane jest nil .

    Deklaracja

    @dynamicMemberLookup
    public struct CheckingPythonObject
  • Interfejs dla Pythona.

    PythonInterface umożliwia interakcję z Pythonem. Można go używać do importowania modułów i dynamicznego uzyskiwania dostępu do wbudowanych typów i funkcji Pythona.

    Notatka

    Nie jest przeznaczone bezpośrednie inicjowanie PythonInterface . Zamiast tego użyj globalnej instancji PythonInterface o nazwie Python .

    Deklaracja

    @dynamicMemberLookup
    public struct PythonInterface
  • Deklaracja

    public struct PythonLibrary
  • Generator liczb losowych z wymazanym typem.

    Typ AnyRandomNumberGenerator przekazuje operacje generujące liczby losowe do bazowego generatora liczb losowych, ukrywając jego specyficzny typ bazowy.

    Deklaracja

    public struct AnyRandomNumberGenerator : RandomNumberGenerator
  • Implementacja SeedableRandomNumberGenerator przy użyciu ARC4.

    ARC4 to szyfr strumieniowy, który generuje pseudolosowy strumień bajtów. Ten PRNG wykorzystuje ziarno jako klucz.

    ARC4 opisano w Schneier, B., „Applied Cryptography: Protocols, Algorithms, and Source Code in C”, wydanie 2, 1996.

    Pojedynczy generator nie jest bezpieczny dla wątków, ale różne generatory nie współdzielą stanu. Generowane losowo dane są wysokiej jakości, ale nie nadają się do zastosowań kryptograficznych.

    Deklaracja

    @frozen
    public struct ARC4RandomNumberGenerator : SeedableRandomNumberGenerator
  • Implementacja SeedableRandomNumberGenerator przy użyciu Threefry. Salmon i in. SC 2011. Równoległe liczby losowe: tak proste, jak 1, 2, 3. http://www.thesalmons.org/john/random123/papers/random123sc11.pdf

    Ta struktura implementuje 20-nabojowy Threefry2x32 PRNG. Musi być zaszczepiony wartością 64-bitową.

    Pojedynczy generator nie jest bezpieczny dla wątków, ale różne generatory nie współdzielą stanu. Generowane losowo dane są wysokiej jakości, ale nie nadają się do zastosowań kryptograficznych.

    Deklaracja

    public struct ThreefryRandomNumberGenerator : SeedableRandomNumberGenerator
  • Implementacja SeedableRandomNumberGenerator przy użyciu Philox. Salmon i in. SC 2011. Równoległe liczby losowe: tak proste, jak 1, 2, 3. http://www.thesalmons.org/john/random123/papers/random123sc11.pdf

    Ta konstrukcja implementuje 10-nabojowy Philox4x32 PRNG. Musi być zaszczepiony wartością 64-bitową.

    Pojedynczy generator nie jest bezpieczny dla wątków, ale różne generatory nie współdzielą stanu. Generowane losowo dane są wysokiej jakości, ale nie nadają się do zastosowań kryptograficznych.

    Deklaracja

    public struct PhiloxRandomNumberGenerator : SeedableRandomNumberGenerator
  • Deklaracja

    @frozen
    public struct UniformIntegerDistribution<T> : RandomDistribution where T : FixedWidthInteger
  • Deklaracja

    @frozen
    public struct UniformFloatingPointDistribution<T: BinaryFloatingPoint>: RandomDistribution
    where T.RawSignificand: FixedWidthInteger
  • Deklaracja

    @frozen
    public struct NormalDistribution<T: BinaryFloatingPoint>: RandomDistribution
    where T.RawSignificand: FixedWidthInteger
  • Deklaracja

    @frozen
    public struct BetaDistribution : RandomDistribution
  • Wejście do rekurencyjnej sieci neuronowej.

    Deklaracja

    public struct RNNCellInput<Input, State> : Differentiable where Input : Differentiable, State : Differentiable
    extension RNNCellInput: EuclideanDifferentiable
    where Input: EuclideanDifferentiable, State: EuclideanDifferentiable
  • Wyjście do rekurencyjnej sieci neuronowej.

    Deklaracja

    public struct RNNCellOutput<Output, State> : Differentiable where Output : Differentiable, State : Differentiable
    extension RNNCellOutput: EuclideanDifferentiable
    where Output: EuclideanDifferentiable, State: EuclideanDifferentiable
  • Podstawowa komórka RNN.

    Deklaracja

    public struct BasicRNNCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
  • Komórka LSTM.

    Deklaracja

    public struct LSTMCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
  • Komórka GRU.

    Deklaracja

    public struct GRUCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
  • Deklaracja

    public struct RecurrentLayer<Cell> : Layer where Cell : RecurrentLayerCell
    extension RecurrentLayer: Equatable where Cell: Equatable
    extension RecurrentLayer: AdditiveArithmetic where Cell: AdditiveArithmetic
  • Deklaracja

    public struct BidirectionalRecurrentLayer<Cell: RecurrentLayerCell>: Layer
    where Cell.TimeStepOutput: Mergeable
  • Warstwa, która składa się kolejno z dwóch lub większej liczby innych warstw.

    Przykłady:

    • Zbuduj prosty dwuwarstwowy model perceptronu dla MNIST:
    let inputSize = 28 * 28
    let hiddenSize = 300
    var classifier = Sequential {
         Dense<Float>(inputSize: inputSize, outputSize: hiddenSize, activation: relu)
         Dense<Float>(inputSize: hiddenSize, outputSize: 3, activation: identity)
     }
    
    • Zbuduj autoenkoder dla MNIST:
    var autoencoder = Sequential {
        // The encoder.
        Dense<Float>(inputSize: 28 * 28, outputSize: 128, activation: relu)
        Dense<Float>(inputSize: 128, outputSize: 64, activation: relu)
        Dense<Float>(inputSize: 64, outputSize: 12, activation: relu)
        Dense<Float>(inputSize: 12, outputSize: 3, activation: relu)
        // The decoder.
        Dense<Float>(inputSize: 3, outputSize: 12, activation: relu)
        Dense<Float>(inputSize: 12, outputSize: 64, activation: relu)
        Dense<Float>(inputSize: 64, outputSize: 128, activation: relu)
        Dense<Float>(inputSize: 128, outputSize: imageHeight * imageWidth, activation: tanh)
    }
    

    Deklaracja

    public struct Sequential<Layer1: Module, Layer2: Layer>: Module
        where Layer1.Output == Layer2.Input,
              Layer1.TangentVector.VectorSpaceScalar == Layer2.TangentVector.VectorSpaceScalar
    extension Sequential: Layer where Layer1: Layer
  • Deklaracja

    @_functionBuilder
    public struct LayerBuilder
  • ShapedArray to tablica wielowymiarowa. Ma kształt, który ma typ [Int] i definiuje wymiary tablicy, a także wykorzystuje wewnętrznie TensorBuffer jako pamięć.

    Deklaracja

    @frozen
    public struct ShapedArray<Scalar> : _ShapedArrayProtocol
    extension ShapedArray: RandomAccessCollection, MutableCollection
    extension ShapedArray: CustomStringConvertible
    extension ShapedArray: CustomPlaygroundDisplayConvertible
    extension ShapedArray: CustomReflectable
    extension ShapedArray: ExpressibleByArrayLiteral where Scalar: TensorFlowScalar
    extension ShapedArray: Equatable where Scalar: Equatable
    extension ShapedArray: Hashable where Scalar: Hashable
    extension ShapedArray: Codable where Scalar: Codable
  • Ciągły wycinek instancji ShapedArray lub ShapedArraySlice .

    ShapedArraySlice umożliwia szybkie i wydajne operacje na sąsiadujących wycinkach instancji ShapedArray . Instancje ShapedArraySlice nie mają własnego magazynu. Zamiast tego zapewniają wgląd w przechowywanie ich podstawowej ShapedArray . ShapedArraySlice może reprezentować dwa różne rodzaje plasterków: tablice elementów i podtablice.

    Tablice elementów są elementami podwymiarowymi ShapedArray : ich ranga jest o jeden mniejsza niż ich podstawa. Wycinki tablicy elementów uzyskuje się poprzez indeksowanie instancji ShapedArray pojedynczym indeksem Int32 .

    Na przykład:

        var matrix = ShapedArray(shape: [2, 2], scalars: [0, 1, 2, 3])
        // `matrix` represents [[0, 1], [2, 3]].
    
        let element = matrix[0]
        // `element` is a `ShapedArraySlice` with shape [2]. It is an element
        // array, specifically the first element in `matrix`: [0, 1].
    
        matrix[1] = ShapedArraySlice(shape: [2], scalars: [4, 8])
        // The second element in `matrix` has been mutated.
        // `matrix` now represents [[0, 1, 4, 8]].
    

    Podtablice to ciągły zakres elementów w ShapedArray . Ranga podtablicy jest taka sama jak jej podstawy, ale jej wymiarem wiodącym jest liczba zakresu wycinka. Wycinki podtablicy uzyskuje się przez indeksowanie ShapedArray z Range<Int32> , który reprezentuje zakres elementów (w wymiarze wiodącym). Metody takie jak prefix(:) i suffix(:) które wewnętrznie indeksują zakres, również tworzą podtablicę.

    Na przykład:

        let zeros = ShapedArray(repeating: 0, shape: [3, 2])
        var matrix = ShapedArray(shape: [3, 2], scalars: Array(0..<6))
        // `zeros` represents [[0, 0], [0, 0], [0, 0]].
        // `matrix` represents [[0, 1], [2, 3], [4, 5]].
    
        let subarray = matrix.prefix(2)
        // `subarray` is a `ShapedArraySlice` with shape [2, 2]. It is a slice
        // of the first 2 elements in `matrix` and represents [[0, 1], [2, 3]].
    
        matrix[0..<2] = zeros.prefix(2)
        // The first 2 elements in `matrix` have been mutated.
        // `matrix` now represents [[0, 0], [0, 0], [4, 5]].
    

    Deklaracja

    @frozen
    public struct ShapedArraySlice<Scalar> : _ShapedArrayProtocol
    extension ShapedArraySlice: RandomAccessCollection, MutableCollection
    extension ShapedArraySlice: CustomStringConvertible
    extension ShapedArraySlice: CustomPlaygroundDisplayConvertible
    extension ShapedArraySlice: CustomReflectable
    extension ShapedArraySlice: ExpressibleByArrayLiteral where Scalar: TensorFlowScalar
    extension ShapedArraySlice: Equatable where Scalar: Equatable
    extension ShapedArraySlice: Hashable where Scalar: Hashable
    extension ShapedArraySlice: Codable where Scalar: Codable
  • StringTensor to wielowymiarowa tablica, której elementami są String s.

    Deklaracja

    @frozen
    public struct StringTensor
    extension StringTensor: TensorGroup
  • TensorHandle jest typem używanym przez ops. Zawiera typ Scalar , którego elementy wewnętrzne kompilatora mogą używać do określenia typów danych parametrów, gdy są one wyodrębniane do programu tensorowego.

    Deklaracja

    public struct TensorHandle<Scalar> where Scalar : _TensorFlowDataTypeCompatible
    extension TensorHandle: TensorGroup
  • Deklaracja

    public struct ResourceHandle
    extension ResourceHandle: TensorGroup
  • Deklaracja

    public struct VariantHandle
    extension VariantHandle: TensorGroup
  • Struktura reprezentująca kształt tensora.

    TensorShape to cienkie opakowanie wokół tablicy liczb całkowitych reprezentujących wymiary kształtu. Wszystkie typy tensorów używają TensorShape do reprezentowania swojego kształtu.

    Deklaracja

    @frozen
    public struct TensorShape : ExpressibleByArrayLiteral
    extension TensorShape: Collection, MutableCollection
    extension TensorShape: RandomAccessCollection
    extension TensorShape: RangeReplaceableCollection
    extension TensorShape: Equatable
    extension TensorShape: Codable
    extension TensorShape: CustomStringConvertible
  • TensorVisitorPlan jest przybliżony [WritableKeyPath<Base, Tensor<Float>] ale jest bardziej wydajny. Jest to przydatne do pisania ogólnych optymalizatorów, które chcą odwzorować gradienty, istniejące wagi i indeks, którego można użyć do znalezienia pomocniczo przechowywanych wag. Jest to nieco bardziej wydajne (~2x), ale mogłoby być lepsze, ponieważ rezygnuje z nieco wyższych kosztów ogólnych (dodatkowe wyłuskiwanie wskaźnika) za brak konieczności wykonywania pracy O(głębia_drzewa), która jest wymagana w przypadku zwykłej listy do śledzenia każdej indywidualnej ścieżki klucza.

    Deklaracja

    public struct TensorVisitorPlan<Base>
  • Warstwa upsamplingu dla wejść 1-D.

    Deklaracja

    @frozen
    public struct UpSampling1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Warstwa upsamplingu dla wejść 2-D.

    Deklaracja

    @frozen
    public struct UpSampling2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Warstwa upsamplingu dla wejść 3-D.

    Deklaracja

    @frozen
    public struct UpSampling3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
  • Zbiera prawidłowe liczniki przewidywań i sumy strat.

    Deklaracja

    public struct HostStatistics