As seguintes estruturas 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 visã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 de tipo.
O
AnyDerivative
tipo encaminha suas operações para uma base subjacente valor derivado arbitrário em conformidade comDifferentiable
eAdditiveArithmetic
, que escondem as especificidades do valor subjacente.Declaração
@frozen public struct AnyDerivative : Differentiable & AdditiveArithmetic
Um array multidimensional de elementos que é uma generalização de vetores e matrizes para dimensões potencialmente mais altas.
O parâmetro genérico
Scalar
descreve o tipo de escalares do tensor (tais 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 recuo que realiza a transposição de radiodifusão dois
Tensors
.Declaração
public struct BroadcastingPullback
Um contexto que armazena informações contextuais de thread local usadas por APIs de aprendizado profundo, como camadas.
Use
Context.local
para recuperar o contexto de segmento local atual.Exemplos:
- Defina a fase de aprendizagem atual para treinar de modo que as camadas como
BatchNorm
irá calcular média e variância quando aplicada aos insumos.
Context.local.learningPhase = .training
- Defina a fase de aprendizagem atual à inferência de modo que as camadas como
Dropout
não vai cair fora unidades quando aplicada aos insumos.
Context.local.learningPhase = .inference
Declaração
public struct Context
- Defina a fase de aprendizagem atual para treinar de modo que as camadas como
Uma camada de convolução 1-D (por exemplo, convolução temporal ao longo de uma série temporal).
Essa camada cria um filtro de convolução que é convolvido 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 é convolvido 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 espaço / espaço-temporal sobre imagens.
Essa camada cria um filtro de convolução que é convolvido 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).
Essa 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).
Essa 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).
Essa 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 em profundidade 2-D.
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 zero na dimensão temporal.
Declaração
public struct ZeroPadding1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada para adicionar preenchimento de zero 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.
Essa camada realiza uma convolução em profundidade que atua separadamente nos canais, seguida por uma convolução pontual que mistura canais.
Declaração
@frozen public struct SeparableConv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada de convolução separável 2-D.
Essa camada realiza uma convolução em profundidade que atua separadamente nos canais, seguida por uma convolução pontual que mistura canais.
Declaração
@frozen public struct SeparableConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada achatada.
Uma camada achatada achatará a entrada quando aplicada sem afetar o tamanho do lote.
Declaração
@frozen public struct Flatten<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de remodelagem.
Declaração
@frozen public struct Reshape<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada que contém uma função diferenciada personalizada.
Declaração
public struct Function<Input, Output> : ParameterlessLayer where Input : Differentiable, Output : Differentiable
A TensorFlow valor de tipo dinâmico que pode ser criado a partir de tipos que estejam em conformidade com
TensorFlowScalar
.Declaração
public struct TensorDataType : Equatable
Declaração
Representa um conjunto potencialmente grande de elementos.
Um
Dataset
pode ser utilizado para representar uma tubagem de entrada como uma série de elementos tensores.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 sobre os elementos de um conjunto de dados.
Declaração
@available(*, deprecated) @frozen public struct DatasetIterator<Element> where Element : TensorGroup
extension DatasetIterator: IteratorProtocol
A estrutura 2-tupla-like 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 ponderação,bias
é um vector de polarização, eactivation
é uma função de activação elemento a elemento.Esta camada também suporta tensores de peso 3-D com matrizes de polarização 2-D. Neste caso, a primeira dimensão de ambos é tratado como o tamanho do lote que está alinhada com a primeira dimensão de
input
e a variante do lote domatmul(_:_:)
operação é usado, utilizando, assim, um peso e polarização 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 podem ser alocados.Declaração
public struct Device
extension Device: Equatable
extension Device: CustomStringConvertible
Uma camada de eliminação.
Dropout, consiste em fixar de forma aleatória uma fracção de unidades de entrada a
0
em cada actualização durante o tempo de formação, o que ajuda a evitar overfitting.Declaração
@frozen public struct Dropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
GaussianNoise
adiciona ruído amostrados de uma distribuição normal.O ruído adicionado sempre tem média zero, mas tem um desvio padrão configurável.
Declaração
public struct GaussianNoise<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
GaussianDropout
multiplica a entrada com o ruído amostrado a partir de uma distribuição normal com média 1,0.Por ser uma camada de regularização, ela só fica ativa durante o tempo de treinamento. Durante inferência,
GaussianDropout
passa através da entrada não modificado.Declaração
public struct GaussianDropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de eliminação alfa.
Alpha Dropout é um
Dropout
que mantém média e variância de entradas para os valores originais, a fim de garantir a propriedade auto-normalizando, mesmo após este abandono. Alpha Dropout ajusta-se bem a unidades lineares exponenciais em escala, configurando ativações aleatoriamente para o valor de saturação negativo.Fonte: Auto-Normalizing Neural Networks: https://arxiv.org/abs/1706.02515
Declaração
@frozen public struct AlphaDropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de incorporação.
Embedding
é efectivamente uma tabela de pesquisa que mapeia índices a partir de um vocabulário fixo às representações vetor de tamanho fixo (densa), 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 representando vazio
TangentVector
s 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 morfó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 de 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 série dos mais longa que não se sobrepõem cortes contíguos de uma
Base
recolha, começando com o primeiro elemento, e tendo alguns comprimento máximo fixo.Os elementos desta coleção, com exceção do último, todos têm uma
count
debatchSize
, a menos queBase.count % batchSize !=0
, caso em que o último lotecount
ébase.count % batchSize.
Declaração
public struct Slices<Base> where Base : Collection
extension Slices: Collection
Uma camada de normalização em lote.
Normaliza as activações da camada anterior, em cada lote, isto é, aplica-se uma transformação que mantém a activação perto significativo a
0
e o desvio padrão de activação perto de1
.Referência: Lote Normalização: Acelerar Rede de Formação profundo por Redução de covariáveis Interna de Deslocamento .
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: Camada de Normalização .
Declaração
@frozen public struct LayerNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Uma camada que aplica a normalização de grupo em um minilote de entradas.
Referência: Grupo A normalização .
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: Instância Normalização: o ingrediente que falta para estilização rápido .
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 através
StateAccessor
.Declaração
public struct OptimizerState
[String: Float]
, mas 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
Int
valor do índice para o otimizador de valores locais.Declaração
public struct LocalAccessor
Um wrapper de tipo seguro em torno de um
Int
valor do índice para o otimizador de valores globais.Declaração
public struct GlobalAccessor
Um invólucro de tipo seguro em torno de uma
Int
valor de índice para valores de estado optimizador.Declaração
public struct StateAccessor
Constrói uma
ParameterGroupOptimizer
. Isso é usado essencialmente no nível de um único peso no modelo. Um mapeamento a partir de grupos de parâmetros seleccionados por ([Bool]
para ParameterGroupOptimizer) define o optimizador final.Declaração
public struct ParameterGroupOptimizerBuilder
Uma camada de pooling máxima para dados temporais.
Declaração
@frozen public struct MaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de pooling máxima para dados espaciais.
Declaração
@frozen public struct MaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de pooling máxima para dados espaciais ou espaço-temporais.
Declaração
@frozen public struct MaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de agrupamento média para dados temporais.
Declaração
@frozen public struct AvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de agrupamento média para dados espaciais.
Declaração
@frozen public struct AvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de agrupamento média para dados espaciais ou espaço-temporais.
Declaração
@frozen public struct AvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de agrupamento média global para dados temporais.
Declaração
@frozen public struct GlobalAvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de agrupamento de média global para dados espaciais.
Declaração
@frozen public struct GlobalAvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de agrupamento média global para dados espaciais e espaço-temporais.
Declaração
@frozen public struct GlobalAvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de agrupamento máximo global para dados temporais.
Declaração
@frozen public struct GlobalMaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de agrupamento máximo global para dados espaciais.
Declaração
@frozen public struct GlobalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de agrupamento máximo global para dados espaciais e espaço-temporais.
Declaração
@frozen public struct GlobalMaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uma camada de pooling máximo fracionário para dados espaciais. Nota:
FractionalMaxPool
não tem uma implementação XLA, e, portanto, pode ter implicações de desempenho.Declaração
@frozen public struct FractionalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
PythonObject
representa um objeto em Python e suporta pesquisa membro dinâmico. Qualquer acesso de membros comoobject.foo
dinamicamente irá solicitar o tempo de execução Python para um membro com o nome especificado neste objeto.PythonObject
é passado para e voltado dentre todas as chamadas de função Python e referências membros. Ele suporta aritmética Python padrão e operadores de comparação.Internamente,
PythonObject
é implementado como um ponteiro contou-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
A
PythonObject
invólucro que permite jogar chamadas de método. As exceções produzidas por funções Python são refletidas como erros Swift e lançadas.Observação
É intencional queThrowingPythonObject
não tem o@dynamicCallable
atributo porque a sintaxe de chamada é intuitiva:x.throwing(arg1, arg2, ...)
. Os métodos ainda será nomeadodynamicallyCall
até uma discussão mais aprofundada / design.Declaração
public struct ThrowingPythonObject
Um
PythonObject
invólucro que permite que os acessos membro. Operações de acesso membro retornar umOptional
resultado. Quando o acesso membro falhar,nil
é retornado.Declaração
@dynamicMemberLookup public struct CheckingPythonObject
Uma interface para Python.
PythonInterface
permite interacção com o Python. Ele pode ser usado para importar módulos e acessar dinamicamente tipos e funções integradas do Python.Observação
Ele não se destina aPythonInterface
ser inicializado diretamente. Em vez disso, utilize a instância global dePythonInterface
chamadoPython
.Declaração
@dynamicMemberLookup public struct PythonInterface
Declaração
public struct PythonLibrary
Um gerador de número aleatório apagado.
O
AnyRandomNumberGenerator
tipo para a frente aleatórios operações de geração de número para um gerador de números aleatórios subjacente, escondendo o seu específico subjacente tipo.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 sua chave.
ARC4 é descrito em Schneier, B., "Applied Cryptography: Protocols, Algorithms, and Source Code in C", 2ª Edição, 1996.
Um gerador individual não é seguro para thread, mas geradores distintos não compartilham o 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 paralelas: tão fácil como 1, 2, 3. http://www.thesalmons.org/john/random123/papers/random123sc11.pdfEsta estrutura implementa um PRNG Threefry2x32 de 20 rodadas. Deve ser propagado com um valor de 64 bits.
Um gerador individual não é seguro para thread, mas geradores distintos não compartilham o 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 paralelas: tão fácil como 1, 2, 3. http://www.thesalmons.org/john/random123/papers/random123sc11.pdfEsta estrutura implementa um PRNG Philox4x32 de 10 rodadas. Deve ser propagado com um valor de 64 bits.
Um gerador individual não é seguro para thread, mas geradores distintos não compartilham o 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 simples de perceptron 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
é uma matriz multi-dimensional. Ele tem uma forma, que tem o tipo de[Int]
e define as dimensões da matriz, 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
ShapedArray
ouShapedArraySlice
exemplo.ShapedArraySlice
permite rápido, operações eficientes em fatias contíguas deShapedArray
casos.ShapedArraySlice
casos não têm o seu próprio armazenamento. Em vez disso, que proporciona uma vista para o armazenamento de sua baseShapedArray
.ShapedArraySlice
pode representar dois tipos diferentes de fatias: matrizes de elementos e subarrays.Elemento matrizes são elementos subdimensional de um
ShapedArray
: sua posição é um a menos do que a sua base. Fatias ao elemento da matriz são obtidas através de indexação de umShapedArray
exemplo com um singularInt32
índice.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 uma faixa contínua dos elementos em um
ShapedArray
. A classificação de um subarray é a mesma de sua base, mas sua dimensão principal é a contagem do intervalo de fatias. Fatias subarray são obtidas através de indexação de umShapedArray
com umRange<Int32>
que representa uma série de elementos (na dimensão líder). Métodos comoprefix(:)
esuffix(:)
que índice internamente com uma gama também produzir 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
é uma matriz multi-dimensional, cujos elementos sãoString
s.Declaração
@frozen public struct StringTensor
extension StringTensor: TensorGroup
TensorHandle
é do tipo usado pela ops. Ele inclui umScalar
tipo, que compilador internos podem ser utilizadas para determinar os tipos de dados de parâmetros quando eles são extraídos para 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 invólucro fino em torno de uma disposição de números inteiros que representam dimensões de forma. Todos os tipos de tensores usarTensorShape
para representar a 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 aproxima
[WritableKeyPath<Base, Tensor<Float>]
, mas é mais eficiente. Isso é útil para escrever otimizadores genéricos que desejam mapear gradientes, pesos existentes e um índice que pode ser usado para encontrar pesos armazenados auxiliares. Isso é um pouco mais eficiente (~ 2x), mas poderia ser melhor porque compensa overheads um pouco maiores (desreferência de ponteiro extra) por não ter que fazer o trabalho O (depth_of_tree) que é 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 3-D.
Declaração
@frozen public struct UpSampling3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Coleta contadores de previsão corretos e totais de perda.
Declaração
public struct HostStatistics