근 2주 동안 인공지능 공부를 다시 잡고 확장자에 대해서 조금 더 알게 됬다.
(이전에 처음 배웠을 땐, 스쳐지나가듯 넘겼지만)
TensorFlow 에서 사용하는 모델 저장 방식은 크게 두 가지로 나눌 수 있다.
HDF5 포맷( .h5 확장자)
- 가중치, 학습 설정이 된 keras 모델을 하나의 파일에 저장한 방식
-하나의 파일로 모델을 저장하여 간편하나, TensorFlow 2.* 의 확장 기능(서브클래싱 모델 등)을 충분히 지원하지 못함
디렉토리 포맷(saved_model.pb)
- TensorFlow의 기본 저장 형식
- 모델의 아키텍처, 가중치, 메타데이터 등 디렉토리 내부에 저장하는 방식
- TensorFlow 의 확장 기능을 완벽하게 지원하나, 단일 구조가 아니므로 파일 구조가 복잡해질 수 있음
※실습 오류 내역
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 2024-09-26 09:08:07.198470: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found 2024-09-26 09:08:07.198694: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine. 2024-09-26 09:08:08.993443: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'nvcuda.dll'; dlerror: nvcuda.dll not found 2024-09-26 09:08:08.993633: E tensorflow/stream_executor/cuda/cuda_driver.cc:351] failed call to cuInit: UNKNOWN ERROR (303) 2024-09-26 09:08:08.997087: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:169] retrieving CUDA diagnostic information for host: LAPTOP-GOU2ATVV 2024-09-26 09:08:08.997310: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:176] hostname: LAPTOP-GOU2ATVV 2024-09-26 09:08:08.997788: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 Traceback (most recent call last): File "D:\chatbot\chatbot_test\loadmodel.py", line 35, in <module> model = load_model('./cnn_model.h5', custom_objects=custom_objects) File "D:\anaconda3\envs\chatbot_test\lib\site-packages\tensorflow_core\python\keras\saving\save.py", line 146, in load_model return hdf5_format.load_model_from_hdf5(filepath, custom_objects, compile) File "D:\anaconda3\envs\chatbot_test\lib\site-packages\tensorflow_core\python\keras\saving\hdf5_format.py", line 166, in load_model_from_hdf5 model_config = json.loads(model_config.decode('utf-8')) AttributeError: 'str' object has no attribute 'decode' | cs |
- HDF5 형식의 모델의 저장, 로드 중 발생하는 오류
- TensorFlow 2.* 버전과 python3 에서 문자열 처리 방식의 변경으로 발생
해결 방안
1. TensorFlow 버전 업데이트 및 재설치(h5py 라이브러리 업데이트 포함)
1 2 3 | pip install --upgrade tensorflow pip install --upgrade h5py | cs |
2. 모델의 재작성
→ 작성 모델을 HDF5 이 아닌 디렉토리 포맷으로 재작성
1 2 3 4 | #h5 확장자 관련, utf 파일을 읽어올 수 없는 오류로 #디렉터리 포맷으로 저장 #model.save('cnn_model.h5') model.save('cnn_model') | cs |
댓글
댓글 쓰기