0

현재 Theano에 내장 된 길쌈 신경 네트워크로 작업 중입니다. Dropout은 노드 출력이 특정 확률로 마스킹되는 정규화 기법이며, 마스크는 역방향 전파는 물론 순방향으로도 적용해야합니다.Theano에서 드롭 아웃 구현

현재 Theano에서 작업 중이므로 역 전파 단계는 자동 차별화를 사용하여 모델의 그래디언트를 계산하는 T.grad 함수로 대체됩니다. 온라인에서 찾은 몇 가지 예에서 그들은 순방향의 값만 마스크하고 그라데이션 계산 단계에서 드롭 아웃 마스크는 전혀 고려하지 않습니다. 어떤 종류의 효과가 네트워크에서 발생하며 마스크를 그라디언트 계산에 포함 시키려면 어떻게해야합니까? 필자가 지금 가지고있는 코드는 주로 깊은 학습 지침서에서 Lisa Lab이 제공 한 코드를 기반으로합니다.

+0

일반적으로 이러한 질문에는 귀하의 일부 코드가 포함되어야합니다. 나는 더 많은 예제들을 살펴볼 것을 제안한다. "lasagne"를보세요 ... 괜찮은 지원과 코드가있는 theano 맨 위에 구축 된 프레임 워크입니다. 드롭 아웃을 사용하면 활성화 된 유닛 만 업데이트됩니다. 테스트 동안 모든 유닛이 사용되지만 출력은 드롭 아웃 비율에 따라 조정됩니다. – user1269942

+0

당신이 순수 Theano 대 [Lasagne] (https://github.com/Lasagne/Lasagne)에서 이것을하는 이유는 무엇입니까? Lasagne의 드롭 아웃 구현은 한 줄짜리입니다. – gobrewers14

+0

@ user1269942 내가 가지고있는 많은 코드가 유용하지 않으므로 쓸모없는 것을 게시하고 싶지 않습니다. 그러나 나는 Lasagne을 확실히 시험해 보거나 적어도 그들이 구현 한 방법에 대해 많이 알고 있습니다. –

답변

0

x * y, x와 같은 두 변수의 곱하기 기울기에는 y 그래디언트가 있고 그 반대도 마찬가지입니다. 드롭 아웃은 마스크의 출력과 노드의 출력 인 노드 출력의 마스킹을 사용합니다. 졸업식을하는 동안, 그것은 theano 자체에 의해 돌볼 것입니다. dropout implementation in theano