Tensor
並列計算を高速化するための基本的な構成要素であるのと同様に、ほとんどの機械学習モデルと操作はLayer
プロトコルの観点から表現されます。 Layer
微分可能な入力を受け取り、それを処理し、微分可能な出力を生成する型のインターフェイスを定義します。 Layer
トレーニング可能な重みなどの状態を含めることができます。
Layer
はModule
プロトコルを改良したもので、 Module
型への入力が必ずしも微分可能ではない、より一般的なケースを定義します。モデル内のほとんどのコンポーネントは微分可能な入力を処理しますが、代わりに型がModule
に準拠する必要がある場合があります。
作成したオペレーションにトレーニング可能なパラメーターが含まれていない場合は、 Layer
ではなくParameterlessLayer
を使用してオペレーションを定義する必要があります。
モデル自体は多くの場合Layer
として定義され、通常は他のLayer
で構成されます。 Layer
として定義されたモデルまたはサブユニットは、他のLayer
と同様に扱うことができるため、他のモデルまたはサブユニットから任意に複雑なモデルを構築できます。
独自のモデルまたはオペレーションのカスタムLayer
を定義するには、通常、次のようなテンプレートに従います。
public struct MyModel: Layer {
// Define your layers or other properties here.
// A custom initializer may be desired to configure the model.
public init() {}
@differentiable
public func callAsFunction(_ input: Tensor<Float>) -> Tensor<Float> {
// Define the sequence of operations performed on model input to arrive at the output.
return ...
}
}
重みやバイアスなどのLayers
のトレーニング可能なコンポーネントや他のLayer
は、プロパティとして宣言できます。カスタム初期化子は、レイヤーの可変数や分類モデルの出力サイズなど、モデルのカスタマイズ可能なパラメーターを公開するのに適しています。最後に、 Layer
のコアはcallAsFunction()
で、入力と出力の型と、一方を受け取ってもう一方を返す変換を定義します。
内蔵レイヤー
多くの一般的な機械学習操作は、モデルまたはサブユニットを定義するときに使用できるように、 Layer
としてカプセル化されています。以下は、Swift によって TensorFlow 用に提供されるレイヤーのリストであり、機能分野ごとにグループ化されています。
増強
コンボリューション
- 変換1D
- 変換2D
- Conv3D
- 密集
- DepthwiseConv2D
- SeparableConv1D
- SeparableConv2D
- 転置Conv1D
- 転置Conv2D
- 転置Conv3D
- ゼロパディング1D
- ゼロパディング 2D
- ゼロパディング3D
埋め込み
形態学的
正規化
プーリング
- 平均プール1D
- AvgPool2D
- 平均プール3D
- MaxPool1D
- MaxPool2D
- MaxPool3D
- FractionalMaxPool2D
- GlobalAvgPool1D
- GlobalAvgPool2D
- GlobalAvgPool3D
- GlobalMaxPool1D
- GlobalMaxPool2D
- GlobalMaxPool3D
リカレント ニューラル ネットワーク
再形成
アップサンプリング
オプティマイザー
オプティマイザーは機械学習モデルのトレーニングの重要なコンポーネントであり、計算された勾配に基づいてモデルを更新します。これらの更新は、理想的には、モデルをトレーニングするような方法でモデルのパラメーターを調整します。
オプティマイザーを使用するには、まず、適切なトレーニング パラメーターを使用してターゲット モデル用にオプティマイザーを初期化します。
let optimizer = RMSProp(for: model, learningRate: 0.0001, decay: 1e-6)
入力および損失関数に関する勾配を取得してモデルをトレーニングし、オプティマイザーを使用してその勾配に沿ってモデルを更新します。
optimizer.update(&model, along: gradients)
組み込みのオプティマイザー
Swift では、いくつかの一般的なオプティマイザーが TensorFlow 用に提供されています。これらには次のものが含まれます。