dlgradient
자동 미분을 사용하여 사용자 지정 훈련 루프 기울기 계산
설명
dlgradient 함수는 자동 미분을 사용하여 도함수를 계산합니다.
팁
대부분의 딥러닝 작업의 경우, 사전 훈련된 신경망을 사용하고 이를 사용자 자신의 데이터에 맞게 적응시킬 수 있습니다. 새로운 영상 세트를 분류할 수 있도록 전이 학습을 사용하여 컨벌루션 신경망을 다시 훈련시키는 방법을 보여주는 예제는 Retrain Neural Network to Classify New Images 항목을 참조하십시오. 또는 trainnet 함수와 trainingOptions 함수를 사용하여 신경망을 처음부터 만들고 훈련시킬 수 있습니다.
trainingOptions 함수가 작업에 필요한 훈련 옵션을 제공하지 않는다면 자동 미분을 사용하여 사용자 지정 훈련 루프를 만들 수 있습니다. 자세한 내용은 사용자 지정 훈련 루프를 사용하여 신경망 훈련시키기 항목을 참조하십시오.
trainnet 함수가 작업에 필요한 손실 함수를 제공하지 않는다면 사용자 지정 손실 함수를 trainnet에 함수 핸들로 지정할 수 있습니다. 예측값과 목표값보다 더 많은 입력값이 필요한 손실 함수(예: 신경망 또는 추가 입력값에 액세스해야 하는 손실 함수)의 경우 사용자 지정 훈련 루프를 사용하여 모델을 훈련시킵니다. 자세한 내용은 사용자 지정 훈련 루프를 사용하여 신경망 훈련시키기 항목을 참조하십시오.
Deep Learning Toolbox™가 작업에 필요한 계층을 제공하지 않는다면 사용자 지정 계층을 만들 수 있습니다. 자세한 내용은 사용자 지정 딥러닝 계층 정의하기 항목을 참조하십시오. 계층 신경망으로 지정할 수 없는 모델의 경우 모델을 함수로 정의할 수 있습니다. 자세한 내용은 Train Network Using Model Function 항목을 참조하십시오.
어느 훈련 방법을 어느 작업에 사용해야 하는지에 대한 자세한 내용은 Train Deep Learning Model in MATLAB 항목을 참조하십시오.
[는 변수 dydx1,...,dydxk] = dlgradient(y,x1,...,xk)x1부터 xk까지에 대한 y의 기울기를 반환합니다.
dlfeval에 전달된 함수 내에서 dlgradient를 호출합니다. 자동 미분을 사용하여 기울기 계산하기 및 Use Automatic Differentiation In Deep Learning Toolbox 항목을 참조하십시오.
[는 기울기를 반환하고 하나 이상의 이름-값 쌍을 사용하여 추가 옵션을 지정합니다. 예를 들어 dydx1,...,dydxk] = dlgradient(y,x1,...,xk,Name,Value)dydx = dlgradient(y,x,'RetainData',true)를 사용하면 후속 dlgradient 호출에 재사용할 수 있도록 기울기에 중간값이 유지됩니다. 이 구문은 시간은 절약할 수 있으나, 메모리를 더 많이 사용합니다. 자세한 내용은 팁 항목을 참조하십시오.
예제
입력 인수
이름-값 인수
출력 인수
제한 사항
dlgradient함수는 사용자 지정 계층이 포함된dlnetwork객체를 사용자 지정 역방향 함수와 함께 사용할 경우 고계 도함수의 계산을 지원하지 않습니다.dlgradient함수는 다음 계층이 포함된dlnetwork객체를 사용할 경우 고계 도함수의 계산을 지원하지 않습니다.gruLayerlstmLayerbilstmLayer
dlgradient함수는 다음 함수에 종속된 고계 도함수의 계산을 지원하지 않습니다.grulstmembedprodinterp1
세부 정보
팁
dlgradient호출은 함수 내에 있어야 합니다. 기울기의 숫자형 값을 구하려면dlfeval을 사용하여 함수를 계산해야 하고 함수에 대한 인수는dlarray여야 합니다. Use Automatic Differentiation In Deep Learning Toolbox 항목을 참조하십시오.기울기가 올바로 계산되도록 하려면
y인수에는dlarray를 지원하는 함수만 사용해야 합니다. List of Functions with dlarray Support 항목을 참조하십시오.'RetainData'이름-값 쌍 인수를true로 설정하면, 도함수 계산 후 즉시 추적이 지워지는 대신dlfeval함수 호출이 지속되는 동안 추적이 보존됩니다. 이 보존 덕분에 동일한dlfeval호출 내에서 후속dlgradient호출할 때 더 빠르게 실행될 수 있지만, 메모리가 더 많이 사용됩니다. 예를 들어 적대 신경망을 훈련시킬 때'RetainData'설정이 유용한데, 이는 훈련 중에 두 신경망이 데이터와 함수를 공유하기 때문입니다. 생성적 적대 신경망(GAN) 훈련시키기 항목을 참조하십시오.1계 도함수의 계산만 필요한 경우,
'EnableHigherDerivatives'옵션이false로 설정되어 있는지 확인하십시오. 이 설정이 대체로 속도가 더 빠르고 필요한 메모리가 더 적기 때문입니다.복소수 기울기는 Wirtinger 도함수를 사용하여 계산됩니다. 복소수 기울기는 미분하려는 함수의 실수부가 증가하는 방향으로 정의됩니다. 이는 함수가 복소수이더라도 미분하려는 변수(예: 손실)는 실수여야 하기 때문입니다.
딥러닝 함수(예: 모델 함수와 모델 손실 함수)에 대한 호출의 속도를 높이려면
dlaccelerate함수를 사용하면 됩니다. 이 함수는 추적을 자동으로 최적화하고 캐시하며 재사용하는AcceleratedFunction객체를 반환합니다.
확장 기능
버전 내역
R2019b에 개발됨

