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 zDifferentiable
iAdditiveArithmetic
, 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 jakInt32
,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
- Ustaw bieżącą fazę uczenia się na szkolenie, aby warstwy takie jak
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
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)
, gdzieweight
jest macierzą wag,bias
jest wektorem odchylenia, aactivation
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 operacjimatmul(_:_:)
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.Deklaracja
public struct EmptyTangentVector: EuclideanDifferentiable, VectorProtocol, ElementaryFunctions, PointwiseMultiplicative, KeyPathIterable
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 żeBase.count % batchSize !=0
, w którym to przypadkucount
ostatniej partii tobase.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żu1
.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 jakobject.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 APIPyObject
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
CelowoThrowingPythonObject
nie ma atrybutu@dynamicCallable
, ponieważ składnia wywołania jest nieintuicyjna:x.throwing(arg1, arg2, ...)
. Metody będą nadal nazywanedynamicallyCall
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ą wynikOptional
. W przypadku niepowodzenia dostępu do elementu członkowskiego zwracane jestnil
.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 inicjowaniePythonInterface
. Zamiast tego użyj globalnej instancjiPythonInterface
o nazwiePython
.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.pdfTa 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.pdfTa 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
@_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ętrznieTensorBuffer
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
lubShapedArraySlice
.ShapedArraySlice
umożliwia szybkie i wydajne operacje na sąsiadujących wycinkach instancjiShapedArray
. InstancjeShapedArraySlice
nie mają własnego magazynu. Zamiast tego zapewniają wgląd w przechowywanie ich podstawowejShapedArray
.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 instancjiShapedArray
pojedynczym indeksemInt32
.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 indeksowanieShapedArray
zRange<Int32>
, który reprezentuje zakres elementów (w wymiarze wiodącym). Metody takie jakprefix(:)
isuffix(:)
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 typScalar
, 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