主要内容

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

カスタム ミニバッチ データストアの開発

"ミニバッチ データストア" とは、バッチ単位でのデータの読み取りをサポートするデータストアの実装です。ミニバッチ データストアは、Deep Learning Toolbox™ を使用する深層学習アプリケーションの学習データセット、検証データセット、テスト データセット、および予測データセットのソースとして使用できます。

シーケンス,データ,またはテキストを前处理するにはここでで说明说明するするするフレームフレームワークをを使用ししてて独自独自のミニバッチミニバッチデータストアストアををを构筑ますますますます,シーケンス データのカスタム ミニバッチ データストアを使用したネットワークの学習を参照してください。

概要

カスタム データストアのクラスおよびオブジェクトを使用して、カスタム データストア インターフェイスを構築します。次に、カスタム データストアを使用してデータを MATLAB®に読み込みます。

カスタムミニバッチストアの设计,,matlab.io.datastoreおよびmatlab.io.datastore.MiniBatchableクラスから,必要プロパティおよび実装がれます。オプションオプションで,学习中中のシャッフルののサポートサポートサポート。

処理のニーズ

クラス

深度学习工具箱での学習データセット、検証データセット、テスト データセット、および予測データセット用のミニバッチ データストア

matlab.io.datastoreおよびmatlab.io.datastore.MiniBatchable

可捕データデータ実装実装を参照してください。

学習中のシャッフルをサポートするミニバッチ データストア

matlab.io.datastorematlab.io.datastore.MiniBatchableおよびmatlab.io.datastore.shufflable

シャッフルのサポート追加を参照してください。

MiniBatchableデータストアの実装

mydatastoreという名前のカスタム ミニバッチ データストアを実装するには、スクリプトmydatastore.mを作成します。このスクリプトはMATLABパス上になければならず,適切なクラスから継承し,必要なメソッドを定義するコードを含んでいる必要があります。Deep Learning Toolbox での学習データセット、検証データセット、テスト データセット、および予測データセット用のミニバッチ データストアを作成するコードは以下でなければなりません。

これらの手順に加えて、データの処理および解析に必要なその他のプロパティやメソッドを定義できます。

メモ

ネットワークにさせて,,训练'Shuffle''一次'または“每个段”に指定ている场合,matlab.io.datastore.shufflableクラスから継承なけれなりません详细については,シャッフルのサポート追加を参照してください。

桌子表で,,はででデータをなければなりなりませませんのののののの要素ははははスカラースカラースカラー行行行ベクトルベクトルベクトルベクトルベクトルであるであるであるであるであるかかかか,,,数値数値配列が1。

単一のをネットワークの场合,の列とととと番目の列はそれぞれ予测子予测子と応答応答ますますます

ヒント

複数の入力層があるネットワークにデータストアを使用するには、関数结合および转换を使用して、列数が (numInputs+ 1) の cell 配列を出力するデータストアを作成します。ここで、numInputsはネットワークのです。场合,最初のnumInputs列は各入力の予測子を指定し、最後の列は応答を指定します。入力の順序は、層グラフlayers输入名プロパティによって指定ます。

予測子の形式は、データのタイプによって異なります。

データ 予測子の形式
2 次元イメージ

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

3次元

h x w x d x cの数値。ここ,

ベクトル シーケンス

c s s列のここで,,はの特徴数,,,はははです

2 次元イメージ シーケンス

h x w x c x s の配列。ここで、h、w、および c はそれぞれイメージの高さ、幅、およびチャネル数に対応します。s はシーケンス長です。

ミニバッチ内各,同じシーケンス长ばなりません。

3次元シーケンス

h x w x d x c x s の配列。ここで、h、w、d、および c は、それぞれイメージの高さ、幅、深さ、およびチャネル数に対応します。s はシーケンス長です。

ミニバッチ内各,同じシーケンス长ばなりません。

特徴

c行1列cはcはcはcはcは。

table 要素には、数値スカラー、数値行ベクトルが含まれているか、数値配列が格納された 1 行 1 列の cell 配列が含まれていなければなりません。

関数trainNetworkは,シーケンス层をもつネットワークしていませ。。

応答のはタスクのによって异なり。。

タスク 応答の形式
分類 分类スカラー
回帰

  • スカラー

  • 数値ベクトル

  • イメージを表す 3 次元数値配列

sequence-to-sequence 分類

カテゴリカル ラベルの 1 行 s 列のシーケンス。ここで、s は対応する予測子シーケンスのシーケンス長です。

sequence-to-sequence 回帰

r r s s列行列,,,,応答数,,,は

table 要素には、categorical スカラー、数値スカラー、数値行ベクトルが含まれているか、数値配列が格納された 1 行 1 列の cell 配列が含まれていなければなりません。

この例では、シーケンス データを処理するためのカスタム ミニバッチ データストアを作成する方法を説明します。スクリプトをmysedendatatastore.mという名前のファイルに保存します。

