공유 layer: weight 한 벌, 호출 여러 곳
공유 layer 는 같은 weight 를 다른 입력에 적용해. lesson 02 의 callable-layer 발상에서 공짜로 따라오는 거야 — layer 한 번 만들어 인스턴스 들고 여러 tensor 에 호출하면, 매 호출이 같은 weight 재사용하고 모든 호출 지점의 gradient 가 그 한 벌 weight 로 누적돼. 첫 코드 블록이 이걸로 siamese network 를 짜: shared_embedding 하나가 두 입력을 모두 encoding 하니까 model 이 '비슷함'을 거리로 잴 수 있는 단일 embedding space 를 학습해. 이 weight tying 이 핵심이야 — 입력마다 encoder 가 따로면 비교할 공유 space 자체가 없어.
중첩 model: model 이 곧 layer
어떤 Keras Model 이든 다른 model 안에서 layer 처럼 호출 가능 (둘째 코드 블록). 이건 편의 이상이야 — *transfer learning* 의 메커니즘 자체야. pretrained backbone 은 그냥 네 입력에 호출하는 Model 이고, 그 위에 새 head 붙이면 끝. 중첩 model 이 자기 weight 를 들고 다니니까 pretrained weight 로드하고 backbone.trainable = False 로 freeze 하는 게 기대대로 동작해. encoder/decoder 짝이 autoencoder 로 합쳐지는 것도 같은 중첩이야. '서브그래프 통째 재사용'이랑 'layer 한 개 재사용'을 스케일만 다른 같은 동작으로 봐.