メインコンテンツ

shuffle

minibatchqueue のデータのシャッフル

    説明

    shuffle(mbq) は、mbq に保持されているデータをリセットしてランダムな順序にシャッフルします。シャッフル後、next 関数は異なるミニバッチを返します。カスタム学習ループ内の各学習エポックの後にデータをリセットしてシャッフルするには、この構文を使用します。

    すべて折りたたむ

    shuffle 関数は、minibatchqueue オブジェクトをリセットしてシャッフルし、ランダムな順序でデータを取得できるようにします。一方、reset 関数は、minibatchqueue オブジェクトを基となるデータストアの初期状態にリセットします。

    データストアから minibatchqueue オブジェクトを作成します。

    ds = digitDatastore;
    mbq = minibatchqueue(ds,MiniBatchSize=256)
    mbq = 
    minibatchqueue with 1 output and properties:
    
       Mini-batch creation:
                   MiniBatchSize: 256
                PartialMiniBatch: 'return'
                    MiniBatchFcn: 'collate'
        PreprocessingEnvironment: 'serial'
    
       Outputs:
                      OutputCast: {'single'}
                 OutputAsDlarray: 1
                 MiniBatchFormat: {''}
               OutputEnvironment: {'auto'}
    

    データの最初のミニバッチを取得します。

    X1 = next(mbq);

    minibatchqueue オブジェクト内の残りのデータを反復処理します。データがまだ利用可能かどうかを確認するには、hasdata を使用します。

    while hasdata(mbq)
        next(mbq);
    end

    minibatchqueue オブジェクトをシャッフルし、キューがシャッフルされた後の最初のミニバッチを取得します。

    shuffle(mbq);
    X2 = next(mbq);

    残りのデータを再度反復処理します。

    while hasdata(mbq)
        next(mbq);
    end

    minibatchqueue オブジェクトをリセットし、キューがリセットされた後の最初のミニバッチを取得します。

    reset(mbq);
    X3 = next(mbq);

    minibatchqueue オブジェクトをリセットまたはシャッフルした後に取得したミニバッチが、minibatchqueue オブジェクト作成後の最初のミニバッチと同じかどうかを確認します。

    isequal(X1,X2)
    isequal(X1,X3)
    ans = 
       0
    ans = 
       1
    

    reset 関数は、minibatchqueue オブジェクトを基となるデータの初期状態に戻すため、next 関数は毎回同じ順序でミニバッチを返します。一方、shuffle 関数は、基となるデータをシャッフルし、ランダムなミニバッチを生成します。

    入力引数

    すべて折りたたむ

    ミニバッチ キュー。minibatchqueue オブジェクトとして指定します。

    バージョン履歴

    R2020b で導入