파이썬 딥러닝 실무 프로젝트 강좌의 맛보기 강의입니다.
여기까지 저희가 진행된 형태는 CNN 모델을 직접 정의하고요 그 안에 이제 함수 형태로 저희가 뭐까지 만들었냐면 컴파일 형식까지 지정을 해줬어요 그래서 이 함수를 부르는 형식으로 저희가 할 건데 저희가 한번 CNN 모델 학습하는 게 남았죠 모델 학습하는 게 남았는데 이렇게 정의된 모델과 그 다음에 컴파일을 통해서 피팅하는 모델 학습인데요 그리고 만약 이 모델을 학습시켰는데 정답률이 좀 안 좋다 그러면 이미지는 아무래도 이미지 눈으로 고르는 작업 있잖아요 지금 현재 전처리는 그거였으니까 이미지로 다시 좋은 사진을 고르는 거 한 번 더 해주시고 지금까지 했던 과정 한 번 더 해주시면 아무래도 조금 더 아무래도 정확도가 좀 높아질 수가 있어요 그래서 원본 이미지가 좋아야 되니까요 그 작업을 모델 학습을 통해서 정확도로 보고 할 거고요 저희가 지금 이 모델은 그냥 만들지 않고 정해진 에포크 반복하는 횟수 안에서 가장 베스트인 경우 다시 말하면 얼리스토핑을 쓰겠다는 얘기죠 그 다음 베스트 모델을 저희가 정의하기 위해서 모델 체크포인트와 얼리 스타핑이라는 콜백 함수를 사용해서 해보겠습니다. Keras 콜백 함수가 4가지인데 그 중 가장 많이 쓰는 게 이 두 가지거든요. 딥러닝 모델을 저장할 때 저는 모델이라는 여기 보이시죠? 모델이라는 디렉토리 안에 만약 없으면 디렉토리를 만들라는 얘기고요. 디렉토리 안에 모델 이름을 만들 거고 쿠킹.hdf5로 가장 베스트일 때 저장하겠다는 얘기예요. 그게 바로 모델 체크포인트고요. 밸리데이션 로스를 기준으로 할 거란 얘기고요. 그 다음에 세이브 베스트 온리는 True라고 제가 말을 했거든요. 가장 좋을 때 하나만, 마지막 하나만 저장하라는 얘기예요. 너무 많으면 우리가 고르는 것도 좀 헷갈리니까요. 지금 현재는. 얼리 스타핑은 예를 들면 서른 바퀴를 돌아서 서른 번 이 데이터를 반복할 건데 서른 번이 다 돌지 않아도 그 전에 가장 베스트인 경우도 있을 수 있잖아요 그 안에서 예를 들면 열 번째 가장 베스트를 만났다 그러면 앞으로 열 개만 더 기다려서 페이션트 10이죠 열 번만 더 기다려서 이 열 번째부터 성능이 향상되지 않으면 여기서 스탑을 하는 거죠 스무 번을 돌긴 돌지만 가장 여기가 좋았던 시점이기 때문에 그냥 10번째 정확도를 가지고 끝내겠다는 얘기죠 돌기는 20바퀴 돌았죠 10번을 더 기다리라고 했으니까 이렇게 해서 Early Stopping까지 지정하는 옵션까지 써보도록 하겠습니다 그래서 한번 써보도록 하죠 모델 평가와 시각화 모델 평가와 시각화 모델 평가와 시각화 모델 평가와 시각화 모델 평가와 시각화 모델 평가와 시각화 모델 평가와 시각화 함수나 모듈도 이렇게 임포트로 불러오시면 됩니다 그래서 이걸 불러다 쓸 거고요 그래서 여기다 이제 우리가 아까 썼던 그 갭 모델을 써야 되거든요 함수를 쓸 때인데 이 쉐입을 여기서 정해주는 거에요 그래서 32 곱하기 32 곱하기 3으로 저희는 하기로 했기 때문에 이걸 정해줄 거고요 임베딩 쉐입 그 다음에 3개의 요리를 저희가 구분하는 거니까 3이 되겠죠 그래서 여기는 어떻게 된다고요 여기가 32, 32, 32, 우리가 이제 데이터 전처리를 다 해놓은 게 요거니까 요거로 한 거고요 얘는 3개 요리 이미지가 3개 들어갈 거야 라고 이렇게 모델에 맞춰주는 거죠 그래서 모델을 만들었어요 이렇게 그러면 이 모델은 아까 우리 했던 요거 있죠 여기 들어가서 해당되는 코드를 다 이렇게 만들 거예요 이제 만들어서 모델을 하나 만들고 모델이라는 이름을 만들고 모델의 이름을 넣어줄 거예요 그래서 모델 학습을 이제 시킬 건데 드디어 모델이 만들어졌기 때문에 fit이고요 아까 우리가 잘 준비되었던 훈련 데이터의 데이터와 그 다음에 정답 넣어주죠 배치 사이즈 조금 쪼갤게요 크기가 좀 크기 때문에 30번 정도 돌고요 도는 동안 저한테 보고를 하라는 얘기야 verbose 1은 0은 보고하지 말고 끝에 결과만 그냥 보여주는 거라고 보시면 좋을 것 같고요. 밸리데이션 데이터는 검증 데이터 다 쪼개놨으니까 검증 데이터하고 답하고 같이 넣어줬습니다. 그리고 콜백 함수는 두 개 썼기 때문에 두 개를 핏에서 언급을 시켜줘야 돼요. 핏에 들어가야 돼요. 미리 지정하고 핏에 들어가시면 됩니다. 드디어 학습입니다. 이제 학습을 시켜볼게요. 정확도가 좀 잘 나왔으면 좋겠는데요. 실행을 시켜보도록 하겠습니다. 그러면 이렇게 실행이 되고요. 아까 Early Stopping을 넣었기 때문에 모델 평가와 시각화 모델 평가와 시각화 모델 평가와 시각화 모델 평가와 시각화 딱 선명해요 사실은 그래서 90 몇 퍼센트 정도 나왔지만 우리 데이터 이미지는 그렇게 환상적으로 정확도가 나오는 건 없어요 그럼 우린 뭐 해야 되냐? 데이터 전처리를 정말 열심히 해야 돼요 이미지 전처리가 모델이 중요한 게 아니고 모델이 CNN 모델 자체가 너무 좋아요 이게 너무 좋은데 우리 데이터가 엉망인 거예요 지금 데이터가 대충 그냥 눈으로 고른 거잖아요 지금 아무 프로그램도 안 쓰고 그래서 그런 작업들이 사실은 이미지는 되게 중요합니다 이미지는 그래서 이미지 전처리 작업들을 많은 모듈들을 이용해서 저희가 좀 해내야 되는 부분이 좀 있어요 힌트 삼아 나중에 좀 그런 것들을 조금 제가 다른 예제를 통해서 조금 제가 했던 프로젝트를 통해서 좀 설명을 좀 드려볼게요 어쨌든 좀 서운하게 나왔어요 그러면 우리 평가를 이제 이제부터 해보도록 하겠습니다 모델 평가는 Evaluate를 하는 거죠 모델 평가를 해보겠습니다 모델 평가를 해보면 모델 평가는 Evaluate를 하는 거기 때문에 Evaluate를 시킵니다 테스트 데이터 우리가 만들어 놓은 거 있죠 테스트 데이터가 만들어 놓은 거 가지고 한번 해보겠습니다 정답률을 첫 번째 정답률을 보니까 55% 테스트 데이터 아까보다는 낮죠 validation보다 낮지만 그래도 썩 뭐 우리 그 시각화 시각화 시각화 시각화 이렇게 에러를 잡을 때는요 18번째 줄이라고 나오죠 이 18번 줄에 가셔서 고치시면 되는데 제가 요거를 한번 보여드려 볼게요 이게 뭐냐면 여기 라인 번호가 있죠 우리 코드가 지금은 길기 때문에 라인 번호를 붙여 주시는 게 좋은데 혹시 처음부터 안 보이신 분은 메뉴 중에 뷰가 있어요 뷰에 토글에 보시면 라인 넘버가 있어요 그래서 라인 넘버를 누르면 안 보였다가 보여졌다 이러거든요 이게 라인 넘버를 일단 살려 주시고요 살려줬을 때 라인 번호가 18번째 줄에서 에러가 났다고 했어요. 보시면 뭔가 단어가 틀린 것 같은데 지금 Accuracy라는 키워드는 난 없어 라고 돼 있는 거죠. 그래서 앞 페이스토어를 봤더니 Accuracy를 예전에 썼는데 지금 버전은 안 쓰나 봐요. 그래서 ACC 있죠. ACC를 쓰셔야 될 것 같아요. Accuracy는 18번째 줄에 가서 이렇게 우리 코드를 본인들에 맞게 조금 고치셔야 돼요 밸리데이션 어큐러시도 볼 건데 밸리데이션도 어큐러시 안 쓰고 ACC까지만 이렇게 단어를 줄여 쓰네요 그래서 이렇게 한번 다시 고쳐서 실행해 보도록 하겠습니다 그러면 나와 있고요 보시면 이게 로스는 떨어지는 게 좋죠 그럭저럭 뭐 그래프가 55%가 전체 테스트에 대한 바로 평가가 나오긴 했지만 훈련 데이터는 이게 로스가 잘 떨어지고 있고요 처음부터 막 떨어지진 않았지만 그 다음에 밸리데이션도 그럭저럭 잘 따라다니고 있죠 간극 차이는 좀 있지만 그 다음에 어큐러시도 마찬가지로 이렇게 올라가고 있는데 이게 스무스하게 올라가는 게 되게 좋아요 학습이 잘 된 건데 이건 학습을 조금 더 에폭을 조금 더 주면 더 공부가 잘 되겠다는 생각이 조금 들어요 시간 관계상 저희가 제가 30번 정도만 돌렸지만 여러분 시간이 있으시면 조금 더 돌려보는 것도 좋겠다는 생각이 좀 듭니다 데이터를 개선할 여지가 조금 있기 때문에 제가 이렇게 말씀을 드린 거고 개선할지 안 할지를 그래프를 보고 저희가 판단을 좀 해 본다 라고 보시면 되겠습니다
