メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

minibatchpredict

ミニバッチ ニューラル ネットワーク予測

R2024a 以降

    説明

    [Y1,...,YM] = minibatchpredict(net,images) は、指定されたイメージのミニバッチをループ処理してニューラル ネットワークの予測を行います。ここで、M はネットワーク出力の数です。

    [Y1,...,YM] = minibatchpredict(net,sequences) は、指定されたシーケンスのミニバッチをループ処理してニューラル ネットワークの予測を行います。

    [Y1,...,YM] = minibatchpredict(net,features) は、指定された特徴または表形式データのミニバッチをループ処理してニューラル ネットワークの予測を行います。

    [Y1,...,YM] = minibatchpredict(net,data) は、他のレイアウトまたはデータの組み合わせから成るミニバッチをループ処理してニューラル ネットワークの予測を行います。

    [Y1,...,YM] = minibatchpredict(net,X1,...,XN) は、指定されたインメモリ データを使用して、複数の入力をもつネットワークのニューラル ネットワーク予測を行います。

    [Y1,...,YM] = minibatchpredict(___,Name=Value) は、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、MiniBatchSize=32 は、サイズ 32 のミニバッチをループ処理して予測を行います。

    すべて折りたたむ

    この例では、ミニバッチをループ処理することにより、dlnetwork オブジェクトを使用して予測を行う方法を示します。

    データ セットが大きい場合、またはメモリが限られたハードウェアで予測を行う場合、関数 minibatchpredict を使用し、データのミニバッチをループ処理して予測を行います。

    dlnetwork オブジェクトの読み込み

    学習済みの dlnetwork オブジェクトおよび対応するクラス名をワークスペースに読み込みます。このニューラル ネットワークには 1 つの入力と 2 つの出力があります。手書きの数字のイメージを入力として受け取り、数字のラベルと回転角度を予測します。

    load dlnetDigits

    予測用データの読み込み

    予測用の数字テスト データを読み込みます。

    load DigitsDataTest

    クラス名を表示します。

    classNames
    classNames = 10×1 cell
        {'0'}
        {'1'}
        {'2'}
        {'3'}
        {'4'}
        {'5'}
        {'6'}
        {'7'}
        {'8'}
        {'9'}
    
    

    いくつかのイメージと、それに対応するラベルと回転角度を表示します。

    numObservations = size(XTest,4);
    numPlots = 9;
    idx = randperm(numObservations,numPlots);
    
    figure
    for i = 1:numPlots
        nexttile(i)
        I = XTest(:,:,:,idx(i));
        label = labelsTest(idx(i));
        imshow(I)
        title("Label: " + string(label) + newline + "Angle: " + anglesTest(idx(i)))
    end

    Figure contains 9 axes objects. Hidden axes object 1 with title Label: 8 Angle: 5 contains an object of type image. Hidden axes object 2 with title Label: 9 Angle: -45 contains an object of type image. Hidden axes object 3 with title Label: 1 Angle: -11 contains an object of type image. Hidden axes object 4 with title Label: 9 Angle: -40 contains an object of type image. Hidden axes object 5 with title Label: 6 Angle: -42 contains an object of type image. Hidden axes object 6 with title Label: 0 Angle: -18 contains an object of type image. Hidden axes object 7 with title Label: 2 Angle: -9 contains an object of type image. Hidden axes object 8 with title Label: 5 Angle: -17 contains an object of type image. Hidden axes object 9 with title Label: 9 Angle: -27 contains an object of type image.

    予測の実行

    minibatchpredict関数を使用して予測を行い、scores2label関数を使用して分類スコアをラベルに変換します。既定では、関数 minibatchpredict は利用可能な GPU がある場合にそれを使用します。GPU を使用するには、Parallel Computing Toolbox™ ライセンスとサポートされている GPU デバイスが必要です。サポートされているデバイスの詳細については、GPU 計算の要件 (Parallel Computing Toolbox)を参照してください。そうでない場合、関数は CPU を使用します。実行環境を手動で選択するには、minibatchpredict 関数の ExecutionEnvironment 引数を使用します。

    [scoresTest,Y2Test] = minibatchpredict(net,XTest);
    Y1Test = scores2label(scoresTest,classNames);

    予測の一部を可視化します。

    idx = randperm(numObservations,numPlots);
    
    figure
    for i = 1:numPlots
        nexttile(i)
        I = XTest(:,:,:,idx(i));
        label = Y1Test(idx(i));
        imshow(I)
        title("Label: " + string(label) + newline + "Angle: " + Y2Test(idx(i)))
    end

    Figure contains 9 axes objects. Hidden axes object 1 with title Label: 9 Angle: 20.3954 contains an object of type image. Hidden axes object 2 with title Label: 1 Angle: 3.7015 contains an object of type image. Hidden axes object 3 with title Label: 9 Angle: 23.5494 contains an object of type image. Hidden axes object 4 with title Label: 9 Angle: -36.4954 contains an object of type image. Hidden axes object 5 with title Label: 4 Angle: 16.428 contains an object of type image. Hidden axes object 6 with title Label: 7 Angle: 3.0644 contains an object of type image. Hidden axes object 7 with title Label: 1 Angle: 33.1356 contains an object of type image. Hidden axes object 8 with title Label: 4 Angle: 30.7531 contains an object of type image. Hidden axes object 9 with title Label: 9 Angle: 0.55887 contains an object of type image.

    入力引数

    すべて折りたたむ

    ニューラル ネットワーク。dlnetwork オブジェクトとして指定します。

    イメージ データ。数値配列、categorical 配列、dlarray オブジェクト、データストア、または minibatchqueue オブジェクトとして指定します。

    ヒント

    ビデオ データなどのイメージのシーケンスの場合、代わりに sequences 入力引数を使用します。

    メモリに収まり、追加の処理を必要としないデータがある場合、入力データを数値配列として指定するのが通常最も簡単なオプションです。システムに保存されているイメージ ファイルを使用して予測を行う場合、または追加の処理を適用する場合、データストアが通常最も簡単なオプションです。

    ヒント

    ニューラル ネットワークには、特定のレイアウトをもつ入力データが必要です。たとえば、イメージ分類ネットワークは通常、h×w×c の数値配列のイメージ表現を必要とします。ここで、hwc はそれぞれイメージの高さ、幅、チャネル数です。ニューラル ネットワークの入力層では、通常、必要とされるデータ レイアウトが指定されています。

    ほとんどのデータストアと関数は、ネットワークで必要とされるレイアウトでデータを返します。データのレイアウトが異なる場合、名前と値の引数 InputDataFormats を使用するか、形式を整えた dlarray オブジェクトとして入力データを指定することによって、レイアウトを指定します。通常、名前と値の引数 InputDataFormats を指定する方が、入力データのレイアウトを手動で調整するよりも簡単です。

    入力層をもたないニューラル ネットワークの場合、名前と値の引数 InputDataFormats または形式を整えた dlarray オブジェクトを使用しなければなりません。

    詳細については、深層学習のデータ形式を参照してください。

    数値配列または dlarray オブジェクト

    メモリに収まり、追加の処理を必要としないデータの場合、イメージのデータ セットを数値配列または dlarray オブジェクトとして指定できます。

    数値配列と形式を整えていない dlarray オブジェクトのレイアウトは、イメージ データの種類によって異なり、InputDataFormats 引数と一致していなければなりません。

    ほとんどのネットワークでは、次のレイアウトのイメージ データが必要です。

    データレイアウト
    2 次元イメージ

    h×w×c×N の配列。ここで、hw、および c は、それぞれイメージの高さ、幅、およびチャネル数です。N はイメージの数です。

    このレイアウトのデータは、"SSCB" (spatial、spatial、channel、batch) のデータ形式になります。

    3 次元イメージ

    h×w×d×c×N の配列。ここで、hwd、および c は、それぞれイメージの高さ、幅、深さ、およびチャネル数です。N はイメージの数です。

    このレイアウトのデータは、"SSSCB" (spatial、spatial、spatial、channel、batch) のデータ形式になります。

    異なるレイアウトのデータの場合は、InputDataFormats 引数を使用してデータのレイアウトが異なることを示すか、形式を整えた dlarray オブジェクトを代わりに使用します。詳細については、深層学習のデータ形式を参照してください。

    categorical 配列 (R2025a 以降)

    メモリに収まり、追加の処理を必要としない categorical 値のイメージ (ラベル付きピクセル マップなど) の場合は、イメージを categorical 配列として指定できます。

    ソフトウェアは categorical 入力を自動的に数値に変換し、ニューラル ネットワークに渡します。ソフトウェアが categorical 入力を数値に変換する方法を指定するには、CategoricalInputEncoding 引数を使用します。categorical 配列のレイアウトはイメージ データの種類によって異なり、InputDataFormats と一致していなければなりません。

    次の表のレイアウトにおいて、ほとんどのネットワークでは、minibatchpredict 関数に categorical イメージ データを渡す必要があります。

    データレイアウト
    2 次元 categorical イメージ

    h×w×1×N の配列。ここで、hw は、それぞれイメージの高さと幅で、N はイメージの数です。

    ソフトウェアがこのデータを数値配列に変換すると、このレイアウトのデータ形式は "SSCB" (空間、空間、チャネル、バッチ) になります。"C" (チャネル) 次元のサイズは、CategoricalInputEncoding 引数によって異なります。

    3 次元 categorical イメージ

    h×w×d×1×N の配列。ここで、hwd は、それぞれイメージの高さ、幅、深さで、N はイメージの数です。

    このレイアウトのデータは、"SSSCB" (spatial、spatial、spatial、channel、batch) のデータ形式になります。"C" (チャネル) 次元のサイズは、学習オプション関数の CategoricalInputEncoding 引数によって異なります。

    異なるレイアウトのデータの場合は、InputDataFormats 引数を使用してデータのレイアウトが異なることを示すか、形式を整えた dlarray オブジェクトを代わりに使用します。詳細については、深層学習のデータ形式を参照してください。

    データストア

    データストアはイメージのバッチを読み取ります。データストアは、データがメモリに収まらない場合や、データに変換を適用したい場合に使用します。

    イメージ データの場合、minibatchpredict 関数は次のデータストアをサポートします。

    データストア説明使用例
    ImageDatastore

    ディスクに保存されたイメージのデータストア。

    イメージのサイズが同じ場合に、システムに保存されているイメージを使用して予測を行います。イメージのサイズが異なる場合は augmentedImageDatastore オブジェクトを使用します。

    augmentedImageDatastoreサイズ変更を含むランダムなアフィン幾何学的変換を適用するデータストア。

    イメージのサイズが異なる場合に、ディスクに保存されているイメージを使用して予測を行います。

    拡張イメージ データストアを使用して予測を行う場合は、回転、反転、せん断、平行移動などの追加の拡張を適用しないでください。

    TransformedDatastoreカスタム変換関数を使用して、基になるデータストアから読み取ったデータのバッチを変換するデータストア。

    • minibatchpredict 関数でサポートされていない出力をもつデータストアを変換する。

    • データストアの出力にカスタム変換を適用する。

    CombinedDatastore2 つ以上の基になるデータストアからデータを読み取るデータストア。

    複数の入力をもつネットワークを使用して予測を行います。

    カスタム ミニバッチ データストアデータのミニバッチを返すカスタム データストア。

    他のデータストアでサポートされていないレイアウトのデータを使用して予測を行います。

    詳細は、カスタム ミニバッチ データストアの開発を参照してください。

    ヒント

    ImageDatastore オブジェクトを使用すると、事前取得を使用して JPG または PNG イメージ ファイルのバッチ読み取りを行うことができます。イメージのサイズ変更を含む深層学習用のイメージの前処理を効率的に行うには、augmentedImageDatastore オブジェクトを使用します。ImageDatastore オブジェクトの ReadFcn プロパティを使用しないでください。ReadFcn プロパティをカスタム関数に設定した場合、ImageDatastore オブジェクトはイメージ ファイルを事前取得しないため、通常、速度が大幅に低下します。

    transform 関数と combine 関数を使用することで、他の組み込みのデータストアを使用して深層学習ニューラル ネットワークをテストできます。これらの関数は、データストアから読み取られたデータを minibatchpredict 関数に必要なレイアウトに変換できます。データストア出力に必要なレイアウトは、ニューラル ネットワーク アーキテクチャによって異なります。詳細については、データストアのカスタマイズを参照してください。

    minibatchqueue オブジェクト

    ソフトウェアがミニバッチを処理および変換する方法をより細かく制御するには、データを minibatchqueue オブジェクトとして指定できます。これを実行すると、minibatchpredict 関数はオブジェクトの MiniBatchSize プロパティを無視し、代わりに名前と値の引数 MiniBatchSize を使用します。minibatchqueue 入力の場合、PreprocessingEnvironment プロパティは "serial" でなければなりません。

    メモ

    この引数は複素数値の予測子をサポートします。

    シーケンス データまたは時系列データ。数値配列、categorical 配列、dlarray オブジェクト、cell 配列、データストア、または minibatchqueue オブジェクトとして指定します。

    メモリに収まり、追加の処理を必要としない同じ長さのシーケンスがある場合、入力データを数値配列として指定するのが通常最も簡単なオプションです。メモリに収まり、追加の処理を必要としないさまざまな長さのシーケンスがある場合、入力データを数値配列の cell 配列として指定するのが通常最も簡単なオプションです。システムに保存されているシーケンスを使用して学習させる場合、またはカスタム変換などの追加処理を適用する場合、データストアが通常最も簡単なオプションです。

    ヒント

    ニューラル ネットワークには、特定のレイアウトをもつ入力データが必要です。たとえば、ベクトルシーケンス分類ネットワークは通常、tc 列の配列として表されたベクトルシーケンスを必要とします。ここで、tc は、それぞれタイム ステップの数とシーケンスのチャネル数です。ニューラル ネットワークの入力層では、通常、必要とされるデータ レイアウトが指定されています。

    ほとんどのデータストアと関数は、ネットワークで必要とされるレイアウトでデータを返します。データのレイアウトが異なる場合、名前と値の引数 InputDataFormats を使用するか、形式を整えた dlarray オブジェクトとして入力データを指定することによって、レイアウトを指定します。通常、名前と値の引数 InputDataFormats を指定する方が、入力データのレイアウトを手動で調整するよりも簡単です。

    入力層をもたないニューラル ネットワークの場合、名前と値の引数 InputDataFormats または形式を整えた dlarray オブジェクトを使用しなければなりません。

    詳細については、深層学習のデータ形式を参照してください。

    数値配列、categorical 配列、dlarray オブジェクト、または cell 配列

    メモリに収まり、カスタム変換などの追加処理を必要としないデータの場合、単一のシーケンスを数値配列、categorical 配列、または dlarray オブジェクトとして指定するか、シーケンスのデータ セットを数値配列、categorical 配列、または dlarray オブジェクトから成る cell 配列として指定できます。

    cell 配列入力の場合、cell 配列は数値配列、categorical 配列、または dlarray オブジェクトから成る N 行 1 列の cell 配列でなければなりません。ここで、N は観測値の数です。

    ソフトウェアは categorical 入力を自動的に数値に変換し、ニューラル ネットワークに渡します。ソフトウェアが categorical 入力を数値に変換する方法を指定するには、CategoricalInputEncoding 引数を使用します。

    シーケンスを表す数値配列、categorical 配列、または dlarray オブジェクトのサイズと形状は、シーケンス データの種類によって異なり、InputDataFormats 引数と一致していなければなりません。

    次の表のレイアウトにおいて、シーケンス入力層をもつほとんどのネットワークでは、minibatchpredict 関数にシーケンス データを渡す必要があります。

    データレイアウト
    ベクトル シーケンスsc 列の行列。ここで、sc はそれぞれシーケンスのタイム ステップ数とチャネル (特徴) 数です。
    categorical ベクトル シーケンスs 行 1 列の categorical 配列。ここで、s はシーケンスのタイム ステップ数です。
    1 次元イメージ シーケンスh x c x s の配列。ここで、h および c はそれぞれイメージの高さおよびチャネル数に対応します。s はシーケンス長です。
    categorical 1 次元イメージ シーケンスh×1×s の categorical 配列。ここで、h はイメージの高さに対応します。s はシーケンス長です。
    2 次元イメージ シーケンスh x w x c x s の配列。ここで、hw、および c は、それぞれイメージの高さ、幅、およびチャネル数に対応します。s はシーケンス長です。
    categorical 2 次元イメージ シーケンスh×w×1×s の配列。ここで、hw はそれぞれイメージの高さと幅に対応します。s はシーケンス長です。
    3 次元イメージ シーケンスh x w x d x c x s。ここで、hwd、および c は、それぞれ 3 次元イメージの高さ、幅、深さ、およびチャネル数に対応します。s はシーケンス長です。
    categorical 3 次元イメージ シーケンスh×w×d×1×s。ここで、hwd は、それぞれ 3 次元イメージの高さ、幅、深さに対応します。s はシーケンス長です。

    異なるレイアウトのデータの場合は、InputDataFormats 引数を使用してデータのレイアウトが異なることを示すか、形式を整えた dlarray オブジェクトを代わりに使用します。詳細については、深層学習のデータ形式を参照してください。

    データストア

    データストアはシーケンスのバッチを読み取ります。データストアは、データがメモリに収まらない場合や、データに変換を適用したい場合に使用します。

    シーケンス データおよび時系列データの場合、minibatchpredict 関数は次のデータストアをサポートします。

    データストア説明使用例
    TransformedDatastoreカスタム変換関数を使用して、基になるデータストアから読み取ったデータのバッチを変換するデータストア。

    • minibatchpredict 関数でサポートされていない出力をもつデータストアを変換する。

    • データストアの出力にカスタム変換を適用する。

    CombinedDatastore2 つ以上の基になるデータストアからデータを読み取るデータストア。

    複数の入力をもつネットワークを使用して予測を行います。

    カスタム ミニバッチ データストアデータのミニバッチを返すカスタム データストア。

    他のデータストアでサポートされていないレイアウトのデータを使用してニューラル ネットワークに学習させます。

    詳細は、カスタム ミニバッチ データストアの開発を参照してください。

    transform 関数と combine 関数を使用して、他の組み込みデータストアを使用できます。これらの関数は、データストアから読み取られたデータを minibatchpredict 関数に必要なレイアウトに変換できます。たとえば、ArrayDatastore オブジェクトおよび TabularTextDatastore オブジェクトをそれぞれ使用して、インメモリ配列および CSV ファイルから読み取ったデータの変換と結合を行うことができます。データストア出力に必要なレイアウトは、ニューラル ネットワーク アーキテクチャによって異なります。詳細については、データストアのカスタマイズを参照してください。

    minibatchqueue オブジェクト

    ソフトウェアがミニバッチを処理および変換する方法をより細かく制御するには、データを minibatchqueue オブジェクトとして指定できます。これを実行すると、minibatchpredict 関数はオブジェクトの MiniBatchSize プロパティを無視し、代わりに名前と値の引数 MiniBatchSize を使用します。minibatchqueue 入力の場合、PreprocessingEnvironment プロパティは "serial" でなければなりません。

    メモ

    この引数は複素数値の予測子をサポートします。

    特徴または表形式のデータ。数値配列、categorical 配列、データストア、table、または minibatchqueue オブジェクトとして指定します。

    メモリに収まり、追加の処理を必要としないデータがある場合、入力データを数値配列または table として指定するのが通常最も簡単なオプションです。システムに保存されている特徴データや表形式のデータを使用して学習させる場合、またはカスタム変換などの追加処理を適用する場合、データストアが通常最も簡単なオプションです。

    ヒント

    ニューラル ネットワークには、特定のレイアウトをもつ入力データが必要です。たとえば、特徴分類ネットワークは通常、1 行 c 列のベクトルとして表された特徴と表形式のデータを必要とします。ここで、c はデータの特徴の数です。ニューラル ネットワークの入力層では、通常、必要とされるデータ レイアウトが指定されています。

    ほとんどのデータストアと関数は、ネットワークで必要とされるレイアウトでデータを返します。データのレイアウトが異なる場合、名前と値の引数 InputDataFormats を使用するか、形式を整えた dlarray オブジェクトとして入力データを指定することによって、レイアウトを指定します。通常、名前と値の引数 InputDataFormats を指定する方が、入力データのレイアウトを手動で調整するよりも簡単です。

    入力層をもたないニューラル ネットワークの場合、名前と値の引数 InputDataFormats または形式を整えた dlarray オブジェクトを使用しなければなりません。

    詳細については、深層学習のデータ形式を参照してください。

    数値配列または dlarray オブジェクト

    メモリに収まり、なおかつカスタム変換などの追加の処理を必要としない特徴データの場合、特徴データを数値配列または dlarray オブジェクトとして指定できます。

    数値配列と形式を整えていない dlarray オブジェクトのレイアウトは、InputDataFormats 引数と一致していなければなりません。特徴入力をもつほとんどのネットワークでは、numObservationsnumFeatures 列の配列として指定した入力データが必要です。ここで、numObservations は観測値の数、numFeatures は入力データの特徴の数です。

    categorical 配列 (R2025a 以降)

    メモリに収まり、カスタム変換などの追加処理を必要としない個別の特徴の場合は、特徴データを categorical 配列として指定できます。

    ソフトウェアは categorical 入力を自動的に数値に変換し、ニューラル ネットワークに渡します。ソフトウェアが categorical 入力を数値に変換する方法を指定するには、CategoricalInputEncoding 引数を使用します。categorical 配列のレイアウトは、InputDataFormats 引数と一致していなければなりません。

    カテゴリカル特徴量入力をもつほとんどのネットワークでは、N 行 1 列のベクトルとして指定した入力データが必要です。ここで、N は観測数です。ソフトウェアがこのデータを数値配列に変換すると、このレイアウトのデータ形式は "BC" (バッチ、チャネル) になります。"C" (チャネル) 次元のサイズは、CategoricalInputEncoding 引数によって異なります。

    異なるレイアウトのデータの場合は、InputDataFormats 学習オプションを使用してデータのレイアウトが異なることを示すか、形式を整えた dlarray オブジェクトを代わりに使用します。詳細については、深層学習のデータ形式を参照してください。

    table

    メモリに収まり、カスタム変換などの追加処理を必要としない特徴データの場合、特徴データを table として指定できます。

    特徴データを table として指定するには、numObservations 個の行と numFeatures+1 個の列をもつ table を指定します。ここで、numObservationsnumFeatures は、それぞれ入力データの観測値とチャネルの数です。minibatchpredict 関数は、最初の numFeatures 個の列を入力特徴として使用します。

    データストア

    データストアは特徴データのバッチを読み取ります。データストアは、データがメモリに収まらない場合や、データに変換を適用したい場合に使用します。

    特徴データおよび表形式データの場合、minibatchpredict 関数は次のデータストアをサポートします。

    データ型説明使用例
    TransformedDatastoreカスタム変換関数を使用して、基になるデータストアから読み取ったデータのバッチを変換するデータストア。

    • 複数の入力をもつニューラル ネットワークを使用して予測を行う。

    • trainnet 関数でサポートされていない出力をもつデータストアを変換する。

    • データストアの出力にカスタム変換を適用する。

    CombinedDatastore2 つ以上の基になるデータストアからデータを読み取るデータストア。

    複数の入力をもつニューラル ネットワークを使用して予測を行う。

    カスタム ミニバッチ データストアデータのミニバッチを返すカスタム データストア。

    他のデータストアでサポートされていないレイアウトのデータを使用して予測を行います。

    詳細は、カスタム ミニバッチ データストアの開発を参照してください。

    関数 transform および combine を使用して、予測を行うための他の組み込みデータストアを使用できます。これらの関数は、データストアから読み取られたデータを、minibatchpredict 関数に必要な table または cell 配列形式に変換できます。詳細については、データストアのカスタマイズを参照してください。

    minibatchqueue オブジェクト

    ソフトウェアがミニバッチを処理および変換する方法をより細かく制御するには、データを minibatchqueue オブジェクトとして指定できます。これを実行すると、minibatchpredict 関数はオブジェクトの MiniBatchSize プロパティを無視し、代わりに名前と値の引数 MiniBatchSize を使用します。minibatchqueue 入力の場合、PreprocessingEnvironment プロパティは "serial" でなければなりません。

    メモ

    この引数は複素数値の予測子をサポートします。

    汎用データまたはデータ型の組み合わせ。数値配列、categorical 配列、dlarray オブジェクト、データストア、または minibatchqueue オブジェクトとして指定します。

    メモリに収まり、追加の処理を必要としないデータがある場合、入力データを数値配列として指定するのが通常最も簡単なオプションです。システムに保存されたデータを使用して学習させる場合、または追加の処理を適用する場合は、データストアを使用するのが通常最も簡単なオプションです。

    ヒント

    ニューラル ネットワークには、特定のレイアウトをもつ入力データが必要です。たとえば、ベクトルシーケンス分類ネットワークは通常、tc 列の配列として表されたベクトルシーケンスを必要とします。ここで、tc は、それぞれタイム ステップの数とシーケンスのチャネル数です。ニューラル ネットワークの入力層では、通常、必要とされるデータ レイアウトが指定されています。

    ほとんどのデータストアと関数は、ネットワークで必要とされるレイアウトでデータを返します。データのレイアウトが異なる場合、名前と値の引数 InputDataFormats を使用するか、形式を整えた dlarray オブジェクトとして入力データを指定することによって、レイアウトを指定します。通常、名前と値の引数 InputDataFormats を指定する方が、入力データのレイアウトを手動で調整するよりも簡単です。

    入力層をもたないニューラル ネットワークの場合、名前と値の引数 InputDataFormats または形式を整えた dlarray オブジェクトを使用しなければなりません。

    詳細については、深層学習のデータ形式を参照してください。

    数値配列、categorical 配列、または dlarray オブジェクト

    メモリに収まり、カスタム変換などの追加処理を必要としないデータの場合は、データを数値配列、categorical 配列、または dlarray オブジェクトとして指定できます。

    inputLayer オブジェクトをもつニューラル ネットワークの場合、必要とされる入力データのレイアウトは、層の InputFormat プロパティで指定します。

    ソフトウェアは categorical 入力を自動的に数値に変換し、ニューラル ネットワークに渡します。ソフトウェアが categorical 入力を数値に変換する方法を指定するには、CategoricalInputEncoding 引数を使用します。categorical 配列のレイアウトは、InputDataFormats 引数と一致していなければなりません。

    異なるレイアウトのデータの場合は、InputDataFormats 引数を使用してデータのレイアウトが異なることを示すか、形式を整えた dlarray オブジェクトを代わりに使用します。詳細については、深層学習のデータ形式を参照してください。

    データストア

    データストアはデータのバッチを読み取ります。データストアは、データがメモリに収まらない場合や、データに変換を適用したい場合に使用します。

    汎用データまたはデータ型の組み合わせの場合、minibatchpredict 関数は次のデータストアをサポートします。

    データ型説明使用例
    TransformedDatastoreカスタム変換関数を使用して、基になるデータストアから読み取ったデータのバッチを変換するデータストア。

    • 複数の入力をもつニューラル ネットワークを使用して予測を行う。

    • minibatchpredict でサポートされていないデータストアの出力を、必要な形式に変換する。

    • データストアの出力にカスタム変換を適用する。

    CombinedDatastore2 つ以上の基になるデータストアからデータを読み取るデータストア。

    複数の入力をもつニューラル ネットワークを使用して予測を行う。

    カスタム ミニバッチ データストアデータのミニバッチを返すカスタム データストア。

    他のデータストアでサポートされていない形式のデータを使用して予測を行います。

    詳細は、カスタム ミニバッチ データストアの開発を参照してください。

    transform 関数と combine 関数を使用して、他の組み込みデータストアを使用できます。これらの関数は、データストアから読み取られたデータを、minibatchpredict に必要な table または cell 配列形式に変換できます。詳細については、データストアのカスタマイズを参照してください。

    minibatchqueue オブジェクト

    ソフトウェアがミニバッチを処理および変換する方法をより細かく制御するには、データを minibatchqueue オブジェクトとして指定できます。これを実行すると、minibatchpredict 関数はオブジェクトの MiniBatchSize プロパティを無視し、代わりに名前と値の引数 MiniBatchSize を使用します。minibatchqueue 入力の場合、PreprocessingEnvironment プロパティは "serial" でなければなりません。

    メモ

    この引数は複素数値の予測子をサポートします。

    複数の入力をもつニューラル ネットワークのインメモリ データ。数値配列、categorical 配列、dlarray オブジェクト、または cell 配列として指定します。

    複数の入力をもつニューラル ネットワークで、メモリに収まり、追加の処理を必要としないデータがある場合は、入力データをインメモリ配列として指定するのが通常最も簡単なオプションです。システムに保存されているデータを使用して予測を行う場合、または追加の処理を適用する場合は、データストアを使用するのが通常最も簡単なオプションです。

    ヒント

    ニューラル ネットワークには、特定のレイアウトをもつ入力データが必要です。たとえば、ベクトルシーケンス分類ネットワークは通常、tc 列の配列として表されたベクトルシーケンスを必要とします。ここで、tc は、それぞれタイム ステップの数とシーケンスのチャネル数です。ニューラル ネットワークの入力層では、通常、必要とされるデータ レイアウトが指定されています。

    ほとんどのデータストアと関数は、ネットワークで必要とされるレイアウトでデータを返します。データのレイアウトが異なる場合、名前と値の引数 InputDataFormats を使用するか、形式を整えた dlarray オブジェクトとして入力データを指定することによって、レイアウトを指定します。通常、名前と値の引数 InputDataFormats を指定する方が、入力データのレイアウトを手動で調整するよりも簡単です。

    入力層をもたないニューラル ネットワークの場合、名前と値の引数 InputDataFormats または形式を整えた dlarray オブジェクトを使用しなければなりません。

    詳細については、深層学習のデータ形式を参照してください。

    各入力 X1,...,XN (ここで N は入力数) には、データは、数値配列、dlarray オブジェクトまたは cell 配列 (データ型と一致する引数 imagessequences、または featuresdata) として指定します。入力 Xi は、ネットワーク入力 net.InputNames(i) に対応します。

    メモ

    この引数は複素数値の予測子をサポートします。

    名前と値の引数

    すべて折りたたむ

    オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

    例: minibatchpredict(net,images,MiniBatchSize=32) は、サイズ 32 のミニバッチを使用して images をループ処理することで予測を行います。

    予測に使用するミニバッチのサイズ。正の整数として指定します。ミニバッチのサイズが大きくなるとより多くのメモリが必要になりますが、予測時間が短縮される可能性があります。

    長さが異なるシーケンスで予測を行うと、ミニバッチのサイズが、入力データに追加されるパディングの量に影響し、予測値が変わることがあります。さまざまな値を使用して、ネットワークに最適なものを確認してください。パディング オプションを指定するには、名前と値の引数 SequenceLength を使用します。

    メモ

    入力データを minibatchqueue オブジェクトとして指定すると、minibatchpredict 関数は、minibatchqueue オブジェクトの MiniBatchSize プロパティではなく、この引数で指定されたミニバッチ サイズを使用します。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    出力の抽出元の層。層の名前を含む string 配列、または層の名前を含む文字ベクトルの cell 配列として指定します。

    • Outputs(i) が 1 つの出力をもつ層に対応する場合、Outputs(i) は層の名前です。

    • Outputs(i) が複数の出力をもつ層に対応する場合、Outputs(i) はまず層の名前、その後に文字 /、さらに層出力の名前が続きます ("layerName/outputName")。

    既定値は net.OutputNames です。

    パフォーマンスの最適化。次のいずれかの値として指定します。

    • "auto" — 入力ネットワークとハードウェア リソースに適した最適化の回数を自動的に適用します。

    • "mex" — MEX 関数をコンパイルして実行します。このオプションは GPU の使用時にのみ利用できます。入力データ、またはネットワークの学習可能なパラメーターは、gpuArray オブジェクトとして格納しなければなりません。GPU を使用するには Parallel Computing Toolbox™ とサポートされている GPU デバイスが必要です。サポートされているデバイスの詳細については、GPU 計算の要件 (Parallel Computing Toolbox)を参照してください。Parallel Computing Toolbox または適切な GPU が利用できない場合、エラーが返されます。

    • "none" — すべての高速化を無効にします。

    "auto" オプションまたは "mex" オプションを使用した場合、ソフトウェアはパフォーマンス上のメリットを提供しますが、初期実行時間が長くなります。関数のそれ以降の呼び出しでは、通常、より高速になります。異なる入力データを使用して関数を複数回呼び出す場合は、パフォーマンスの最適化を使用してください。

    Acceleration"mex" の場合、ソフトウェアは、関数の呼び出しで指定したモデルとパラメーターに基づいて MEX 関数を生成し、実行します。1 つのモデルに一度に複数の MEX 関数を関連付けることができます。モデルの変数をクリアすると、そのモデルに関連付けられている MEX 関数もクリアされます。

    Acceleration"auto" の場合、ソフトウェアは MEX 関数を生成しません。

    "mex" オプションは GPU の使用時にのみ利用できます。C/C++ コンパイラがインストールされ、GPU Coder™ Interface for Deep Learning サポート パッケージがなければなりません。MATLAB® でアドオン エクスプローラーを使用してサポート パッケージをインストールします。設定手順については、MEX の設定 (GPU Coder)を参照してください。GPU Coder は不要です。

    "mex" オプションには以下の制限があります。

    • single の精度のデータ型のみがサポートされています。入力データまたはネットワークの学習可能なパラメーターは、基となるデータ型が single でなければなりません。

    • 入力層に接続されていない入力が存在するネットワークはサポートされていません。

    • トレースされた dlarray オブジェクトはサポートされていません。これは、dlfeval 関数の呼び出し内では "mex" オプションがサポートされていないことを意味します。

    • 一部の層はサポートされていません。サポートされている層の一覧については、サポートされている層 (GPU Coder)を参照してください。

    • "mex" オプションを使用した場合、MATLAB Compiler™ はネットワークの展開をサポートしません。

    量子化されたネットワークでは、"mex" オプションには、Compute Capability 6.1、6.3、またはそれ以上の CUDA® 対応 NVIDIA® GPU が必要です。

    ハードウェア リソース。次のいずれかの値として指定します。

    • "auto" — 利用可能な場合、GPU を使用します。そうでない場合、CPU を使用します。net が量子化ネットワークであり、TargetLibrary プロパティが "none" に設定されている場合、GPU が使用可能であっても CPU を使用します。

    • "gpu" — GPU を使用します。GPU を使用するには Parallel Computing Toolbox ライセンスとサポートされている GPU デバイスが必要です。サポートされているデバイスの詳細については、GPU 計算の要件 (Parallel Computing Toolbox)を参照してください。Parallel Computing Toolbox または適切な GPU が利用できない場合、エラーが返されます。

    • "cpu" — CPU を使用します。

    入力シーケンスのパディングまたは切り捨てを行うオプション。次のいずれかのオプションとして指定します。

    • "longest" — 最長のシーケンスと同じ長さになるようにシーケンスのパディングを行います。このオプションを使用するとデータは破棄されませんが、パディングによってニューラル ネットワークにノイズが生じることがあります。

    • "shortest" — 最短のシーケンスと同じ長さになるようにシーケンスの切り捨てを行います。このオプションを使用すると、関数はパディングを追加しなくなりますが、代わりにデータが破棄されます。

    入力シーケンスのパディングと切り捨ての効果の詳細については、シーケンスのパディングと切り捨てを参照してください。

    パディングまたは切り捨ての方向。次のいずれかのオプションとして指定します。

    • "right" — シーケンスの右側に対してパディングまたは切り捨てを行います。シーケンスは同じタイム ステップで始まり、ソフトウェアによって各シーケンスの末尾に対して切り捨てまたはパディングの追加が行われます。

    • "left" — シーケンスの左側に対してパディングまたは切り捨てを行います。各シーケンスが同じタイム ステップで終わるように、ソフトウェアによって各シーケンスの先頭に対して切り捨てまたはパディングの追加が行われます。

    再帰層は 1 タイム ステップずつシーケンス データを処理するため、再帰層の OutputMode プロパティが "last" の場合、最後のタイム ステップでパディングを行うと層の出力に悪影響を与える可能性があります。シーケンス データの左側に対してパディングまたは切り捨てを行うには、名前と値の引数 SequencePaddingDirection"left" に設定します。

    sequence-to-sequence ニューラル ネットワークの場合 (各再帰層について OutputMode プロパティが "sequence" である場合)、最初のタイム ステップでパディングを行うと、それ以前のタイム ステップの予測に悪影響を与える可能性があります。シーケンス データの右側に対してパディングまたは切り捨てを行うには、名前と値の引数 SequencePaddingDirection"right" に設定します。

    シーケンスのパディングと切り捨ての効果の詳細については、シーケンスのパディングと切り捨てを参照してください。

    入力シーケンスをパディングする値。スカラーとして指定します。

    ニューラル ネットワーク全体にエラーが伝播される可能性があるため、NaN でシーケンスをパディングしないでください。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    R2025a 以降

    categorical 入力の符号化。次のいずれかの値として指定します。

    • "integer" — categorical 入力を整数値に変換します。この場合、ネットワークは categorical 入力ごとに 1 つの入力チャネルをもたなければなりません。

    • "one-hot" — categorical 入力を one-hot 符号化されたベクトルに変換します。この場合、ネットワークは categorical 入力ごとに numCategories 個のチャネルをもたなければなりません。ここで、numCategories は対応する categorical 入力のカテゴリの数です。

    入力データの次元の説明。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。

    InputDataFormats"auto" の場合、ソフトウェアは、ネットワークの入力で必要とされる形式を使用します。そうでない場合、ソフトウェアは、該当するネットワーク入力に対して指定された形式を使用します。

    データ形式は文字列で、各文字は対応するデータ次元のタイプを表します。

    各文字は以下のとおりです。

    • "S" — 空間

    • "C" — チャネル

    • "B" — バッチ

    • "T" — 時間

    • "U" — 指定なし

    たとえば、シーケンスのバッチを表し、1 番目、2 番目、および 3 番目の次元がそれぞれチャネル、観測値、およびタイム ステップに対応する配列があるとします。データは "CBT" (チャネル、バッチ、時間) の形式で記述できます。

    "S" または "U" のラベルが付いた次元については、複数回指定できます。ラベル "C""B"、および "T" はそれぞれ 1 回まで使用できます。ソフトウェアは、2 番目の次元の後ろにある大きさが 1 の "U" 次元を無視します。

    複数の入力をもつニューラル ネットワーク net の場合、入力データ形式の配列を指定します。ここで、InputDataFormats(i) は入力 net.InputNames(i) に対応します。

    詳細については、深層学習のデータ形式を参照してください。

    データ型: char | string | cell

    出力データの次元の説明。次のいずれかの値として指定します。

    • "auto" — 出力データと入力データの次元の数が同じ場合、関数 minibatchpredictInputDataFormats で指定された形式を使用します。出力データと入力データの次元数が異なる場合、minibatchpredict 関数は、出力データの次元をネットワーク入力層または InputDataFormats 値と一致するように自動的に並べ替えます。

    • string、文字ベクトル、または文字ベクトルの cell 配列 — minibatchpredict 関数は指定されたデータ形式を使用します。

    データ形式は文字列で、各文字は対応するデータ次元のタイプを表します。

    各文字は以下のとおりです。

    • "S" — 空間

    • "C" — チャネル

    • "B" — バッチ

    • "T" — 時間

    • "U" — 指定なし

    たとえば、シーケンスのバッチを表し、1 番目、2 番目、および 3 番目の次元がそれぞれチャネル、観測値、およびタイム ステップに対応する配列があるとします。データは "CBT" (チャネル、バッチ、時間) の形式で記述できます。

    "S" または "U" のラベルが付いた次元については、複数回指定できます。ラベル "C""B"、および "T" はそれぞれ 1 回まで使用できます。ソフトウェアは、2 番目の次元の後ろにある大きさが 1 の "U" 次元を無視します。

    詳細については、深層学習のデータ形式を参照してください。

    データ型: char | string | cell

    パディングされたデータを一様配列として返すフラグ。logical の 1 (true) または 0 (false) として指定します。値を 0 に設定すると、ソフトウェアは予測の cell 配列を出力します。

    出力引数

    すべて折りたたむ

    ニューラル ネットワーク予測。数値配列、dlarray オブジェクト、または cell 配列 Y1,...,YM として返されます。ここで、M はネットワーク出力の数です。

    予測 Yi は出力 Outputs(i) に対応します。

    分類ニューラル ネットワークの場合、出力の要素は各クラスのスコアに対応します。スコアの順序は、学習データ内のカテゴリの順序と一致します。たとえば、カテゴリカル ラベル TTrain を使用してニューラル ネットワークに学習させた場合、スコアの順序は、categories(TTrain) によって指定されたカテゴリの順序と一致します。

    詳細

    すべて折りたたむ

    ヒント

    拡張機能

    すべて展開する

    バージョン履歴

    R2024a で導入

    すべて展開する