(
진행했던 폐렴 진단 프로젝트 링크 :
https://github.com/YOOHYOJEONG/AIFFEL_LMS_project/blob/master/ex11/ex11_Pneumonia_Diagnosis.ipynb
)
위 링크의 폐렴 진단 프로젝트를 진행하면서 모델 학습 결과로
epoch를 진행하면서 나오는 train 데이터셋과 validation 데이터셋의 loss, accuracy, precision, recall 결과를 함께 출력하여 그래프로 시각화 하고자 했다.
하지만 모델 학습을 하는 부분에서 WARNING:tensorflow:Your input ran out of data; interrupting training. 오류가 출력되면서 epoch1에서만 validation 데이터셋에 대한 결과가 생성 되었고 epoch2부터는 생성이 되지 않았다.
때문에 그래프로 나타내었을 때도 validation에 대한 그래프가 그려지지 않았다.
train 데이터셋과 test 데이터셋을 생성할 때 아래와 같이 ImageDataGenerator로 설정하였다.
이곳 저곳 찾아보니 WARNING:tensorflow:Your input ran out of data; interrupting training. 경고는 가지고 있는 데이터 수에 비해 너무 많은 step을 설정해서 발생하는 것 같았다.
steps_per_epoch의 값은 (Trainging size) / (batch_size)로 설정 해 주어야 하지만 model.fit에서 steps_per_epoch를 따로 설정하지 않으면 자동으로 사전에 설정해 둔 batch_size가 적용되어 (Trainging size) / (batch_size)로 설정된다.
하지만 나는 (Trainging size) / (batch_size)로 model.fit에서 설정 해 주었으며, 검색해보니 ImageDataGenerator가 augmentation을 해주지만 데이터의 수를 늘리지는 않는다고 한다.
따라서 문제가 될 것이 없는데 에러가 나오니 답답했다.
그러다 keras 버전 문제 때문이라는 글을 봤다.
keras는 2.3.1, tensorflow는 2.2.0에서 문제없이 작동한다는 것을 보고 최신 버전이었던 keras와 tensorflow를 다운그레이드 해주었다.
이미 설치되어 있는 두 라이브러리를 삭제하고
$ pip uninstall keras
$ pip install tensorflow
해당 버전으로 재 설치를 해 줬다.
$ pip install keras==2.3.1
$ pip install tensorflow==2.2.0
이때 == 앞 뒤로 띄어쓰기는 하지 않아야 제대로 설치가 된다!!
재설치 후 버전을 확인하고 다시 모델 학습을 시켰더니
에러문구는 여전히 뜨지만(대체 왜 뜨는걸까...)
validation 데이터셋의 loss, accuracy, precision, recall 결과는 제대로 생성되어 그래프도 아래와 같이 원하는대로 그려졌다.