Denso

@frozen
public struct Dense<Scalar> : Layer where Scalar : TensorFlowFloatingPoint

Uma camada de rede neural densamente conectada.

Dense implementa a operação activation(matmul(input, weight) + bias) , onde weight é uma matriz de peso, bias é um vetor de polarização e activation é 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ção matmul(_:_:) é usada, usando assim um peso e viés diferente para cada elemento no lote de entrada.

  • A matriz de peso.

    Declaração

    public var weight: Tensor<Scalar>
  • O vetor de polarização.

    Declaração

    public var bias: Tensor<Scalar>
  • A função de ativação elemento a elemento.

    Declaração

    @noDerivative
    public let activation: Activation
  • O tipo de função de ativação elemento a elemento.

    Declaração

    public typealias Activation = @differentiable (Tensor<Scalar>) -> Tensor<Scalar>
  • Cria uma instância a partir do peso fornecido, da polarização opcional e da função de ativação.

    Observação

    atualmente, weight é o único parâmetro de diferenciabilidade. bias pode ser transformado em um parâmetro de diferenciabilidade após Optional condicionalmente estar em conformidade com Differentiable : TF-499.

    Declaração

    @differentiable(wrt: weight)
    public init(
      weight: Tensor<Scalar>,
      bias: Tensor<Scalar>? = nil,
      activation: @escaping Activation
    )
  • Retorna a saída obtida ao aplicar a camada à entrada fornecida.

    Declaração

    @differentiable
    public func forward(_ input: Tensor<Scalar>) -> Tensor<Scalar>

    Parâmetros

    input

    A entrada para a camada.

    Valor de retorno

    A saída.

  • Cria uma camada Dense com o tamanho de entrada, tamanho de saída e função de ativação elemento a elemento especificados. A matriz de peso é criada com shape [inputSize, outputSize] e o vetor de polarização é criado com shape [outputSize] .

    Declaração

    public init(
      inputSize: Int,
      outputSize: Int,
      activation: @escaping Activation = identity,
      useBias: Bool = true,
      weightInitializer: ParameterInitializer<Scalar> = glorotUniform(),
      biasInitializer: ParameterInitializer<Scalar> = zeros()
    )

    Parâmetros

    inputSize

    A dimensionalidade do espaço de entrada.

    outputSize

    A dimensionalidade do espaço de saída.

    activation

    A função de ativação a ser usada. O valor padrão é identity(_:) .

    weightInitializer

    Inicializador a ser usado para weight .

    biasInitializer

    Inicializador a ser usado para bias .