일반적으로 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 타입이라는 점..
'전공관련 > Deep Learning' 카테고리의 다른 글
[Pytorch] 학습 재현을 위해 seed를 고정하자 (0) | 2024.04.29 |
---|---|
[Pytorch] No audio I/O backend is available. 에러를 해결하자. (0) | 2023.08.02 |
[Pytorch] DDP 환경에서 load_state_dict 사용시 OOM 발생 상황을 해결하자 (0) | 2023.06.08 |
[Pytorch] Boolean value of Tensor with more than one value is ambiguous 에러를 해결하자. (0) | 2023.06.07 |
[MXNet] 데이터 리스트를 만들고 rec 파일로 만들어 보자 (0) | 2022.04.01 |