手順 実装

  1. クラスのを开始ます。基底クラスmatlab.io.datastoreおよびmatlab.io.datastore.MiniBatchableクラスから継承し。

  2. プロパティを定义ます。

    • MinibatchSizeおよびNumObservationsのプロパティを再定義します。オプションで、追加のプロパティ属性をどちらかのプロパティに割り当てることができます。詳細については、プロパティの属性を参照してください。

    • カスタム ミニバッチ データストアに固有のプロパティを定義することもできます。

  3. メソッドを定义ます。

    • カスタムミニバッチストアコンストラクター実装します。

    • hasdataメソッドを実装します。

    • メソッドをし。このメソッドは,,番目番目予测子,,,,,番目番目番目の列が応答であるテーブルとしてとしてデータデータをを返さ返さ

      データのシーケンスはががが行行列列行列でなりませ。。。。。。。。。。はははは特徴のの数,,,はははですです。。

    • 重启メソッドを実装します。

    • progressメソッドを実装します。

    • カスタムミニバッチストアのメソッドを定义こともできます。

  4. classdefセクションを終了します。

classdefMySequenceDatastore < matlab.io.Datastore &。。。matlab.io.datastore.MiniBatchable特性数据存储标签NumClasses序列MinibatchSizeend特性(setAccess =受保护)数字end特性(Access = private)% This property is inherited from DatastoreCurrentFileIndexend方法功能ds = MySequenceDatastore(folder)% Construct a MySequenceDatastore object% Create a file datastore. The readSequence function is% defined following the class definition.fds = fileDatastore(folder,。。。'ReadFcn',@ReadSequence,。。。“包括橡皮folders”,true); ds.Datastore = fds;% Read labels from folder namesnumObservations = numel(fds.files);fori = 1:numObservations file = fds.files {i};filepath = fileparts(file);[〜,label] = fileparts(filepath);标签{i,1} =标签;endds.labels =分类(标签);ds.numclasses = numel(unique(labels));%确定序列维度。定义LSTM时%网络体系结构,您可以将此属性用于%指定sequenceInputlayer的输入大小。x = preview(fds);ds.Sequendimension = size(x,1);%初始化数据存储属性。ds.minibatchsize = 128;ds.numobservations = numObservations;ds.CurrentFileIndex = 1;end功能tf = hasdata(ds)% Return true if more data is availabletf = ds.CurrentFileIndex + ds.MiniBatchSize - 1。。。<= ds.NumObservations;end功能[data,info] = read(ds)% Read one mini-batch batch of dataminiBatchSize = ds.minibatchsize;info = struct;fori = 1:miniBatchSize predictors{i,1} = read(ds.Datastore); responses(i,1) = ds.Labels(ds.CurrentFileIndex); ds.CurrentFileIndex = ds.CurrentFileIndex + 1;enddata = preprocessdata(ds,预测变量,响应);end功能data = preprocessData(ds,predictors,responses)%data = preprocessdata(DS,预测变量,响应)预处理%预测变量和响应中的数据并返回表% 数据miniBatchSize = ds.minibatchsize;%PAD数据到最长序列的长度。sequenceLengths = CellFun(@(x)大小(x,2),预测指标);MaxSequenceLength = max(sequenceLengths);fori = 1:miniBatchSize x = predivition {i};% Pad sequence with zeros.ifsize(X,2) < maxSequenceLength X(:,maxSequenceLength) = 0;endpredictors{i} = X;end%返回数据作为表。data =表(预测变量,响应);end功能重启(ds)%重置数据开始重启(ds.Datastore); ds.CurrentFileIndex = 1;endend方法(隐藏= true)功能frac =进度(DS)% Determine percentage of data read from datastorefrac = (ds.CurrentFileIndex - 1) / ds.NumObservations;endendend%结束班级定义
カスタム データストアの読み取り方法の実装には、阅读序列という使用れます。ファイルファイルデータ読み取るにはこの关数关数を作成ししなければなり
功能data = readSequence(filename)% 数据= readSequence(filename) reads the sequence X from the MAT-file% filenameS = load(filename); data = S.X;end

シャッフルのサポート追加

シャッフルのサポートを追加するには、まず、可捕データデータ実装実装の手顺従います。ににmysedendatatastore.mの実装をのよう更新します。

この例コードは,シャッフルのををMySequenceDatastoreクラスにし。縦并び省略记号,,MySequenceDatastoreの実装コードコピー必要があるを示します。

手順 実装

  1. クラス定義を更新して、matlab.io.datastore.shufflableクラスからも継承します。

  2. 洗牌の定義を既存の方法セクションに追加します。

classdefMySequenceDatastore < matlab.io.Datastore &。。。matlab.io.datastore.MiniBatchable &。。。matlab.io.datastore.shufflable% previously defined properties。。。方法%以前定义的方法。。。功能DSNew =洗牌(DS)%dsnew =洗牌(DS)洗牌和% corresponding labels in the datastore.% Create a copy of datastoredsNew = copy(ds);dsnew.datastore = copy(ds.datastore);fds = dsnew.datastore;% Shuffle files and corresponding labelsnumObservations = dsNew.NumObservations; idx = randperm(numObservations); fds.Files = fds.Files(idx); dsNew.Labels = dsNew.Labels(idx);endendend

カスタム ミニバッチ データストアの検証

ここに記載したすべての手順に従うと、カスタム ミニバッチ データストアの実装が完了します。このデータストアを使用する前に、カスタム データ ストアのテストのガイドラインに記載されているガイドラインを使用して、データストアが適切か確認します。

参考

関連する例

詳細