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 ponderação, bias é um vector de polarização, e activation é 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 do matmul(_:_:) operação é usado, utilizando, assim, um peso e polarização 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 por elemento.

    Declaração

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

    Declaração

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

    Observação

    Actualmente, weight é o único parâmetro diferenciabilidade. bias pode ser feito um parâmetro diferenciabilidade após Optional conforma condicionalmente para 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 da aplicação da 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 Dense camada com o tamanho especificado de entrada, o tamanho da saída, e a função de activação elemento a elemento. A matriz de peso é criada com a forma [inputSize, outputSize] e o vector de polarização é criada com a forma [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

    Initializer a ser usado para weight .

    biasInitializer

    Inicializador para usar para bias .