次の方法で共有


ImageClassificationTrainer クラス

定義

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)
継承

注釈

このトレーナーを作成するには、 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.1CUDNN 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

トレーナーが期待するラベル列。 を指定できます null。これは、ラベルがトレーニングに使用されていないことを示します。

(継承元 TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

トレーナーが期待する重み列。 は null、トレーニングに重みが使用されていないことを示します。

(継承元 TrainerEstimatorBase<TTransformer,TModel>)

プロパティ

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 が呼び出されると呼び出されるデリゲートをアタッチできます。

適用対象