더북(TheBook)

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, SoftmaxSigmoid와 같은 활성화 함수는 모델을 정의할 때 지정합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.