군인인 저도 굉장히 불편한 점이 여러모로 많네요..ㅠ
도서관이나 사지방도 통제가 되어서 이용하고 싶을 때 이용할 수가 없어요..
그래서 최대한 올 수 있을 때 오고는 있습니다만 답답하네요..!
아무튼! 오늘의 일기를 적어봅시다.
이번에는 실전에서 쓰기 위한 다양한 무기들을 차례로 점검해줄 차례입니다.
이론을 공부하면서 실습해본 것들도 있고, 실습해보지 못한 것들도 있어서 이번 기회에
처음부터 쭉 훑어볼 계획입니다. 우선 실습할 만한 친구들을 정리해보겠습니다.
Original - MLP
2D - CNN / GoogLeNet / ResNet
Series - RNN / LSTM
Generative - GAN / DCGAN / CGAN
Regularization - Dropout / Batchnorm
우선 생각나는 건 이정도? 네요!
공부를 하면서 더 건드려보고 싶은 게 생기면 추가해보겠습니다.
가장 처음에 나오는 MLP는 이전 포스팅들에서 많이 살펴보았기 때문에 생략하고,
CNN부터 시작해보겠습니다.
Cylab diary 2~3에서 다루었던 TF 2.0 (for advanced)에서 CNN을 사용했었습니다.
그걸 기반으로 살펴보도록 하겠습니다.
저번 예시에서는 mnist를 데이터셋으로 사용하였는데, 이번에는 공부 차원이니까 다른 데이터셋을 사용해보도록 하겠습니다. 마침 tf.keras.datasets에서 편하게 데이터를 제공해주니까 그 중에서 골라보았습니다 - CIFAR100으로 해보겠습니다!
CIFAR100은 32x32x3의 사이즈를 가지고 있는 데이터로, 총 100개의 라벨이 있습니다. 각각의 라벨은 돌고래, 차, 남자, 바다, 시계 등등 다양한 데이터를 가지고 있는데요, 이에 관한 자세한 설명을 보고 싶으신 분들을 위해 아래에 링크를 달아놓았습니다.
Link - https://www.cs.toronto.edu/~kriz/cifar.html
대략 눈으로 보자면 이런 데이터입니다!
대충 이런 느낌입니다! 각각 바퀴벌레, 악어, 침대를 나타내는 것 같네요. 이제 이 데이터들을 가지고 CNN을 구성해서 정확도를 체크해 보도록 하겠습니다. 우선 저번에 사용했던 코드를 거의 그대로 가져와서 적당히 바꾸어주었습니다.
저번과 달라진 점은 마지막 출력층을 10개에서 100개로 바꿔준 것 정도겠네요. 저 정도만 되어도 정말 파라미터 수는 어마어마할 겁니다. Convolutional layer에서 FC layer로 넘어올 때 만들어지는 파라미터 수가 엄청 많기 때문에, 코랩에서 돌리는 데 상당히 애먹었네요.
아무튼 결과를 살펴보면, 에폭을 10으로 주고 돌렸는데 training set에서는 35프로, test set에서는 25프로가 나왔습니다. 점차 올라가는 걸 보니 위 모델 정도로도 어느 정도 커버가 가능한 데이터셋인가 보네요. 그래도 너무 느려서 나중에 시간 많을 때 한번 어디까지 돌아가나 돌려보고, 지금은 패스...ㅠ 이젠 하이퍼파라미터 값들을 바꿔보면서 한 번 실험해 보도록 하겠습니다.
그 전에, 방금 위에서 돌린 모델의 파라미터 수를 확인해보면 다음과 같습니다.
파라미터 수가 총 370만개... 확실히 많긴 하네요. 다른 방식을 몇 가지 시도해보고, 결과를 후술하겠습니다. 컴퓨터 돌리는 데 시간도 너무 오래 걸리고, 글도 길어져서 여러 번에 나누어서 쓰도록 하겠습니다. To be continued...
댓글 없음:
댓글 쓰기