전공관련/Deep Learning
[Pytorch] Sequential 모듈 내 레이어에 접근하자
매직블럭
2023. 9. 6. 15:51
일반적으로 sequential 모듈을 정의하면서 레이어 이름을 정의할수도 있지만
별다른 레이어 명칭을 정하지 않고 sequential 안에 넣은 경우는 해당 레이어에 어떻게 접근해야 하나.. 싶었다.
named_children() 으로 호출 해 봐도
Sequential(
(0): Linear(~~~~~~)
(1): BatchNorm1d(~~~~~~)
(2): Linear(~~~~~~)
(3): BatchNorm1d(~~~~~~)
)
와 같이 각 레이어들이 0번부터 차례대로 인덱스가 붙어있는것을 확인할 수 있다.
그래서.. 저게 순서 인덱스라고.. 생각했으나..
단순하게 저게 임의로 할당되는 레이어 이름이었다..
그래서 해당 레이어에 접근하려면 일반적인 레이어 접근과 동일하게 _modules 메소드를 이용하면 된다.
# network는 아래 구조만 가지고 있다고 가정하고..
Sequential(
(0): Linear(~~~~~~)
(1): BatchNorm1d(~~~~~~)
(2): Linear(~~~~~~)
(3): BatchNorm1d(~~~~~~)
)
# 첫번째 linear 레이어에 접근하려면
model.sequential._modules['0']
단, 이때 0번부터 시작되는 값은 숫자가 아닌 레이어 이름이니 str 타입이라는 점..