主要内容

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

深层学习用词のストア

MATLAB®のデータストアは,大きすぎて一度にメモリに収まらないデータの集合を処理および表現する便利な方法です。深層学習には大量のデータが必要となる場合がよくあるため,データストアはMATLABにおける深層学習ワークフローの重要な部分です。

データストアの选択

多くの用途では、組み込みデータストアで開始するのが最も簡単な方法です。使用可能な組み込みデータストアの詳細は、ファイル形式またはアプリケーション用のデータストアの選択ただし,ネットワークの学习,検证,および推论のためのとして直接直接のは,これらこれらのタイプの组み込みデータのみのみのみのみのみのみ。

データストア 说明 追加で必要になるツールボックス
imageageAtastore. イメージデータ用のデータストア なし
AugmentedimageGedataStore.

学习イメージのサイズ変更および张を行うのデータストア

データストアは非確定的

なし
PixellabeldAtastore.(电脑视觉工具箱)

ピクセルラベルデータのデータストア

计算机Vision Toolbox™

PixellabelimagedAtastore.(电脑视觉工具箱)

セマンティックセグメンテーションネットワークに学习习さためのデータストア

データストアは非確定的

电脑视觉工具箱

boxlabeldatastore.(电脑视觉工具箱)

境界ボックスラベルデータ用のデータストア

电脑视觉工具箱

RandompatchExtractionDatastore.(图像处理工具箱)

イメージイメージベースのデータからからランダムパッチを抽出するためのデータ

データストアは非確定的

图像处理工具箱™

bigimagedatastore.(图像处理工具箱) メモリに収まらない単一の大きなイメージのブロックを管理するためのデータストア 图像处理工具箱
denoisingimageageataTastore.(图像处理工具箱)

イメージノイズ除去の深層ニューラルネットワークに学習させるためのデータストア

データストアは非確定的

图像处理工具箱

その他の組み込みデータストアは深層学習の入力として使用できますが,これらのデータストアから読み取られたデータは,深層学習ネットワークに必要な形式になるように前処理しなければなりません。読み取りデータに必要な形式の詳細は,学校,検证,および推论用のの力データストアを参照してください。データストアから読み取られたデータを前処理する方法の詳細は、データストアの変换とと合并を参照してください。

用途によっては,データを当てはめる組み込みデータストアタイプが存在しないことがあります。これらの問題がある場合,カスタムデータストアを作成できます。詳細については,カスタム データ ストアの開発を参照してください。カスタムデータストアの関数が必要な形式でデータを返す限り,すべてのカスタムデータストアが深層学習インターフェイスに対する入力として有効です。

学校,検证,および推论用のの力データストア

深度学习工具箱™ののストアは,学校,検证,および推论にになな力です。

学习と検证

イメージデータストアを学習データのソースとして使用するには,Trainnetwork.の数IMDS.を使用します。その他のすべてのタイプのデータストアを学習データのソースとして使用するには、Trainnetwork.の数DS.を使用します。データストアを検証に使用するには、trainingOptionsで名前と値ののペアペア数'验证数据'を使用します。

学習または検証に有効な入力であるには,データストアの関数が细胞配列または表としてデータを返さなければなりません(数値配列を出力できるimageageAtastore.オブジェクトと、表を出力しなければならないカスタムミニバッチデータストアは除く)。

単一の致力于あるあるの场场れるれるストア返されるれる细胞配列に2つの列列ばなりませんんなりません。を表します。データデータの各列は个别のを表し表しimageageAtastore.の場合のみ、Trainnetwork.およびtrainingOptionsはは配列およびののとしてとして返さ返さをししししししししししししししししししししししししししし

複数の入力層があるネットワークにデータストアを使用するには,関数结合および变换を使用して,列数が(numinputs.+ 1)の细胞配列を出力するデータを作用成し。ここここ,numinputs.はは能力の数。この場合,最初のnuminputs.列は各入力の予測子を指定し,最後の列は応答を指定します。入力のの顺序,层层层数输入名称プロパティによって指定します。

以下の表に,データストアDS.に対して关节ををた结合のの力ののを示します。

ネットワークアーキテクチャ データストア出力 出力の例
単入力層

2列の表または细胞配列。

最初の列と2番目の列は,それぞれそれぞれ子と応答を指定ししし

桌面要素は,スカラー,行ベクトルか,数码配列が格式されたた行1のののででなけれなければなりませませませませでませませませませませませませませませ

カスタムミニバッチデータストアは,表を出力しなければなりません。

data =阅读(ds)
data = 4×2 table Predictors Response __________________ ________ {224×224×3 double} 2 {224×224×3 double} 7 {224×224×3 double} 9 {224×224×3 double} 9
data =阅读(ds)
数据= 4×2单元阵列{224×224×3双} {[2]} {224×224×3双} {[7]} {224×224×3双} {[9]} {224×224×3双} {[9]}
多重力量

numinputs.+ 1)列列细胞配列。numinputs.はは能力の数。

