2장에서 만들었던 간단한 Dense 층인 NavieDense 클래스의 경우 가중치를 만들기 위해 각 층의 입력 크기를 생성자에게 명시적으로 전달했습니다. 이는 이상적이지 않습니다. 예를 들어 층이 이전 층의 크기를 알도록 하기 위해 다음과 같은 모델이 만들어지기 때문입니다.
784, =32, ="relu"), NaiveDense( =32, =64, ="relu"), NaiveDense( =64, =32, ="relu"), NaiveDense( =32, =10, ="softmax") ])= NaiveSequential([ NaiveDense( =
출력을 만드는 층의 규칙이 복잡하면 문제는 더 심각해집니다. 예를 들어 층이 (batch, input_size * 2 if input_size % 2 == 0 else input_size * 3) 크기의 출력을 반환한다면 어떻게 될까요?
크기를 자동으로 추론할 수 있는 케라스 층으로 NavieDense 클래스를 다시 구현한다면 이전에 보았던 build()와 call() 메서드가 있는 SimpleDense 층(코드 3-22)과 같을 것입니다.