ImageClassificationTrainer クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
IEstimator<TTransformer>画像を分類するためのディープ ニューラル ネットワーク (DNN) のトレーニング用です。
public sealed class ImageClassificationTrainer : Microsoft.ML.Trainers.TrainerEstimatorBase<Microsoft.ML.Data.MulticlassPredictionTransformer<Microsoft.ML.Vision.ImageClassificationModelParameters>,Microsoft.ML.Vision.ImageClassificationModelParameters>
type ImageClassificationTrainer = class
inherit TrainerEstimatorBase<MulticlassPredictionTransformer<ImageClassificationModelParameters>, ImageClassificationModelParameters>
Public NotInheritable Class ImageClassificationTrainer
Inherits TrainerEstimatorBase(Of MulticlassPredictionTransformer(Of ImageClassificationModelParameters), ImageClassificationModelParameters)
- 継承
-
TrainerEstimatorBase<MulticlassPredictionTransformer<ImageClassificationModelParameters>,ImageClassificationModelParameters>ImageClassificationTrainer
注釈
このトレーナーを作成するには、 ImageClassification を使用します。
入力列と出力列
入力ラベル列データは キー 型である必要があり、特徴列は可変サイズの Byteベクターである必要があります。
このトレーナーからは、以下の列が出力されます。
出力列の名前 | 列の型 | 説明 |
---|---|---|
Score |
のベクトルSingle | すべてのクラスのスコア。値が大きいほど、関連するクラスに分類される可能性が高くなります。 i 番目の要素が最大値の場合、予測ラベル インデックスは i になります。i はゼロベースのインデックスです。 |
PredictedLabel |
キー型 | 予測ラベルのインデックス。 その値が i の場合、実際のラベルはキーと値の入力ラベルの型の i 番目のカテゴリになります。 |
トレーナーの特性
機械学習タスク | 多クラス分類 |
正規化は必要ですか? | いいえ |
キャッシュは必要ですか? | いいえ |
Microsoft.ML に加えて必要な NuGet | Microsoft.ML.Vision と SciSharp.TensorFlow.Redist / SciSharp.TensorFlow.Redist-Windows-GPU / SciSharp.TensorFlow.Redist-Linux-GPU |
ONNX にエクスポート可能 | いいえ |
TensorFlow ベースの API の使用
TensorFlow ベースの ML.Net API を実行するには、まず TensorFlow redist ライブラリに NuGet 依存関係を追加する必要があります。 現在、使用できるバージョンは 2 つあります。 GPU サポート用にコンパイルされたものと、CPU サポートのみを持つもの。
CPU のみ
CPU ベースの TensorFlow は現在、次の場合にサポートされています。
- Linux
- MacOS
- Windows
TensorFlow を CPU 上で動作させるためには、SciSharp.TensorFlow.Redist v1.14.0 に NuGet 依存関係を設定することだけです。
GPU のサポート
GPU ベースの TensorFlow は現在、次の場合にサポートされています。
- Windows
- Linux 現時点では、TensorFlow は MacOS の GPU での実行をサポートしていないため、現時点ではサポートできません。
前提条件
互換性のある GPU の一覧については、少なくとも 1 つの CUDA 互換 GPU が必要です。 Nvidia のガイドを参照してください。
CUDA v10.1 と CUDNN v7.6.4 をインストールします。
他の新しいバージョンではなく、必ず CUDA v10.1 をインストールします。 CUDNN v7.6.4 .zip ファイルをダウンロードして開梱した後、次の手順を実行する必要があります。
copy <CUDNN_zip_files_path>\cuda\bin\cudnn64_7.dll to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
C/C++ 開発の場合:
Copy <CUDNN_zip_files_path>\cuda\ include\cudnn.h to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include
Copy <CUDNN_zip_files_path>\cuda\lib\x64\cudnn.lib to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64
cuDNN の詳細については、 cuDNN インストール ガイドに従ってください。
使用
GPU サポートで TensorFlow を使用するには、OS に応じて次のパッケージに NuGet 依存関係を設定します。
- Windows -> SciSharp.TensorFlow.Redist-Windows-GPU
- Linux -> SciSharp.TensorFlow.Redist-Linux-GPU
TensorFlow 操作に GPU を利用するためにコードを変更する必要はありません。
トラブルシューティング
GPU ベースの TensorFlow NuGet を追加した後に GPU を使用できない場合は、GPU ベースのバージョンにのみ依存関係があることを確認してください。 両方の NuGet に依存している場合は、代わりに CPU ベースの TensorFlow が実行されます。
トレーニング アルゴリズムの詳細
画像を分類する目的で Resnet50 などの既存の事前トレーニング済みモデルを利用して、ディープ ニューラル ネットワーク (DNN) をトレーニングします。 この手法は、TensorFlow の再トレーニング画像分類チュートリアルから着想を得ました
フィールド
FeatureColumn |
トレーナーが期待する特徴列。 (継承元 TrainerEstimatorBase<TTransformer,TModel>) |
LabelColumn |
トレーナーが期待するラベル列。 を指定できます |
WeightColumn |
トレーナーが期待する重み列。 は |
プロパティ
Info |
トレーナーの機能と要件に関する補助情報。 |
メソッド
Finalize() |
IEstimator<TTransformer>画像を分類するためのディープ ニューラル ネットワーク (DNN) のトレーニング用です。 |
Fit(IDataView, IDataView) |
トレーニングデータと検証データの ImageClassificationTrainer 両方を使用してトレーニングを行い、 ImageClassificationModelParameters. |
Fit(IDataView) |
をトレーニングして返します ITransformer。 (継承元 TrainerEstimatorBase<TTransformer,TModel>) |
GetOutputSchema(SchemaShape) |
IEstimator<TTransformer>画像を分類するためのディープ ニューラル ネットワーク (DNN) のトレーニング用です。 (継承元 TrainerEstimatorBase<TTransformer,TModel>) |
拡張メソッド
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
推定チェーンに "キャッシュ チェックポイント" を追加します。 これにより、ダウンストリーム推定器がキャッシュされたデータに対してトレーニングされるようになります。 複数のデータを受け取るトレーナーの前にキャッシュ チェックポイントを設定すると便利です。 |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
エスティメーターを指定すると、デリゲートが呼 Fit(IDataView) び出されると呼び出されるラップ オブジェクトを返します。 多くの場合、エスティメーターが適合した内容に関する情報を返すことが重要です。そのため Fit(IDataView) 、メソッドは一般的 ITransformerなオブジェクトではなく、具体的に型指定されたオブジェクトを返します。 ただし、同時に、 IEstimator<TTransformer> 多くのオブジェクトを含むパイプラインに形成されることが多いため、トランスフォーマーを取得する推定器がこのチェーンのどこかに埋もれている場所を介して EstimatorChain<TLastTransformer> 、推定器のチェーンを構築する必要がある場合があります。 このシナリオでは、このメソッドを使用して、fit が呼び出されると呼び出されるデリゲートをアタッチできます。 |