Convolutional Neural Networks in TensorFlow week1

han811·2020년 11월 12일
0
post-thumbnail

Exploring a Larger Dataset

kaggle Dogs vs Cats Dataset - https://www.kaggle.com/c/dogs-vs-cats

[주요 코드 리뷰]

from tensorflow.keras.preprocessing.image import ImageDataGenerator

base_dir = '/tmp/cats_and_dogs_filtered'

train_dir = os.path.join(base_dir, 'train')

train_datagen = ImageDataGenerator( rescale = 1.0/255. )

train_generator = train_datagen.flow_from_directory(train_dir, batch_size=20, class_mode='binary', target_size=(150, 150))

history = model.fit(train_generator,
                              validation_data=validation_generator,
                              steps_per_epoch=100,
                              epochs=15,
                              validation_steps=50,
                              verbose=2)

ImageDataGenerator는 keras의 preprocessing module에서 이미지 데이터 전처리로 많이 하는 작업들이 미리 함수로 구현되어있는 클래스이다.
이를 통해 이미지 전처리 방법들은 인자로 줄 수 있다.

위의 flow_from_directory는 첫 인자로 파일 경로를 받으며 해당 경로 안에 각 클래스 명으로 된 폴더들이 존재하고 해당 폴더안에 각 클래스의 train data가 위치한 형태로 폴더가 구성되어있어야 한다.
batch_size는 generator가 데이터를 읽어오는 배치 단위가 되며 class_mode는 'binary'와 'categorical'의 옵션이 있고 target_size는 해당 픽셀 차원으로 이미지를 선형 보간하는 것으로 보인다.
이를 통해 대용량 데이터를 한번에 읽어오는게 아닌 generator를 통해 원하는 배치만큼 읽어올 수 있게된다.

fit 혹은 fit_generator의 옵션에서는 steps_per_epoch의 경우 한 에폭당 이루어지는 step수를 의미한다.
즉 steps_per_epoch이 100이면 1epoch에서 1번에 20 batch_size를 학습하는 step이 100번 이루어진다고 생각하면 된다.
validation_step도 마찮가지 이다.

from   tensorflow.keras.preprocessing.image import img_to_array, load_img

visualization_model = tf.keras.models.Model(inputs = model.input, outputs = successive_outputs)

우선 load_img같은 경우 이미지 파일의 경로를 인자로 주면 tensor로 해당 이미지를 읽어온다.
img_to_array에는 tensor로 되어있는 이미지 데이터를 넣어주면 numpy로 바꾸어 준다

keras model은 layer와 input을 attribute로 가지며 model.input과 같이 했을 때 해당 model의 input 차원의 keras input을 가져오게 된다.
layer의 경우 output을 attribute로 가진다.

keras model의 경우 fit을 통해 학습이 이루어지면 각 epoch의 loss와 metrics 값들이 딕셔너리 형태로 검색이 가능하다.

대용량 데이터를 load할때 되게 유용하며 상속받아서 method를 만들거나 변형해서 사용하면 되게 유용하다.

tf.keras.preprocessing.image docu
https://www.tensorflow.org/api_docs/python/tf/keras/preprocessing/image

my github repo - https://github.com/han811/tensorflow

profile
han811

0개의 댓글