最初のnuminputs.個の列は各入力の予測子を指定し,最後の列は応答を指定します。

入力のの顺序,层层层数输入名称プロパティによって指定します。

data =阅读(ds)
Data = 4×3 cell array {224×224×3 double} {128×128×3 double} {[2]} {224×224×3 double} {128×128×3 double} {[2]} {224×224×3 double} {128×128×3 double} {[9]} {224×224×3 double} {128×128×3 double} {[9]}

予测子の形式は,データのタイプによって异なり。

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

H x W X Cの数据配列。ここここ,h,w,およびcは,それぞれイメージの高,幅,およびチャネル数。

3.次元イメージ

H x W X D X Cの数量配列。ここここ,H,W,D,およびCは,それぞれイメージの高,幅,深さ,およびおよび数。

ベクトルシーケンス

c行s列の行列。ここで,c はシーケンスの特徴の数、s はシーケンス長です。

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

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

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

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

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

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

特兰

c行1列の列ベクトル。cは特徴の数です。

桌面で返さ予测子彩色,要素に,数码スカラー,数码行ベクトルが含まれいる,または数码配列格式され1行1列のの含ま

关节Trainnetwork.は,複数のシーケンス入力層をもつネットワークをサポートしていません。

応答の形式は,タスクのタイプによって异なり。

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

  • スカラー

  • 数量ベクトル

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

序列到序列分类

カテゴリカルカテゴリカルラベルののsの,s,sは対応するするシーケンスシーケンス长です。

序列到序列回帰

R行s列の行列。ここで,R は応答の数、s は対応する予測子シーケンスのシーケンス長です。

表で返される応答の場合,要素は,直言スカラー,数値行ベクトルであるか,数値配列が格納された1行1列の细胞配列でなければなりません。

予测

预测分类,および激活を使用する推論の場合,予測子に対応する列を得るためにのみデータストアが必要です。推論関数は最初のNumInputs個の列を使用し,後続の層を無視します。ここで,NumInputsははネットワーク力层层数。

読み取りサイズとミニバッチサイズの指定

を呼び出すたびに,データストアがが任意行数(観测観测)を返すことがあります。“MiniBatchSize”の指定をサポートするTrainnetwork.预测分类激活などの関数は,データの完全なミニバッチの形成に必要な回数だけをの关键词バッチを成する际,メモリの内部キュー使にて,たとえばのの呼び出しごとにデータデータストアが贯し64行を返し,小匹匹匹匹配128である場合,データの各ミニバッチを形成するにはを2回呼び出す必要があります。

最良のランタイム パフォーマンスを得るには、によって返される観測値の数が“MiniBatchSize”に等しくなるようようににストアを构构するををしししお勧めしし'阅读'プロパティがあるデータストアの場合,'阅读'を设定して,を呼び出すたびにデータストアによって返される観測値の数を変更します。

データストアの変换とと合并

深层学习では,データがネットワークへの入入にた形式なる前にの前前拡拡拡拡になることがよくますにののことよくあり。变换および结合は,ネットワークに渡されるデータの準備に役立ちます。

複数の入力層があるネットワークにデータストアを使用するには,関数结合および变换を使用して,列数が(numinputs.+ 1)の细胞配列を出力するデータを作用成し。ここここ,numinputs.はは能力の数。この場合,最初のnuminputs.列は各入力の予測子を指定し,最後の列は応答を指定します。入力のの顺序,层层层数输入名称プロパティによって指定します。

データストアの変換

変换されたデータストア,データを読み取るときに,特定のデータをを基于なるデータストアにににます。变换を使用して,基となるデータストアおよび変換処理について指定します。

  • 次に,关键词,关键词复を完全ななに変换の完全なを変换。变换の数@fcnとして指定します。详细については,関数のファイルでの作成を参照してください。

  • 1行のコードで表现できる単纯な変换の合,名录关节のハンドルを变换の数@fcnとして指定できます。詳細については,作者有关部を参照してください。

变换に指定された関数ハンドルは,基になるデータストアの関数によって返される形式と同じ形式の入力データを受け入れなければなりません。

例:数字分類ネットワークに学習させるためのイメージデータストアの変換

この例では,関数变换を使使し,イメージデータストア内の各イメージランダムななの回転ががさ习习セットを作物TransformedDatastoreTrainnetwork.に渡して,簡単な数字分類ネットワークに学習させます。

数字イメージを含むイメージデータストアを作成します。

digitDatasetPath = fullfile (matlabroot,'工具箱'“nnet”...“nndemos”'nndatasets''digitdataset'); imds2=图像数据存储(digitDatasetPath,...'insertumbfolders'假的,...“LabelSource”“foldernames”);

ミニバッチミニバッチサイズがイメージイメージデータストアReadSizeに等しくなるように設定します。

miniBatchSize = 128;洛桑国际管理发展学院。ReadSize = miniBatchSize;

