flow from directory
폴더별로 레이블 담겨있는 것을 바로 불러오는 방법
레이블을 지정해주지 않아도 알아서 레이블을 찾음
#레이블 구분되어 있는 폴더 경로지정
train_dir = 'dataset/mnist_png/training/'
test_dir = 'dataset/mnist_png/testing/'
#hyperparameter tunning
num_epochs = 10
batch_size = 32
learning_rate = 0.001
dropout_rate = 0.5
input_shape = (28, 28, 1)
num_classes = 10
#process
train_datagen = ImageDataGenerator(
rescale=1./255,
width_shift_range=0.3,
zoom_range=0.2,
horizontal_flip=True
)
#test에서는 rescale만
test_datagen = ImageDataGenerator(
rescale=1./255,
)
#generator는 train,test 동일하게
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=input_shape[:2],
batch_size = batch_size,
color_mode = 'grayscale',
class_mode = 'categorical'
)
>>> Found 60000 images belonging to 10 classes. #6만장이고 10개의 레이블이 있다는 것을 확인
#클래스 수가 더 많은경우 classes를 추가
validation_generator = test_datagen.flow_from_directory(
test_dir,
target_size=input_shape[:2],
batch_size = batch_size,
color_mode = 'grayscale',
class_mode = 'categorical'
)
>>> Found 10000 images belonging to 10 classes.#1만장이고 10개의 레이블이 있다는 것을 확인
model

training
generator를 한것을 넣어주기 위해 fit_generator 사용, 전달인자는 generator
model.fit_generator(
train_generator,
steps_per_epoch =len(train_generator), #1pecho당 몇개의 batch를 사용할 것인지
epochs= num_epochs,
validation_data= validation_generator,
validation_steps = len(validation_generator)
)
flow_from dataFrame
cifar같은 경우 폴더별로 분류되어 있지 않아서 위 방법은 사용불가
excel, csv에 담아서 학습하는 방법
우선 pandas만 사용해서 데이터만 불러오기
train_paths = glob('dataset/cifar/train/*.png')
test_paths = glob('dataset/cifar/test/*.png')
len(train_paths),len(test_paths)
>>> (50000, 10000)
replace/split/join/strip
class명을 가져오기 위한 방법
path.replace('cifar','') #대체
>>> 'dataset//train\\0_frog.png'
path.split('/') #분할
>>>['dataset', 'cifar', 'train\\0_frog.png']
'.'.join(['a','b','c']) #병합
>>> 'a.b.c' #공백제거
' a '.strip()
>>> 'a'
os
os.path.basename(path) #파일명만
>>> '0_frog.png'
os.path.dirname(path) #폴더명만
>>> 'dataset/cifar/train'
함수화
def get_class_name(path):
fname = os.path.basename(path)
class_name = fname.replace('.png','').split('_')[-1]
return class_name
get_class_name(path)
>>> 'frog'
class수 확인
class_names = []
for path in train_paths:
cls_name = get_class_name(path)
class_names.append(cls_name)
#리스트 컴프리헨션
class_names = [get_class_name(path) for path in train_paths]
len(class_names)
>>> 50000
np.unique(class_names)
>>> array(['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog',
'horse', 'ship', 'truck'], dtype='<U10')
#시각화
uniques =np.unique(class_names,return_counts = True)
plt.bar(uniques[0],uniques[1])
plt.xticks(rotation = 45)

'책&강의 학습 > 올인원 패키지 :딥러닝&인공지능' 카테고리의 다른 글
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 13회차 미션 (0) | 2020.07.11 |
|---|---|
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 12회차 미션 (0) | 2020.07.10 |
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 10회차 미션 (0) | 2020.07.08 |
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 9회차 미션 (0) | 2020.07.07 |
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 8회차 미션 (0) | 2020.07.06 |
댓글