Tensorflow에서 Value Error: Unknown Layer: Functional 문제

이미지 출처 - https://bugloss-chestnut.tistory.com/entry/Tensorflow-keras-h5-pb-tflite-%EB%B3%80%ED%99%98-%EC%98%A4%EB%A5%98python

문제 원인 및 발생 경위

Tensorflow 로 구현된 사전학습 모델을 사용하게 되면 심심치 않게 해당 오류를 발견할 수 있다. 이것은 로컬 혹은 컨테이너 환경에서의 Tensorflow 버전이 사전학습 모델의 Tensorflow 버전과 일치하지 않아서 생기는 문제이다.

왜냐하면 Tensorflow 2.3 버전에서 model을 저장할 때의 json 구조가 달라졌기 때문이다.

기존의 (Tensorflow 2.2 버전 이전) 모델 저장 구조

1
2
{"class_name": "Model", "config": {"name": "model_1", "layers": [{"name": "input_1", "class_name": "InputLayer" ...

변경 이후 (Tensorflow 2.3 버전 이후) 모델 저장 구조

1
2
{"class_name": "Functional", "config": {"name": "functional_1", "layers": [{"class_name": "InputLayer" ...

- 참고 smecsm.tistory.com/180

필자는 Tensorflow 2.3 버전이 Release 되기 전에 학습되어 공개된 사전학습 모델들을 사용하거나 새로 학습을 시킨 모델을 load하려는 상황에서 Value Error: Unknown Layer: Functional 에러를 자주 보았는데, 이것을 해결하기 위해 상당히 많은 시행착오를 겪었다.

자세히 보기