numObservations = 128;
X = rand([inputSize numObservations]);
X = dlarray(X,"SSCB");
T = rand([numOutputChannels numObservations]);
T = dlarray(T,"CB");
신경망과 데이터를 입력값으로 받고 손실, 학습 가능한 파라미터에 대한 손실의 기울기, 입력 데이터에 대한 예측값의 야코비 행렬을 반환하는 모델 손실 함수를 정의합니다.
function [loss,gradients,jac] = modelLoss(net,X,T)
Y = forward(net,X);
loss = l1loss(Y,T);
X = stripdims(X);
Y = stripdims(Y);
jac = dljacobian(Y,X,1);
gradients = dlgradient(loss,net.Learnables);
end
추적되는 dlarray 객체는 자동 미분 맥락에서 연산이 수행되는 dlarray 객체입니다. 자동 미분이 활성화된 함수를 평가할 때, 관련 연산이 추적이라는 데이터 구조에 기록되며 이 추적을 사용하여 도함수가 계산됩니다. dlarray가 추적되는 상황은 다음과 같습니다.
추적되는 dlarray 객체는 자동 미분 맥락에서 연산이 수행되는 dlarray 객체입니다. 자동 미분이 활성화된 함수를 평가할 때, 관련 연산이 추적이라는 데이터 구조에 기록되며 이 추적을 사용하여 도함수가 계산됩니다. dlarray가 추적되는 상황은 다음과 같습니다.
숫자형 또는 논리값 1(true) — 고계 도함수를 활성화합니다. 자동 미분을 사용하여 도함수를 계산하는 함수(예: dlgradient, dljacobian, dldivergence, dllaplacian)를 이후에 호출할 때 여기서 반환된 값을 추가 계산에 사용할 수 있도록, 역방향 통과를 추적합니다.
숫자형 또는 논리값 0(false) — 고계 도함수를 비활성화합니다. 역방향 통과를 추적하지 않습니다. 1계 도함수만 계산하려는 경우 이 옵션이 대체로 속도가 빠르고 필요한 메모리가 더 적습니다.