As estruturas a seguir estão disponíveis globalmente.
Uma concatenação de duas sequências com o mesmo tipo de elemento.
Declaração
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
Uma visualização girada em uma coleção.
Declaração
public struct RotatedCollection<Base> : Collection where Base : Collection
extension RotatedCollection: BidirectionalCollection where Base: BidirectionalCollection
extension RotatedCollection: RandomAccessCollection where Base: RandomAccessCollection
Declaração
public struct AnyDifferentiable : Differentiable
Um valor derivado apagado por tipo.
O tipo
AnyDerivative
encaminha suas operações para um valor derivado de base subjacente arbitrário em conformidade comDifferentiable
eAdditiveArithmetic
, ocultando as especificidades do valor subjacente.Declaração
@frozen public struct AnyDerivative : Differentiable & AdditiveArithmetic
Uma matriz multidimensional de elementos que é uma generalização de vetores e matrizes para dimensões potencialmente superiores.
O parâmetro genérico
Scalar
descreve o tipo de escalares no tensor (comoInt32
,Float
, etc).Declaração
@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
Uma função de pullback que realiza a transposição da transmissão de dois
Tensors
.Declaração
public struct BroadcastingPullback
Um contexto que armazena informações contextuais locais de thread usadas por APIs de aprendizado profundo, como camadas.
Use
Context.local
para recuperar o contexto local do thread atual.Exemplos:
- Defina a fase de aprendizagem atual como treinamento para que camadas como
BatchNorm
calculem a média e a variação quando aplicadas às entradas.
Context.local.learningPhase = .training
- Defina a fase de aprendizagem atual para inferência para que camadas como
Dropout
não descartem unidades quando aplicadas às entradas.
Context.local.learningPhase = .inference
Declaração
public struct Context
- Defina a fase de aprendizagem atual como treinamento para que camadas como
Uma camada de convolução 1-D (por exemplo, convolução temporal ao longo de uma série temporal).
Esta camada cria um filtro de convolução que é convoluído com a entrada da camada para produzir um tensor de saídas.
Declaração
@frozen public struct Conv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada de convolução 2-D (por exemplo, convolução espacial sobre imagens).
Esta camada cria um filtro de convolução que é convoluído com a entrada da camada para produzir um tensor de saídas.
Declaração
@frozen public struct Conv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada de convolução 3-D para convolução espacial/espaço-temporal sobre imagens.
Esta camada cria um filtro de convolução que é convoluído com a entrada da camada para produzir um tensor de saídas.
Declaração
@frozen public struct Conv3D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada de convolução transposta 1-D (por exemplo, convolução transposta temporal sobre imagens).
Esta camada cria um filtro de convolução que é transposto-convolvido com a entrada da camada para produzir um tensor de saídas.
Declaração
@frozen public struct TransposedConv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada de convolução transposta 2-D (por exemplo, convolução transposta espacial sobre imagens).
Esta camada cria um filtro de convolução que é transposto-convolvido com a entrada da camada para produzir um tensor de saídas.
Declaração
@frozen public struct TransposedConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada de convolução transposta 3-D (por exemplo, convolução transposta espacial sobre imagens).
Esta camada cria um filtro de convolução que é transposto-convolvido com a entrada da camada para produzir um tensor de saídas.
Declaração
@frozen public struct TransposedConv3D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada de convolução 2-D em profundidade.
Esta camada cria filtros de convolução separáveis que são convolvidos com a entrada da camada para produzir um tensor de saídas.
Declaração
@frozen public struct DepthwiseConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada para adicionar preenchimento de zeros na dimensão temporal.
Declaração
public struct ZeroPadding1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada para adicionar preenchimento de zeros nas dimensões espaciais.
Declaração
public struct ZeroPadding2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada para adicionar preenchimento de zero nas dimensões espaciais/espaço-temporais.
Declaração
public struct ZeroPadding3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de convolução separável 1-D.
Esta camada executa uma convolução profunda que atua separadamente nos canais seguida por uma convolução pontual que mistura os canais.
Declaração
@frozen public struct SeparableConv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada de convolução 2-D separável.
Esta camada executa uma convolução profunda que atua separadamente nos canais seguida por uma convolução pontual que mistura os canais.
Declaração
@frozen public struct SeparableConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada achatada.
Uma camada nivelada nivela a entrada quando aplicada sem afetar o tamanho do lote.
Declaração
@frozen public struct Flatten<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de remodelação.
Declaração
@frozen public struct Reshape<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada que inclui uma função diferenciável personalizada.
Declaração
public struct Function<Input, Output> : ParameterlessLayer where Input : Differentiable, Output : Differentiable
Um valor de tipo dinâmico do TensorFlow que pode ser criado a partir de tipos em conformidade com
TensorFlowScalar
.Declaração
public struct TensorDataType : Equatable
Declaração
Representa um conjunto potencialmente grande de elementos.
Um
Dataset
pode ser usado para representar um pipeline de entrada como uma coleção de tensores de elementos.Declaração
@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
O tipo que permite a iteração nos elementos de um conjunto de dados.
Declaração
@available(*, deprecated) @frozen public struct DatasetIterator<Element> where Element : TensorGroup
extension DatasetIterator: IteratorProtocol
Uma estrutura semelhante a 2 tuplas em conformidade com TensorGroup que representa uma tupla de 2 tipos em conformidade com
TensorGroup
.Declaração
@frozen public struct Zip2TensorGroup<T, U> : TensorGroup where T : TensorGroup, U : TensorGroup
Uma camada de rede neural densamente conectada.
Dense
implementa a operaçãoactivation(matmul(input, weight) + bias)
, ondeweight
é uma matriz de peso,bias
é um vetor de polarização eactivation
é uma função de ativação elemento a elemento.Esta camada também suporta tensores de peso 3D com matrizes de polarização 2D. Neste caso a primeira dimensão de ambos é tratada como o tamanho do lote que está alinhado com a primeira dimensão de
input
e a variante do lote da operaçãomatmul(_:_:)
é usada, usando assim um peso e viés diferente para cada elemento no lote de entrada.Declaração
@frozen public struct Dense<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Um dispositivo no qual
Tensor
s pode ser alocado.Declaração
public struct Device
extension Device: Equatable
extension Device: CustomStringConvertible
Uma camada de eliminação.
O dropout consiste em definir aleatoriamente uma fração das unidades de entrada como
0
a cada atualização durante o tempo de treinamento, o que ajuda a evitar overfitting.Declaração
@frozen public struct Dropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
GaussianNoise
adiciona ruído amostrado de uma distribuição normal.O ruído adicionado sempre tem média zero, mas possui desvio padrão configurável.
Declaração
public struct GaussianNoise<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
GaussianDropout
multiplica a entrada pelo ruído amostrado de uma distribuição normal com média 1,0.Por se tratar de uma camada de regularização, ela só fica ativa durante o tempo de treinamento. Durante a inferência,
GaussianDropout
passa pela entrada sem modificações.Declaração
public struct GaussianDropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de eliminação Alpha.
Alpha Dropout é um
Dropout
que mantém a média e a variância das entradas em seus valores originais, de forma a garantir a propriedade de autonormalização mesmo após esse dropout. Alpha Dropout se adapta bem às unidades lineares exponenciais em escala, definindo aleatoriamente as ativações para o valor de saturação negativo.Fonte: Redes Neurais Auto-Normalizantes: https://arxiv.org/abs/1706.02515
Declaração
@frozen public struct AlphaDropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de incorporação.
Embedding
é efetivamente uma tabela de pesquisa que mapeia índices de um vocabulário fixo para representações vetoriais de tamanho fixo (densas), por exemplo[[0], [3]] -> [[0.25, 0.1], [0.6, -0.2]]
.Declaração
public struct Embedding<Scalar> : Module where Scalar : TensorFlowFloatingPoint
Uma estrutura vazia que representa
TangentVector
s vazios para camadas sem parâmetros.Declaração
public struct EmptyTangentVector: EuclideanDifferentiable, VectorProtocol, ElementaryFunctions, PointwiseMultiplicative, KeyPathIterable
Par de primeiro e segundo momentos (ou seja, média e variância).
Observação
Isso é necessário porque os tipos de tupla não são diferenciáveis.Declaração
public struct Moments<Scalar> : Differentiable where Scalar : TensorFlowFloatingPoint
Uma camada de dilatação morfológica 2-D
Esta camada retorna a dilatação morfológica do tensor de entrada com os filtros fornecidos
Declaração
@frozen public struct Dilation2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada de erosão morfológica 2-D
Esta camada retorna a erosão morfógica do tensor de entrada com os filtros fornecidos
Declaração
@frozen public struct Erosion2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma seleção preguiçosa de elementos, em uma determinada ordem, de alguma coleção base.
Declaração
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
Uma coleção das fatias contíguas não sobrepostas mais longas de alguma coleção
Base
, começando com seu primeiro elemento e tendo algum comprimento máximo fixo.Todos os elementos desta coleção, exceto o último, têm uma
count
debatchSize
, a menos queBase.count % batchSize !=0
, caso em que acount
do último lote ébase.count % batchSize.
Declaração
public struct Slices<Base> where Base : Collection
extension Slices: Collection
Uma camada de normalização em lote.
Normaliza as ativações da camada anterior em cada lote, ou seja, aplica uma transformação que mantém a ativação média próxima de
0
e o desvio padrão de ativação próximo de1
.Referência: Normalização em lote: acelerando o treinamento profundo da rede reduzindo o deslocamento interno de covariáveis .
Declaração
@frozen public struct BatchNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada que aplica a normalização de camada em um minilote de entradas.
Referência: Normalização de Camada .
Declaração
@frozen public struct LayerNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada que aplica normalização de grupo em um minilote de entradas.
Referência: Normalização de Grupo .
Declaração
@frozen public struct GroupNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada que aplica a normalização de instância em um minilote de entradas.
Referência: Normalização de instância: o ingrediente que falta para estilização rápida .
Declaração
@frozen public struct InstanceNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Estado para uma única etapa de um único peso dentro de um otimizador.
Declaração
public struct OptimizerWeightStepState
Estado global acessado por meio de
StateAccessor
.Declaração
public struct OptimizerState
[String: Float]
mas os elementos podem ser acessados como se fossem membros.Declaração
@dynamicMemberLookup public struct HyperparameterDictionary
Um otimizador que funciona em um único grupo de parâmetros.
Declaração
public struct ParameterGroupOptimizer
Um wrapper de tipo seguro em torno de um valor de índice
Int
para valores locais do otimizador.Declaração
public struct LocalAccessor
Um wrapper de tipo seguro em torno de um valor de índice
Int
para valores globais do otimizador.Declaração
public struct GlobalAccessor
Um wrapper de tipo seguro em torno de um valor de índice
Int
para valores de estado do otimizador.Declaração
public struct StateAccessor
Constrói um
ParameterGroupOptimizer
. Isso é usado essencialmente no nível de um único peso no modelo. Um mapeamento de grupos de parâmetros selecionados por ([Bool]
para ParameterGroupOptimizer) define o otimizador final.Declaração
public struct ParameterGroupOptimizerBuilder
Uma camada máxima de pooling para dados temporais.
Declaração
@frozen public struct MaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de pooling máximo para dados espaciais.
Declaração
@frozen public struct MaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de pooling máximo para dados espaciais ou espaço-temporais.
Declaração
@frozen public struct MaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de pool média para dados temporais.
Declaração
@frozen public struct AvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada média de pooling para dados espaciais.
Declaração
@frozen public struct AvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de pooling média para dados espaciais ou espaço-temporais.
Declaração
@frozen public struct AvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de pooling média global para dados temporais.
Declaração
@frozen public struct GlobalAvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de pooling média global para dados espaciais.
Declaração
@frozen public struct GlobalAvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de pooling média global para dados espaciais e espaço-temporais.
Declaração
@frozen public struct GlobalAvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de pool máximo global para dados temporais.
Declaração
@frozen public struct GlobalMaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de pool máximo global para dados espaciais.
Declaração
@frozen public struct GlobalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de pooling máximo global para dados espaciais e espaço-temporais.
Declaração
@frozen public struct GlobalMaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de pool máximo fracionário para dados espaciais. Nota:
FractionalMaxPool
não possui uma implementação XLA e, portanto, pode ter implicações no desempenho.Declaração
@frozen public struct FractionalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
PythonObject
representa um objeto em Python e oferece suporte à pesquisa dinâmica de membros. Qualquer acesso de membro comoobject.foo
solicitará dinamicamente o tempo de execução do Python para um membro com o nome especificado neste objeto.PythonObject
é passado e retornado de todas as chamadas de função Python e referências de membros. Ele oferece suporte a operadores aritméticos e de comparação padrão do Python.Internamente,
PythonObject
é implementado como um ponteiro contado por referência para uma API Python CPyObject
.Declaração
@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
Um wrapper
PythonObject
que permite lançar chamadas de método. As exceções produzidas pelas funções Python são refletidas como erros Swift e lançadas.Observação
É intencional queThrowingPythonObject
não tenha o atributo@dynamicCallable
porque a sintaxe da chamada não é intuitiva:x.throwing(arg1, arg2, ...)
. Os métodos ainda serão nomeadosdynamicallyCall
até discussão/design posterior.Declaração
public struct ThrowingPythonObject
Um wrapper
PythonObject
que permite acessos de membros. As operações de acesso de membro retornam um resultadoOptional
. Quando o acesso do membro falha,nil
é retornado.Declaração
@dynamicMemberLookup public struct CheckingPythonObject
Uma interface para Python.
PythonInterface
permite interação com Python. Ele pode ser usado para importar módulos e acessar dinamicamente tipos e funções integradas do Python.Observação
Não se destina quePythonInterface
seja inicializado diretamente. Em vez disso, use a instância global dePythonInterface
chamadaPython
.Declaração
@dynamicMemberLookup public struct PythonInterface
Declaração
public struct PythonLibrary
Um gerador de números aleatórios com tipo apagado.
O tipo
AnyRandomNumberGenerator
encaminha operações de geração de números aleatórios para um gerador de números aleatórios subjacente, ocultando seu tipo subjacente específico.Declaração
public struct AnyRandomNumberGenerator : RandomNumberGenerator
Uma implementação de
SeedableRandomNumberGenerator
usando ARC4.ARC4 é uma cifra de fluxo que gera um fluxo pseudo-aleatório de bytes. Este PRNG usa a semente como chave.
ARC4 é descrito em Schneier, B., “Applied Cryptography: Protocols, Algorithms, and Source Code in C”, 2nd Edition, 1996.
Um gerador individual não é thread-safe, mas geradores distintos não compartilham estado. Os dados aleatórios gerados são de alta qualidade, mas não são adequados para aplicações criptográficas.
Declaração
@frozen public struct ARC4RandomNumberGenerator : SeedableRandomNumberGenerator
Uma implementação de
SeedableRandomNumberGenerator
usando Threefry. Salmon et al. SC 2011. Números aleatórios paralelos: tão fáceis quanto 1, 2, 3. http://www.thesalmons.org/john/random123/papers/random123sc11.pdfEsta estrutura implementa um PRNG Threefry2x32 de 20 rodadas. Ele deve ser propagado com um valor de 64 bits.
Um gerador individual não é thread-safe, mas geradores distintos não compartilham estado. Os dados aleatórios gerados são de alta qualidade, mas não são adequados para aplicações criptográficas.
Declaração
public struct ThreefryRandomNumberGenerator : SeedableRandomNumberGenerator
Uma implementação de
SeedableRandomNumberGenerator
usando Philox. Salmon et al. SC 2011. Números aleatórios paralelos: tão fáceis quanto 1, 2, 3. http://www.thesalmons.org/john/random123/papers/random123sc11.pdfEsta estrutura implementa um PRNG Philox4x32 de 10 rodadas. Ele deve ser propagado com um valor de 64 bits.
Um gerador individual não é thread-safe, mas geradores distintos não compartilham estado. Os dados aleatórios gerados são de alta qualidade, mas não são adequados para aplicações criptográficas.
Declaração
public struct PhiloxRandomNumberGenerator : SeedableRandomNumberGenerator
Declaração
@frozen public struct UniformIntegerDistribution<T> : RandomDistribution where T : FixedWidthInteger
Declaração
@frozen public struct UniformFloatingPointDistribution<T: BinaryFloatingPoint>: RandomDistribution where T.RawSignificand: FixedWidthInteger
Declaração
@frozen public struct NormalDistribution<T: BinaryFloatingPoint>: RandomDistribution where T.RawSignificand: FixedWidthInteger
Declaração
@frozen public struct BetaDistribution : RandomDistribution
Uma entrada para uma rede neural recorrente.
Declaração
public struct RNNCellInput<Input, State> : Differentiable where Input : Differentiable, State : Differentiable
extension RNNCellInput: EuclideanDifferentiable where Input: EuclideanDifferentiable, State: EuclideanDifferentiable
Uma saída para uma rede neural recorrente.
Declaração
public struct RNNCellOutput<Output, State> : Differentiable where Output : Differentiable, State : Differentiable
extension RNNCellOutput: EuclideanDifferentiable where Output: EuclideanDifferentiable, State: EuclideanDifferentiable
Uma célula RNN básica.
Declaração
public struct BasicRNNCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Uma célula LSTM.
Declaração
public struct LSTMCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Uma célula GRU.
Declaração
public struct GRUCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Declaração
public struct RecurrentLayer<Cell> : Layer where Cell : RecurrentLayerCell
extension RecurrentLayer: Equatable where Cell: Equatable
extension RecurrentLayer: AdditiveArithmetic where Cell: AdditiveArithmetic
Declaração
public struct BidirectionalRecurrentLayer<Cell: RecurrentLayerCell>: Layer where Cell.TimeStepOutput: Mergeable
Uma camada que compõe sequencialmente duas ou mais outras camadas.
Exemplos:
- Construa um modelo perceptron simples de 2 camadas para 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) }
- Crie um codificador automático para 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) }
Declaração
@_functionBuilder public struct LayerBuilder
ShapedArray
é um array multidimensional. Possui um shape, que possui tipo[Int]
e define as dimensões do array, e utiliza umTensorBuffer
internamente como armazenamento.Declaração
@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
Uma fatia contígua de uma instância
ShapedArray
ouShapedArraySlice
.ShapedArraySlice
permite operações rápidas e eficientes em fatias contíguas de instânciasShapedArray
. As instânciasShapedArraySlice
não possuem armazenamento próprio. Em vez disso, eles fornecem uma visão do armazenamento de seuShapedArray
base.ShapedArraySlice
pode representar dois tipos diferentes de fatias: matrizes de elementos e submatrizes.Matrizes de elementos são elementos subdimensionais de um
ShapedArray
: sua classificação é um a menos que sua base. As fatias da matriz de elementos são obtidas indexando uma instânciaShapedArray
com um índiceInt32
singular.Por exemplo:
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]].
Subarrays são um intervalo contíguo de elementos em um
ShapedArray
. A classificação de um subarray é igual à de sua base, mas sua dimensão principal é a contagem do intervalo de fatias. As fatias de subarray são obtidas indexando umShapedArray
com umRange<Int32>
que representa um intervalo de elementos (na dimensão principal). Métodos comoprefix(:)
esuffix(:)
que indexam internamente com um intervalo também produzem subarray.Por exemplo:
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]].
Declaração
@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
é um array multidimensional cujos elementos sãoString
s.Declaração
@frozen public struct StringTensor
extension StringTensor: TensorGroup
TensorHandle
é o tipo usado por operações. Inclui um tipoScalar
, que os internos do compilador podem usar para determinar os tipos de dados dos parâmetros quando eles são extraídos em um programa tensor.Declaração
public struct TensorHandle<Scalar> where Scalar : _TensorFlowDataTypeCompatible
extension TensorHandle: TensorGroup
Declaração
public struct ResourceHandle
extension ResourceHandle: TensorGroup
Declaração
public struct VariantHandle
extension VariantHandle: TensorGroup
Uma estrutura que representa a forma de um tensor.
TensorShape
é um wrapper fino em torno de uma matriz de números inteiros que representam dimensões de forma. Todos os tipos de tensor usamTensorShape
para representar sua forma.Declaração
@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 se aproxima
[WritableKeyPath<Base, Tensor<Float>]
mas é mais eficiente. Isso é útil para escrever otimizadores genéricos que desejam mapear os gradientes, os pesos existentes e um índice que pode ser usado para encontrar pesos armazenados auxiliarmente. Isso é um pouco mais eficiente (~ 2x), mas poderia ser melhor porque compensa despesas gerais um pouco mais altas (desreferência de ponteiro extra) por não ter que fazer o trabalho O (profundidade_de_árvore) necessário com uma lista simples para rastrear cada KeyPath individual.Declaração
public struct TensorVisitorPlan<Base>
Uma camada de upsampling para entradas 1-D.
Declaração
@frozen public struct UpSampling1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de upsampling para entradas 2-D.
Declaração
@frozen public struct UpSampling2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de upsampling para entradas 3D.
Declaração
@frozen public struct UpSampling3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Coleta contadores de previsão corretos e totais de perdas.
Declaração
public struct HostStatistics