inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

딥러닝 CNN 완벽 가이드 - TFKeras 버전

CNN을 이용하여 Fashion MNIST 예측 모델 구현하기

Dropout 적용 시 학습, 테스트 시 질문입니다!

925

밑바닥개발자

작성한 질문수 77

0

안녕하세요! 강의 잘 듣고 있습니다! 

해당 강의 실습코드에서 CNN 모델 설계 시 중간에 Dropout을 적용하잖아요? Dropout이 사전에 정의한 비율만큼의 랜덤한 노드들을 삭제해서 오버피팅을 줄이고자 하는 것이라고 알고 있는데요! 랜덤하게 노드를 drop 하다보니 학습,검증 데이터로 평가할 때는 Dropout을 적용하되 Test 데이터에 대해서 평가를 할 때는 Dropout을 적용하지 않아야 한다고 알고 있는데요!(혹시 아니라면 답변 달아주세요!)

Q1. 그렇다면 Tensorflow keras 모듈에서도 evaluate() 함수를 사용할 때는 설계한 모델에 Dropout layer가 들어있어도 evaluate 할 때는 내부적으로 학습시킨 모델에서 Dropout layer를 적용하지 않고 테스트 데이터에 대해 최종 예측하게 되나요?

Q2. 그리고 Dropout이 랜덤하게 노드를 삭제하다보니 학습할 때, 만약에 Epoch = 5라면 1번 Epoch를 돌 때마다 삭제될 노드들이 바뀌나요? 아니면 애초에 랜덤 시드 처럼 삭제될 노드를 처음에 못 박아놓고 Epoch 돌 때마다 매번 동일한 노드들을 삭제되나요? 

혹시 질문이 잘 이해가 안 가신다면 답변 달아주세요! 감사합니다 :)

딥러닝 kaggle keras 머신러닝 배워볼래요? tensorflow cnn

답변 1

1

권 철민

안녕하십니까, 

1. 네, Dropout은 학습 시에만 적용됩니다. tensorflow는 Inference 시에는 모델에 dropout layer가 있어도 이를 무시하고 그대로 연결합니다. 즉 dropout layer가 inactive되면서 모든 Node가 연결됩니다. 

2.   동일한 노드를 계속 삭제하면 그 역시 오버 피팅 될 확률이 커지기 때문에 연결이 무시될 노드는 batch 단위로 학습할 때 마다 바뀌게 됩니다.

감사합니다.  

0

밑바닥개발자

빠른 명쾌한 답변 감사드립니다! 

resize 질문

0

60

1

20251212 Kaggle 런타임에 scikit-learn 설치 실패 트러블 슈팅

0

86

1

Loss와 매트릭 관계

0

75

2

Boston 코랩 실습

0

170

2

배치 정규화의 이해와 적용 2 강의 질문

0

143

2

Augmentation원본에 적용해서 데이터 갯수 자체를 늘리는 행위는 의미가있나요?

0

151

2

Conv함수 안에 activation 을 넣지 않는 이유가 뭔지 궁금합니다.

0

212

2

소프트맥스 관련 질문입니다

0

214

1

강의 관련 질문입니다

0

161

2

residual block과 identity block의 차이

0

199

2

옵티마이저와 경사하강법의 차이가 궁금합니다.

1

251

1

실습 환경

0

171

2

입력 이미지 크기

0

256

2

데이터 증강

0

203

2

albumentations ShiftScaleRotate

0

210

1

Model Input Size 관련

0

292

1

마지막에 bird -> frog 말고도 deer -> frog 도 잘못된것 아닌가요??

0

206

1

일반적인 질문 (kaggle notebook사용)

0

276

2

실무에서 Augmentation 적용 시

0

346

2

안녕하세요 교수님

0

235

1

가중치 초기화(Weight Initialization) 질문입니다.

0

332

1

테스트 데이터셋 predict의 'NoneType' object has no attribute 'shape' 오류

0

412

1

학습이 이상하게 됩니다.

2

1040

2

boston import가 안됩니다

0

230

1