MATLAB ヘルプ センター
深層学習データの発散
R2024b 以降
div = dldivergence(u,x,dim)
div = dldivergence(u,x,dim,EnableHigherDerivatives=tf)
発散深層学習演算は、指定された入力データと演算次元に関して、ニューラル ネットワークとモデル関数の出力の数学的な発散を返します。
div = dldivergence(u,x,dim) は、指定された演算次元のデータ x に関してニューラル ネットワークまたはモデル関数の出力 u を偏微分したものの合計を返します。
div
u
x
dim
例
div = dldivergence(u,x,dim,EnableHigherDerivatives=tf) は、バックワード パスをトレースして高次微分を有効にするかどうかも指定します。
tf
すべて折りたたむ
ニューラル ネットワークを作成します。
numChannels = 3; layers = [ featureInputLayer(numChannels) fullyConnectedLayer(numChannels) tanhLayer]; net = dlnetwork(layers);
学習データを読み込みます。この例では、ランダム データをいくつか生成します。
numObservations = 128; X = rand(numChannels,numObservations); X = dlarray(X,"CB"); T = rand(numChannels,numObservations); T = dlarray(T,"CB");
ネットワークとデータを入力として受け取り、損失、学習可能なパラメーターに対するその損失の勾配、および入力データに関する予測の発散を返すモデル損失関数を定義します。
function [loss,gradients,div] = modelLoss(net,X,T) Y = forward(net,X); loss = l1loss(Y,T); X = stripdims(X); Y = stripdims(Y); div = dldivergence(Y,X,1); gradients = dlgradient(loss,net.Learnables); end
dlfeval 関数を使用してモデル損失関数を評価します。
dlfeval
[loss,gradients,div] = dlfeval(@modelLoss,net,X,T);
発散のサイズを表示します。
size(div)
ans = 1×2 1 128
dlarray
ニューラル ネットワークまたはモデル関数の出力。トレースされた dlarray 行列として指定します。
自動微分を有効にして関数を評価する場合、ソフトウェアは入力 dlarray オブジェクトをトレースします。ソフトウェアが dlarray をトレースするコンテキストには次のものが含まれます。
trainnet 関数が評価する損失関数の内部
trainnet
カスタム層が評価する forward 関数の内部
dlfeval 関数が評価するモデルとモデル損失関数の内部
u と x のサイズは一致しなければなりません。
入力データ。トレースされた dlarray 行列として指定します。
u の演算次元。正の整数として指定します。
dldivergence 関数は、データの残りの次元を独立したバッチ次元として扱います。
dldivergence
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
single
double
int8
int16
int32
int64
uint8
uint16
uint32
uint64
true
1
false
0
高次微分を有効にするフラグ。次のいずれかの値として指定します。
数値または logical 1 (true) — 高次微分を有効にします。自動微分を使用して微分を計算する関数 (dlgradient、dljacobian、dldivergence、および dllaplacian など) をさらに呼び出したときに、返された値を計算で使用できるように、バックワード パスがトレースされます。
dlgradient
dljacobian
dllaplacian
数値または logical 0 (false) — 高次微分を無効にします。バックワード パスはトレースされません。一次微分のみを計算する場合、このオプションを使用すると、通常、処理時間が短縮され、メモリ使用量が節約されます。
発散。形式を整えていない 1 行 N 列の dlarray オブジェクトとして返されます。ここで、N はデータのバッチ次元のサイズです。div(n) の値は div u(:,n)=∇·u(:,n)=∑i=1K∂u(i,n)∂x(i,n) です。ここで、K はデータの演算次元のサイズ、i は演算次元のインデックス、n はバッチ次元のインデックスです。
div(n)
R2024b で導入
dlarray | dlfeval | dlnetwork | dljacobian | dlgradient | dllaplacian
dlnetwork
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
ヨーロッパ
アジア太平洋地域
最寄りの営業オフィスへのお問い合わせ