인프런 커뮤니티 질문&답변

오광덕님의 프로필 이미지
오광덕

작성한 질문수

딥러닝 CNN 완벽 가이드 - Fundamental 편

질문있습니다. Augmentation기법과 Keras Sequence 활용하기 강의 부분!

작성

·

261

0

Albumentation을 이용한 Augmentation기법과 Keras Sequence 활용하기 강의 부분에서
별로의 Cnd_dataset(Sequence)에 __init__, __len__, __getitem__ 을 구현하는 것 까지는 이해했습니다.
 
제가 이해가 가지 않는 부분은

 

cnd_ds = CnD_Dataset(train_image_filenames, train_image_labels, batch_size=BATCH_SIZE,

                         augmentor=cnd_augmentor, shuffle=False, pre_func=zero_one_scaler)

 
이 부분인데요, Cnd_Dataset 생성자에 매개변수만 입력하면, __init__ 함수만 호출되야 하는 거 아닌가 싶어서요 .
 
어느 부분에서 __getitem__ 과 __len__이 호출되는지 모르겠습니다.
 
아니면 cnd_ds를 생성할 때 Cnd_Dataset 클래스의 메서드를 다 타는 건가요?
 
답변 주시면 감사하겠습니다.

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까, 

Keras Sequence 객체를 생성하면 해당 Sequence객체의 반드시 구현해야 하는 메소드는 __len__(), __getitem__() 인데, 이 두개 메소드는 추후에 model.fit(cnd_ds와 같은 Sequence객체 )에서 인자로 입력되면 model이 해당 Sequence객체를 iteration 하면서 배치 사이즈 만큼의 이미지를 가져오고 학습을 반복적으로 수행할때 이용하게 됩니다. 

즉 tensorflow model 객체가 fit()을 호출하여 학습할 때 이 Sequence객체를 iteration하면서 이미지와 타겟값을 가져오는데 이때 __getitem__()을 호출하게 됩니다. 

또한 __len__()은 batch size만큼 가져올 때 반복 횟수등을 계산하기 위해 사용됩니다.

감사합니다.  

 

오광덕님의 프로필 이미지
오광덕
질문자

친절한 설명 감사합니다 ㅠㅠ 강의 잘 듣고 있습니다 !! 

오광덕님의 프로필 이미지
오광덕

작성한 질문수

질문하기