ランダムな90度の回転を追加してイメージデータストア内のイメージを変換します。変換関数preprocessForTrainingの定義は、この例の終わりで行います。

@preprocessForTraining dsTrain =变换(imd,'inclordinfo',真正的)
dstrain = transformeddataStore的属性:底层atakastore:[1×1 matlab.io.datastore.imagedataStore]变换:{@preprocessfortring} includeinfo:1

ネットワークの层および学习习を指定し,変换が行われたデータdsTrainをデータのソースとして使用してネットワークに学習させます。

层=[imageInputLayer([28 1],“归一化”'没有任何')卷积2dlayer(5,20)rululayer maxpooling2dlayer(2,'走吧',2)全连接层(10);softmaxLayer分类层];选项=培训选项(“亚当”...'plots'“训练进步”...“MiniBatchSize”,小匹匹匹匹配);net = trainnetwork(dstrain,图层,选项);

基になるデータストアから読み取られたデータ数据に対して目的の変換を実行する関数を定義します。この関数は各読み取りイメージをループ処理し,ランダムな回転を実行して,変換後のイメージと対応するラベルをTrainnetwork.で期される细胞配列として返します。

功能[dataOut,info]=prepreprefortraining(data,info)numRows=size(data,1);dataOut=cell(numRows,2);为了Idx = 1:numrows随机90度旋转imgOut = rot90(数据{idx 1},兰迪(4)1);%将标签从Info Struct返回为%数据输出中的第二列。dataOut (idx:) = {imgOut, info.Label (idx)};结尾结尾

データストアの统合

关节结合は、複数のデータストアを関連付けます。結果のCombinedDatastoreに対してデータストアのリセットなど操作业う,基本になるなるすべてのストア同じ同じなるが実れれれれ同じされれたデータストアストアれますますますますますれれたデータストアストアを呼び出すと,基因なる个のになるデータストアからのバッチますつが読み取られますれ読み取ら観测はますばばませんんばなりませ。と,学习と検证に适した列の细胞配列で,结果が水平方向に连结さて返されますシャッフルささたストアをシャッフルと,基于ストア内のも同なるランダムストアににます。

たとえば,image-to-image回帰ネットワークに学習させる場合,2つのイメージデータストアを組み合わせることによって学習データセットを作成できます。次のサンプルコードは,imdsXおよびimdsYという名前の2つのイメージデータストアののわせを示しますれデータれたデータImdstrain.はデータを2列の细胞配列配列返します。

imdsx = imagedataStore(___);IMDSY = IMAGEDATASTORE(___);IMDStrain =组合(IMDSX,IMDSY)
imdsTrain = CombinedDatastore属性:

图像处理工具箱がが场合,randomPatchExtractionDatastore(图像处理工具箱)によってによって别の解决策がされれれこれは,imageageAtastore.PixellabeldAtastore.,およびTransformedDatastore内のイメージに基づくデータを関連付ける方法に代わる解決策です。randomPatchExtractionDatastoreには,関数结合をパッチがありはいますががは,具体而言,をががますのいますます,具体而言,をががあり,具体而言。

  • 变换および结合をを用したカスタムの操作业の装を必要とするなく,2次元および3次元両両のデータからを抽出する,简化な方法を提供提供

  • 变换をを使したカスタムカスタム操作业の定义必要とするなく,ミニバッチのイメージごとににの単単単に生生生生する提供

  • 直言データにイメージ変換を適用する際に,直言データと数値データの間での効率的な変換をサポートする

  • 並列学習をサポートする

  • イメージイメージをキャッシュするすることによってパフォーマンスをする

並列学習およびバックグラウンドディスパッチへのデータストアの使用

並列学習またはマルチGPU学習に使用されるデータストアは分割可能でなければなりません。データストアが分割可能かどうかを判定するには,関数isPartitionableを使用します。trainingOptionsの名前と値のペアの引数'执行环境'を实用して,并列学习またはマルチgpu学院ををします。并列学习,単一gpuまたはまたは数GPUでの学位をうは,并行计算工具箱™が必要です。

多くの組み込みデータストアは関数分区をサポートしているため,既に分割可能になっています。关节变换结合を組み込みデータストアと共に使用すると,一般的には並列学習とマルチGPU学習のサポートが維持されます。

并列学习またはマルチgpu学院ををサポートカスタムデータストア作物作物成する必要ある场合,データストアはmatlab.io.datastore.Partitionableクラスを包装しなければなりん。

分割可能なデータストアは,バックグラウンドディスパッチを使用した学習データの読み取りをサポートします。バックグラウンドディスパッチでは,GPUの作動中にデータがメモリのキューに入れられます。trainingOptionsの名前と値のペアの引数'DispatchInBackground'バック使ディスパッチ指定指定しし指定指定します。并行计算工具箱が必要です。

并列学习のの合,データストアでtrainingOptionsの名前と値のペアの引数'洗牌''没有任何'に指定することはサポートされません。

参考

||||

関連する例

详细