Part3-8 flow_from_dataframe
DataFrame으로 만들고 경로 지정
데이터프레임생성
#Dataframe생성 예시
data_ex = {'a' : [1,2,3], 'b':[10,20,30],'c': [100,200,300]}
df_ex = pd.DataFrame(data_ex)
df_ex
>>>
a b c
0 1 10 100
1 2 20 200
2 3 30 300
#DataFrame 생성(train)
data={'name': train_paths, 'class': class_names}
train_df = pd.DataFrame(data)
#DataFrame 생성(test)
test_names = [get_class_name(path) for path in test_paths]
data={'name': test_paths, 'class': test_names}
test_df = pd.DataFrame(data)
출력결과

데이터프레임저장
train_csv_path = 'train_dataset.csv'
test_csv_path = 'test_dataset.csv'
train_df.to_csv(train_csv_path,index=False)
test_df.to_csv(test_csv_path,index=False)
index=False 하는 이유

Part3-9 DataFrame으로 학습시키기
csv파일을 불러와서 DataFrame으로 학습 진행
hyperparameter tunning은 이전과 동일하되
input_shape = (32,32,3) 으로 변경
num_epochs = 10
batch_size = 32
learning_rate = 0.001
dropout_rate = 0.5
input_shape = (32,32,3)
num_classes = 10
Preprocessing
#csv load
train_df = pd.read_csv('train_dataset.csv')
test_df = pd.read_csv('test_dataset.csv')
#generator 생성
train_datagen = ImageDataGenerator(
rescale=1./255,
width_shift_range=0.3,
zoom_range=0.2,
horizontal_flip=True
)
test_datagen = ImageDataGenerator(
rescale=1./255,
)
# x_col은 filename, y_col은 class로 생성했다면 따로 지정할 필요 없음
train_generator = train_datagen.flow_from_dataframe(
train_df,
x_col = 'name', #input
y_col = 'class', #label
target_size = input_shape[:2],
batch_size = batch_size
)
test_generator = test_datagen.flow_from_dataframe(
test_df,
x_col = 'name', #input
y_col = 'class', #label
target_size = input_shape[:2],
batch_size = batch_size
)
각각 5만, 1만개 데이터에 10개의 클래스가 있는것을 확인

model은 이전과 동일한 모델 사용
inputs = layers.Input(input_shape)
net = layers.Conv2D(32, (3, 3), padding='SAME')(inputs)
net = layers.Activation('relu')(net)
net = layers.Conv2D(32, (3, 3), padding='SAME')(net)
net = layers.Activation('relu')(net)
net = layers.MaxPooling2D(pool_size=(2, 2))(net)
net = layers.Dropout(dropout_rate)(net)
net = layers.Conv2D(64, (3, 3), padding='SAME')(net)
net = layers.Activation('relu')(net)
net = layers.Conv2D(64, (3, 3), padding='SAME')(net)
net = layers.Activation('relu')(net)
net = layers.MaxPooling2D(pool_size=(2, 2))(net)
net = layers.Dropout(dropout_rate)(net)
net = layers.Flatten()(net)
net = layers.Dense(512)(net)
net = layers.Activation('relu')(net)
net = layers.Dropout(dropout_rate)(net)
net = layers.Dense(num_classes)(net)
net = layers.Activation('softmax')(net)
model = tf.keras.Model(inputs=inputs, outputs=net, name='Basic_CNN')
train
다양한 시도를 통해 학습해볼 필요가 있음.
mnist보다 속도는 느린편
model.fit_generator(
train_generator,
steps_per_epoch=len(train_generator),
epochs=num_epochs,
validation_data=test_generator,
validation_steps=len(test_generator)
)
'책&강의 학습 > 올인원 패키지 :딥러닝&인공지능' 카테고리의 다른 글
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 14회차 미션 (0) | 2020.07.12 |
|---|---|
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 13회차 미션 (0) | 2020.07.11 |
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 11회차 미션 (0) | 2020.07.09 |
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 10회차 미션 (0) | 2020.07.08 |
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 9회차 미션 (0) | 2020.07.07 |
댓글