한 레이어의 가중치를 여러 경로에서 쓴다
공유 레이어는 같은 가중치를 서로 다른 입력에 적용해. 레이어 인스턴스를 한 번 만든 뒤 여러 텐서에 호출하면 모든 경로가 한 벌의 가중치를 사용하고, 각 호출에서 나온 기울기도 그 가중치에 모여. 첫 코드 블록의 Siamese 신경망에서는 shared_embedding 하나가 두 입력을 같은 방식으로 인코딩해 공통 임베딩 공간을 학습해. 입력마다 별도 인코더를 만들면 둘의 거리를 비교할 공통 기준이 사라져.
모델도 다른 모델 안에서 레이어처럼 쓸 수 있어
모든 Keras Model은 다른 모델 안에서 레이어처럼 호출할 수 있어(두 번째 코드 블록). 전이 학습도 이 원리를 사용해. 사전 학습된 백본은 입력에 호출하는 하나의 Model이고 그 위에 새 헤드를 붙이면 돼. 중첩된 모델은 자신의 가중치를 유지하므로 사전 학습 가중치를 불러온 뒤 backbone.trainable = False로 고정할 수 있어. 인코더와 디코더를 합쳐 오토인코더를 만드는 것도 같은 방식이야. 레이어 공유와 서브그래프 재사용은 규모만 다를 뿐 같은 원리야.