密集

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

高密度に接続されたニューラル ネットワーク層。

Dense 、操作activation(matmul(input, weight) + bias)を実装します。ここで、 weightは重み行列、 biasはバイアス ベクトル、 activationは要素ごとの活性化関数です。

この層は、2 次元バイアス行列を使用した 3 次元重みテンソルもサポートします。この場合、両方の最初の次元がinput最初の次元と一致するバッチ サイズとして扱われ、 matmul(_:_:)操作のバッチ バリアントが使用されるため、要素ごとに異なる重みとバイアスが使用されます。入力バッチ内。

  • 重み行列。

    宣言

    public var weight: Tensor<Scalar>
  • バイアスベクトル。

    宣言

    public var bias: Tensor<Scalar>
  • 要素ごとの活性化関数。

    宣言

    @noDerivative
    public let activation: Activation
  • 要素ごとの活性化関数のタイプ。

    宣言

    public typealias Activation = @differentiable (Tensor<Scalar>) -> Tensor<Scalar>
  • 指定された重み、オプションのバイアス、およびアクティベーション関数からインスタンスを作成します。

    注記

    現在、微分可能パラメーターはweightだけです。 Optionalが条件付きでDifferentiable : TF-499 に準拠した後、 bias微分可能性パラメーターにすることができます。

    宣言

    @differentiable(wrt: weight)
    public init(
      weight: Tensor<Scalar>,
      bias: Tensor<Scalar>? = nil,
      activation: @escaping Activation
    )
  • 指定された入力にレイヤーを適用して得られた出力を返します。

    宣言

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

    パラメーター

    input

    レイヤーへの入力。

    戻り値

    出力。

  • 指定された入力サイズ、出力サイズ、要素ごとの活性化関数を使用してDenseレイヤーを作成します。重み行列は形状[inputSize, outputSize]で作成され、バイアス ベクトルは形状[outputSize]で作成されます。

    宣言

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

    パラメーター

    inputSize

    入力空間の次元。

    outputSize

    出力空間の次元数。

    activation

    使用するアクティベーション関数。デフォルト値はidentity(_:)です。

    weightInitializer

    weightに使用するイニシャライザ。

    biasInitializer

    biasに使用するイニシャライザ。