Protocolli

I seguenti protocolli sono disponibili a livello globale.

  • Fornisce punti di personalizzazione per MutableCollection algoritmi.

    Se incorporato nella libreria standard, questi requisiti sarebbe solo parte di MutableCollection . Nel frattempo, è possibile dichiarare la conformità di una collezione per MutableCollectionAlgorithms per ottenere questi punti di personalizzazione da utilizzare da altri algoritmi definiti su MutableCollectionAlgorithms .

    Dichiarazione

    public protocol MutableCollectionAlgorithms: MutableCollection
    where SubSequence: MutableCollectionAlgorithms
  • Dichiarazione

    public protocol TensorFlowScalar : _TensorFlowDataTypeCompatible
  • Dichiarazione

    public protocol TensorRangeExpression
  • Tipi i cui elementi possono essere raccolti in qualche elemento di rango superiore dello stesso tipo (esempio: tensori, tupla di tensori)

    Dichiarazione

    public protocol Collatable
  • Un tipo cui proprietà ed elementi nidificati possono essere copiati su un Device .

    Dichiarazione

    public protocol CopyableToDevice : _CopyableToDevice
  • Un tipo i cui valori forniscono percorsi chiave personalizzati a proprietà o elementi.

    Dichiarazione

    public protocol KeyPathIterable : _KeyPathIterableBase
  • Un tipo di dati scalare compatibile con TensorFlow.

    Tipi conformi a TensorFlowScalar possono essere utilizzati come Scalar tipo associato di Tensor .

  • Un tipo di dati intero che rappresenta i tipi interi che possono essere utilizzati come indici di tensore in TensorFlow.

    Dichiarazione

    public protocol TensorFlowIndex : BinaryInteger, TensorFlowScalar
  • A dati a virgola mobile tipo conforme alla Differentiable ed è compatibile con tensorflow.

    Nota

    Tensor Conforme condizionatamente Differentiable quando il Scalar tipo soddisfa associati a TensorFlowFloatingPoint .

    Dichiarazione

    public protocol TensorFlowFloatingPoint:
      TensorFlowScalar & BinaryFloatingPoint & Differentiable & ElementaryFunctions
    where
      Self.RawSignificand: FixedWidthInteger,
      Self == Self.TangentVector
  • Un tipo che rappresenta matematicamente una varietà differenziabile i cui spazi tangenti sono di dimensione finita.

    Dichiarazione

    public protocol Differentiable
  • Un tipo con valori che supportano la moltiplicazione puntuale.

    Dichiarazione

    public protocol PointwiseMultiplicative : AdditiveArithmetic
  • Un tipo che rappresenta uno spazio vettoriale non classificato. I valori di questo tipo sono elementi in questo spazio vettoriale e non hanno forma o hanno una forma statica.

    Dichiarazione

    public protocol VectorProtocol : AdditiveArithmetic
  • Un tipo differenziabile nello spazio euclideo. Il tipo può rappresentare uno spazio vettoriale o consistere in uno spazio vettoriale e qualche altro componente non differenziabile.

    Matematicamente, questo rappresenta una varietà prodotto che consiste in uno spazio vettoriale differenziabile e qualche varietà arbitraria, dove il fibrato tangente dell'intera varietà prodotto è uguale al componente dello spazio vettoriale.

    Questa astrazione è utile per rappresentare strutture di dati differenziabili comuni che contengono sia proprietà vettoriali differenziabili che altre proprietà memorizzate che non hanno una derivata, ad es.

    struct Perceptron: @memberwise EuclideanDifferentiable {
        var weight: SIMD16<Float>
        var bias: Float
        @noDerivative var useBias: Bool
    }
    

    Nota

    Conformarsi un tipo di EuclideanDifferentiable se è derivabile solo rispetto alla sua componente spazio vettoriale e quando la sua TangentVector è uguale alla sua componente spazio vettoriale.

    Dichiarazione

    public protocol EuclideanDifferentiable : Differentiable
  • Uno strato di rete neurale.

    Tipi conformi allo Layer rappresentano funzioni che gli ingressi alle uscite della mappa. Possono avere uno stato interno rappresentato da parametri, come i tensori di peso.

    Layer istanze definiscono un differenziabile callAsFunction(_:) metodo per ingressi alle uscite mappatura.

    Dichiarazione

    public protocol Layer : Module where Self.Input : Differentiable
  • Un livello di rete neurale senza parametri.

    La TangentVector di strati senza parametri è sempre EmptyTangentVector .

    Dichiarazione

    public protocol ParameterlessLayer : Layer where Self.TangentVector == EmptyTangentVector
  • Un tipo che dispone di funzioni elementari disponibili.

    Una “funzione elementare” è una funzione costruito dalle potenze, radici, esponenziali, logaritmi, funzioni trigonometriche (sin, cos, tan) e loro inverse, e le funzioni iperboliche (sinh, cosh, tanh) e loro inverse.

    La conformità a questo protocollo significa che tutti questi blocchi costitutivi sono disponibili come funzioni statiche sul tipo.

    let x: Float = 1
    let y = Float.sin(x) // 0.84147096
    

    Dichiarazione

    public protocol ElementaryFunctions
  • Tipo le cui proprietà ed elementi del tensore a virgola mobile annidati possono essere convertiti da precisione completa a precisione ridotta e viceversa.

  • Un dettaglio di implementazione utilizzato per aggirare il fatto che Swift non può esprimere un vincolo generico che qualche tipo deve essere un'istanza di Sampling .

    Dichiarazione

    public protocol SamplingProtocol : Collection
  • Un tipo che può essere inizializzato da un numpy.ndarray esempio rappresentato come un PythonObject .

    Dichiarazione

    public protocol ConvertibleFromNumpyArray
  • Un tipo compatibile bit per bit con uno o più tipi scalari NumPy.

    Dichiarazione

    public protocol NumpyScalarCompatible
  • Un tipo i cui valori possono essere convertiti in un PythonObject .

    Dichiarazione

    public protocol PythonConvertible
  • Un tipo che può essere inizializzato da un PythonObject .

    Dichiarazione

    public protocol ConvertibleFromPython
  • Un tipo che fornisce dati pseudo-casuali deterministici seedable.

    Un SeedableRandomNumberGenerator può essere utilizzato ovunque venga utilizzato un RandomNumberGenerator. È utile quando i dati pseudo-casuali devono essere riproducibili tra le esecuzioni.

    Conforme al protocollo SeedableRandomNumberGenerator

    Per fare un tipo personalizzato conforme alla SeedableRandomNumberGenerator protocollo, l'attuazione del init(seed: [UInt8]) inizializzatore, nonché i requisiti per RandomNumberGenerator . I valori restituiti da next() devono formare una sequenza deterministica che dipende solo dal seme fornito all'inizializzazione.

    Dichiarazione

    public protocol SeedableRandomNumberGenerator : RandomNumberGenerator
  • Dichiarazione

    public protocol RandomDistribution
  • Una cella di livello ricorrente.

    Dichiarazione

    public protocol RecurrentLayerCell: Layer
    where
      Input == RNNCellInput<TimeStepInput, State>,
      Output == RNNCellOutput<TimeStepOutput, State>
  • Un tipo con valori che supportano operazioni binarie differenziabili.

    Utilizzato da BidirectionalRecurrentLayer come requisito generico per le funzioni di unione.

    Dichiarazione

    public protocol Mergeable : AdditiveArithmetic, Differentiable
  • Dichiarazione

    public protocol TensorOperation
  • Dichiarazione

    public protocol TFTensorOperation : TensorOperation
  • Protocollo speciale per chiamare operazioni tensorflow che accettano array eterogenei come input.

    Dichiarazione

    public protocol AnyTensor
  • Dichiarazione

    public protocol TensorProtocol
  • Dichiarazione

    public protocol DifferentiableTensorProtocol:
      TensorProtocol & Differentiable & EuclideanDifferentiable
    where Scalar: TensorFlowFloatingPoint
  • Un protocollo che rappresenta tipi che possono essere mappati a Array<CTensorHandle> .

    Questo protocollo è definito separatamente dal TensorGroup affinché il numero dei tensori da determinare in fase di esecuzione. Ad esempio, [Tensor<Float>] può avere un numero imprecisato di elementi in fase di compilazione.

    Questo protocollo può essere derivata automaticamente struct cui proprietà memorizzato tutto conforme al TensorGroup protocollo. Non può essere derivata automaticamente per le strutture le cui proprietà sono tutti conformi alle TensorArrayProtocol a causa del requisito costruttore (ad esempio, in questi casi, sarebbe impossibile sapere come abbattere count tra le proprietà memorizzate).

    Dichiarazione

    public protocol TensorArrayProtocol
  • Un protocollo che rappresenta tipi che possono essere mappati da e Array<CTensorHandle> .

    Quando un TensorGroup viene utilizzata come argomento a un'operazione tensore, viene passato come una lista di argomenti cui elementi sono i campi tensoriali di tipo.

    Quando un TensorGroup viene restituito come risultato di un'operazione di tensore, viene inizializzato con i suoi campi tensori fissati ai risultati tensore del funzionamento tensore.

    Dichiarazione

    public protocol TensorGroup : TensorArrayProtocol
  • Un tipo di dati supportato in x10.

    Dichiarazione

    public protocol XLAScalarType