주요 콘텐츠

dldivergence

딥러닝 데이터의 발산

R2024b 이후

    설명

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

    div = dldivergence(u,x,dim)은 지정된 연산 차원에 대해 데이터 x에 대한 신경망 또는 모델 함수 출력값 u의 편도함수 합을 반환합니다.

    예제

    div = dldivergence(u,x,dim,EnableHigherDerivatives=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 함수를 사용하여 모델 손실 함수를 평가합니다.

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

    발산의 크기를 확인합니다.

    size(div)
    ans = 1×2
    
         1   128
    
    

    입력 인수

    모두 축소

    신경망 또는 모델 함수 출력값으로, 추적되는 dlarray 행렬로 지정됩니다.

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

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

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

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

    ux의 크기는 일치해야 합니다.

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

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

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

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

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

    ux의 크기는 일치해야 합니다.

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

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

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

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

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

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

    출력 인수

    모두 축소

    발산으로, 형식이 지정되지 않은 1×N dlarray 객체로 반환됩니다. 여기서 N은 데이터의 배치 차원 크기입니다. div(n)의 값은 div u(:,n)=·u(:,n)=i=1Ku(i,n)x(i,n)입니다. 여기서 K는 데이터의 연산 차원 크기이고, i는 연산 차원의 요소를 참조하며, n은 배치 차원의 요소를 참조합니다.

    버전 내역

    R2024b에 개발됨