loader 는 만나본 적 없는 클래스를 import 못 해
Dense 같은 built-in layer 는 깔끔하게 직렬화돼 — load_model 이 그 클래스를 이미 알거든, Keras 에 같이 딸려오니까. 근데 네가 만든 subclass layer 는 그 특혜가 없어. config 엔 layer 이름이 string 으로 저장되는데, loader 가 그걸 다시 읽을 때 그 string 을 네 Python 클래스로 연결할 지도가 없어. 그래서 나오는 게 그 유명한 Unknown layer 에러야.
두 조각이 고리를 닫아
등록 + get_config 둘이 같이 있어야 custom layer 가 round-trip 돼. @register_keras_serializable 데코레이터는 네 클래스를 이름 → 클래스 registry 에 넣어서 loader 가 string 을 올바른 Python 객체로 풀 수 있게 해. get_config 가 나머지 절반: __init__ 인자 (여기선 units) 를 평범한 dict 으로 돌려줘서, loader 가 만들어졌던 그 설정 그대로 layer 를 재구성해. super().get_config() 를 먼저 불러서 base layer 의 키를 상속한 다음, 네 것을 추가해.
package namespace
package= 인자는 등록 이름에 prefix 를 붙여 (예: my_package>MyCustomLayer). 두 프로젝트가 둘 다 Attention 이라는 layer 를 정의할 때 충돌을 막아줘. 안정적인 package string 하나 골라서 일관되게 유지해 — 저장된 파일의 정체성 일부가 되니까.