メインコンテンツ

dllaplacian

深層学習データのラプラシアン

R2024b 以降

    説明

    ラプラシアン深層学習演算は、指定された入力データと演算次元に関して、ニューラル ネットワークとモデル関数の出力のラプラシアンを返します。

    lap = dllaplacian(u,x,dim) は、入力データ x と演算次元 dim に関して、ニューラル ネットワーク出力またはモデル関数出力 u のラプラシアンを返します。

    lap = dllaplacian(u,x,dim,EnableHigherDerivatives=tf) は、バックワード パスをトレースして高次微分を有効にするかどうかも指定します。

    すべて折りたたむ

    ニューラル ネットワークを作成します。

    numInputChannels = 3;
    numOutputChannels = 1;
    
    layers = [
        featureInputLayer(numInputChannels)
        fullyConnectedLayer(numOutputChannels)
        tanhLayer];
    
    net = dlnetwork(layers);

    学習データを読み込みます。この例では、ランダム データをいくつか生成します。

    numObservations = 128;
    
    X = rand(numInputChannels,numObservations);
    X = dlarray(X,"CB");
    
    T = rand(numOutputChannels,numObservations);
    T = dlarray(T,"CB");

    ネットワークとデータを入力として受け取り、損失、学習可能なパラメーターに対するその損失の勾配、および入力データに関する予測のラプラシアンを返すモデル損失関数を定義します。

    function [loss,gradients,lap] = modelLoss(net,X,T)
    
    Y = forward(net,X);
    loss = l1loss(Y,T);
    
    X = stripdims(X);
    Y = stripdims(Y);
    
    lap = dllaplacian(Y,X,1);
    gradients = dlgradient(loss,net.Learnables);
    
    end

    dlfeval 関数を使用してモデル損失関数を評価します。

    [loss,gradients,lap] = dlfeval(@modelLoss,net,X,T);

    ラプラシアンのサイズを表示します。

    size(lap)
    ans = 1×2
    
         1   128
    
    

    入力引数

    すべて折りたたむ

    ニューラル ネットワークまたはモデル関数の出力。トレースされた dlarray ベクトルとして指定します。

    自動微分を有効にして関数を評価する場合、ソフトウェアは入力 dlarray オブジェクトをトレースします。ソフトウェアが dlarray をトレースするコンテキストには次のものが含まれます。

    • trainnet 関数が評価する損失関数の内部

    • カスタム層が評価する forward 関数の内部

    • dlfeval 関数が評価するモデルとモデル損失関数の内部

    dim 引数で指定されていない次元のサイズは同じでなければなりません。

    入力データ。トレースされた dlarray 行列として指定します。

    自動微分を有効にして関数を評価する場合、ソフトウェアは入力 dlarray オブジェクトをトレースします。ソフトウェアが dlarray をトレースするコンテキストには次のものが含まれます。

    • trainnet 関数が評価する損失関数の内部

    • カスタム層が評価する forward 関数の内部

    • dlfeval 関数が評価するモデルとモデル損失関数の内部

    dim 引数で指定されていない次元のサイズは同じでなければなりません。

    u の演算次元。正の整数として指定します。

    dllaplacian 関数は、データの残りの次元を独立したバッチ次元として扱います。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    高次微分を有効にするフラグ。次のいずれかの値として指定します。

    • 数値または logical 1 (true) — 高次微分を有効にします。自動微分を使用して微分を計算する関数 (dlgradientdljacobiandldivergence、および dllaplacian など) をさらに呼び出したときに、返された値を計算で使用できるように、バックワード パスがトレースされます。

    • 数値または logical 0 (false) — 高次微分を無効にします。バックワード パスはトレースされません。一次微分のみを計算する場合、このオプションを使用すると、通常、処理時間が短縮され、メモリ使用量が節約されます。

    出力引数

    すべて折りたたむ

    ラプラシアン。形式を整えていない 1 行 N 列の dlarray オブジェクトとして返されます。ここで、N はデータのバッチ次元のサイズです。lap(n) の値は Δun=i=1K2unx(i,n)2 です。ここで、i は演算次元のインデックス、n はバッチ次元のインデックスです。

    バージョン履歴

    R2024b で導入