Note ≡ | model.modules( ) & model.children( )
model.modules()는 모델의 네트워크에 대한 모든 노드를 반환하며, model.children()은 같은 수준(level)의 하위 노드를 반환합니다.
▲ 그림 2-10 model.modules( ) & model.children( )
함수로 신경망을 정의하는 방법
Sequential을 이용하는 것과 동일하지만, 함수로 선언할 경우 변수에 저장해 놓은 계층들을 재사용할 수 있는 장점이 있습니다. 하지만 모델이 복잡해지는 단점도 있습니다. 참고로 복잡한 모델의 경우에는 함수를 이용하는 것보다는 nn.Module()을 상속받아 사용하는 것이 편리합니다.
def MLP(in_features=1, hidden_features=20, out_features=1): hidden = nn.Linear(in_features=in_features, out_features=hidden_features, bias=True) activation = nn.ReLU() output = nn.Linear(in_features=hidden_features, out_features=out_features, bias=True) net = nn.Sequential(hidden, activation, output) return net
ReLU, Softmax 및 Sigmoid와 같은 활성화 함수는 모델을 정의할 때 지정합니다.