세 메서드, 더 적게는 안 됨
내장 layer로 안 되는 architecture는 keras.layers.Layer 상속. 구현할 세 메서드:
__init__— config 저장 (units, activation 등). 여기서 weight 만들지 마.build(input_shape)— weight 여기서 생성. 첫 forward에서 input shape 확정될 때 한 번 호출.self.add_weight(...)써 — Keras 3에선 rawtf.Variable절대 금지.call(inputs)— forward 계산.
저장/불러오기 위해 get_config()도 구현 — from_config()가 layer 재구성에 쓸 dict 반환.
Keras 3 breaking change:
self.add_weight() 써, tf.Variable 안 됨. Keras 3의 variable tracking이 raw tf.Variable은 더 이상 자동 추적 안 해. layer 안에서 그거 쓰면 optimizer한테 weight가 안 보여 — model이 아무것도 학습 안 하는데 이유 모르고 헤매게 돼.