このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
"ミニバッチ データストア" とは、バッチ単位でのデータの読み取りをサポートするデータストアの実装です。ミニバッチ データストアは、Deep Learning Toolbox™ を使用する深層学習アプリケーションの学習データセット、検証データセット、テスト データセット、および予測データセットのソースとして使用できます。
シーケンス,データ,またはテキストを前处理するにはここでで说明说明するするするフレームフレームワークをを使用ししてて独自独自のミニバッチミニバッチデータストアストアををを构筑ますますますます,シーケンス データのカスタム ミニバッチ データストアを使用したネットワークの学習を参照してください。
カスタム データストアのクラスおよびオブジェクトを使用して、カスタム データストア インターフェイスを構築します。次に、カスタム データストアを使用してデータを MATLAB®に読み込みます。
カスタムミニバッチストアの设计,,matlab.io.datastore
およびmatlab.io.datastore.MiniBatchable
クラスから,必要プロパティおよび実装がれます。オプションオプションで,学习中中のシャッフルののサポートサポートサポート。
処理のニーズ |
クラス |
---|---|
深度学习工具箱での学習データセット、検証データセット、テスト データセット、および予測データセット用のミニバッチ データストア |
可捕データデータ実装実装を参照してください。 |
学習中のシャッフルをサポートするミニバッチ データストア |
シャッフルのサポート追加を参照してください。 |
MiniBatchable
データストアの実装mydatastore
という名前のカスタム ミニバッチ データストアを実装するには、スクリプトmydatastore.m
を作成します。このスクリプトはMATLABパス上になければならず,適切なクラスから継承し,必要なメソッドを定義するコードを含んでいる必要があります。Deep Learning Toolbox での学習データセット、検証データセット、テスト データセット、および予測データセット用のミニバッチ データストアを作成するコードは以下でなければなりません。
クラスmatlab.io.datastore
およびmatlab.io.datastore.MiniBatchable
から継承する。
プロパティMinibatchSize
およびNumObservations
を定義する。
これらの手順に加えて、データの処理および解析に必要なその他のプロパティやメソッドを定義できます。
メモ
ネットワークにさせて,,训练
が'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
は,シーケンス层をもつネットワークしていませ。。
応答のはタスクのによって异なり。。
タスク | 応答の形式 |
---|---|
分類 | 分类スカラー |
回帰 |
|
sequence-to-sequence 分類 | カテゴリカル ラベルの 1 行 s 列のシーケンス。ここで、s は対応する予測子シーケンスのシーケンス長です。 |
sequence-to-sequence 回帰 | r r s s列行列,,,,応答数,,,は |
table 要素には、categorical スカラー、数値スカラー、数値行ベクトルが含まれているか、数値配列が格納された 1 行 1 列の cell 配列が含まれていなければなりません。
この例では、シーケンス データを処理するためのカスタム ミニバッチ データストアを作成する方法を説明します。スクリプトをmysedendatatastore.m
という名前のファイルに保存します。
手順 | 実装 |
---|---|
|
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
の実装をのよう更新します。
追加クラスmatlab.io.datastore.shufflable
から継承し。
追加メソッド洗牌
を定義します。
この例コードは,シャッフルのををMySequenceDatastore
クラスにし。縦并び省略记号,,MySequenceDatastore
の実装コードコピー必要があるを示します。
手順 | 実装 |
---|---|
|
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 |
ここに記載したすべての手順に従うと、カスタム ミニバッチ データストアの実装が完了します。このデータストアを使用する前に、カスタム データ ストアのテストのガイドラインに記載されているガイドラインを使用して、データストアが適切か確認します。