Google I / Oの基調講演、製品セッション、ワークショップなどを見るプレイリストを見る

密集

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

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

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

この層は、2Dバイアス行列を使用した3Dウェイトテンソルもサポートします。この場合、両方の最初の次元は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は唯一の微分可能パラメータです。 OptionalDifferentiable :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に使用する初期化子。