주요 콘텐츠

dllaplacian

딥러닝 데이터의 라플라시안

R2024b 이후

    설명

    라플라시안 딥러닝 연산은 지정된 입력 데이터와 연산 차원에 대해 신경망 및 모델 함수 출력값의 라플라시안을 반환합니다.

    lap = dllaplacian(u,x,dim)은 입력 데이터 x와 연산 차원 dim에 대한 신경망 또는 모델 함수 출력값 u의 라플라시안을 반환합니다.

    예제

    lap = dllaplacian(u,x,dim,EnableHigherDerivatives=tf)는 역방향 통과(backward pass)를 추적하여 고계 도함수를 활성화할지 여부도 지정합니다.

    예제

    모두 축소

    신경망을 만듭니다.

    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 함수가 평가하는 손실 함수 내부

    • 사용자 지정 계층에서 평가하는 순방향 함수 내부

    • dlfeval 함수가 평가하는 모델 함수와 모델 손실 함수 내부

    dim 인수로 지정되지 않은 차원의 크기는 일치해야 합니다.

    입력 데이터로, 추적되는 dlarray 행렬로 지정됩니다.

    자동 미분이 활성화된 상태로 함수를 평가할 경우 입력 dlarray 객체가 추적됩니다. dlarray가 추적되는 상황은 다음과 같습니다.

    • trainnet 함수가 평가하는 손실 함수 내부

    • 사용자 지정 계층에서 평가하는 순방향 함수 내부

    • dlfeval 함수가 평가하는 모델 함수와 모델 손실 함수 내부

    dim 인수로 지정되지 않은 차원의 크기는 일치해야 합니다.

    u의 연산 차원으로, 양의 정수로 지정됩니다.

    dllaplacian 함수는 데이터의 나머지 차원을 독립된 배치 차원으로 처리합니다.

    데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    고계 도함수를 활성화할지 지정하는 플래그로, 다음 값 중 하나로 지정됩니다.

    • 숫자형 또는 논리값 1(true) — 고계 도함수를 활성화합니다. 자동 미분을 사용하여 도함수를 계산하는 함수(예: dlgradient, dljacobian, dldivergence, dllaplacian)를 이후에 호출할 때 여기서 반환된 값을 추가 계산에 사용할 수 있도록, 역방향 통과를 추적합니다.

    • 숫자형 또는 논리값 0(false) — 고계 도함수를 비활성화합니다. 역방향 통과를 추적하지 않습니다. 1계 도함수만 계산하려는 경우 이 옵션이 대체로 속도가 빠르고 필요한 메모리가 더 적습니다.

    출력 인수

    모두 축소

    라플라시안으로, 형식이 지정되지 않은 1×N dlarray 객체로 반환됩니다. 여기서 N은 데이터의 배치 차원 크기입니다. lap(n)의 값은 Δun=i=1K2unx(i,n)2입니다. 여기서 i는 연산 차원의 요소를 참조하고 n은 배치 차원의 요소를 참조합니다.

    버전 내역

    R2024b에 개발됨