Protocolli

I seguenti protocolli sono disponibili a livello globale.

  • Fornisce punti di personalizzazione per gli algoritmi MutableCollection .

    Se incorporati nella libreria standard, questi requisiti farebbero semplicemente parte di MutableCollection . Nel frattempo, puoi dichiarare la conformità di una raccolta a MutableCollectionAlgorithms per ottenere che questi punti di personalizzazione vengano utilizzati 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 alcuni elementi di rango superiore dello stesso tipo (esempio: tensori, tupla di tensori)

    Dichiarazione

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

    Dichiarazione

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

    Dichiarazione

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

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

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

    Dichiarazione

    public protocol TensorFlowIndex : BinaryInteger, TensorFlowScalar
  • Un tipo di dati a virgola mobile conforme a Differentiable ed è compatibile con TensorFlow.

    Nota

    Tensor è conforme in modo condizionale a Differentiable quando il tipo Scalar associato è conforme 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
  • 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à di prodotto che consiste in uno spazio vettoriale differenziabile e una varietà arbitraria, dove il fibrato tangente dell'intera varietà di prodotto è uguale alla componente dello spazio vettoriale.

    Questa astrazione è utile per rappresentare strutture 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

    Conformare un tipo a EuclideanDifferentiable se è differenziabile solo rispetto alla sua componente di spazio vettoriale e quando il suo TangentVector è uguale alla sua componente di spazio vettoriale.

    Dichiarazione

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

    I tipi conformi a Layer rappresentano funzioni che mappano gli input sugli output. Possono avere uno stato interno rappresentato da parametri, come i tensori del peso.

    Le istanze Layer definiscono un metodo callAsFunction(_:) differenziabile per mappare gli input sugli output.

    Dichiarazione

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

    Il TangentVector dei layer senza parametri è sempre EmptyTangentVector .

    Dichiarazione

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

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

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

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

    Dichiarazione

    public protocol ElementaryFunctions
  • Un tipo le cui proprietà ed elementi del tensore a virgola mobile nidificati 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 secondo cui un tipo deve essere un'istanza di Sampling .

    Dichiarazione

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

    Dichiarazione

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

    Dichiarazione

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

    Dichiarazione

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

    Dichiarazione

    public protocol ConvertibleFromPython
  • Un tipo che fornisce dati pseudocasuali deterministici seminabili.

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

    Conforme al protocollo SeedableRandomNumberGenerator

    Per rendere un tipo personalizzato conforme al protocollo SeedableRandomNumberGenerator , implementare l'inizializzatore init(seed: [UInt8]) , nonché i requisiti per RandomNumberGenerator . I valori restituiti da next() devono formare una sequenza deterministica che dipende solo dal seme fornito al momento dell'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 i tipi che possono essere mappati su Array<CTensorHandle> .

    Questo protocollo è definito separatamente da TensorGroup in modo che il numero di tensori venga determinato in fase di esecuzione. Ad esempio, [Tensor<Float>] potrebbe avere un numero sconosciuto di elementi in fase di compilazione.

    Questo protocollo può essere derivato automaticamente per strutture le cui proprietà memorizzate sono tutte conformi al protocollo TensorGroup . Non può essere derivato automaticamente per strutture le cui proprietà sono tutte conformi a TensorArrayProtocol a causa dei requisiti del costruttore (ovvero, in questi casi sarebbe impossibile sapere come suddividere count tra le proprietà archiviate).

    Dichiarazione

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

    Quando un TensorGroup viene utilizzato come argomento per un'operazione tensore, viene passato come un elenco di argomenti i cui elementi sono i campi tensoriali del tipo.

    Quando un TensorGroup viene restituito come risultato di un'operazione tensore, viene inizializzato con i relativi campi tensori impostati sui risultati tensoriali dell'operazione tensore.

    Dichiarazione

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

    Dichiarazione

    public protocol XLAScalarType