01 이미지의 특징
예시 상황 사진에서 경계나 무늬를 찾으려면, 픽셀 하나의 값 외에 무엇을 함께 살펴봐야 할까요?
설명
- 경계·무늬 등은 인접 픽셀 간 관계로 나타남
- Convolution: 작은 영역에 Filter를 적용하여 위치별 특징 계산
예시 상황 사진에서 경계나 무늬를 찾으려면, 픽셀 하나의 값 외에 무엇을 함께 살펴봐야 할까요?
예시 상황 같은 무늬가 사진의 여러 위치에 나타납니다. 한곳에서 찾은 특징을 다른 위치에서도 찾도록 만들 수 있을까요?
입력 shape는 (N,1,28,28)입니다. 아래 순서의 CNN을 구현하세요.
Conv2d(1,32,3,padding=1) → ReLU() → MaxPool2d(2)Conv2d(32,64,3,padding=1) → ReLU() → MaxPool2d(2)Conv2d(64,128,3,padding=1) → ReLU() → MaxPool2d(2,padding=1)Flatten(start_dim=1) → Linear(2048,625) → ReLU()Dropout() → Linear(625,10)각 Layer의 이름·예상 출력 shape·실제 출력 shape를 한 표에 기록하세요. 실행 전에 예상 열을 적고, 실행 결과와 다른 행이 있으면 어느 연산에서 크기가 달라졌는지 설명하세요.
(1,28,28)로 유지하고 model.eval() 상태에서 실행합니다.sum(p.numel() for p in model.parameters())로 구하며, model은 본인이 만든 CNN입니다.(N,10)인지, Parameter 수는 세 행에서 같은지 대조하세요. Layer별 학습 가능한 Parameter 유무도 구분해 적으세요.코드, 실제 Output·그래프, 직접 작성한 해석을 포함하세요. 제출은 KLAS를 이용하며 기한은 학기 일정과 최신 공지를 확인합니다.
파일명: 이름_학번_9주차.ipynb.
실행 환경을 다시 시작하고 전체 코드를 위에서부터 실행한 뒤 저장하세요.
입력 영상 크기와 Linear 입력 크기가 맞지 않는 경우
small 모델을 실행한 뒤, 노트북 맨 아래에 Code Cell을 추가하고 다음 코드를 실행하세요.for side in [32, 28]:
debug_image = torch.randn(1, 1, side, side)
with torch.no_grad():
debug_features = small[:-1](debug_image)
print("Input:", debug_image.shape,
"Flatten:", debug_features.shape,
"Linear in_features:", small[-1].in_features)
try:
print("Output:", small(debug_image).shape)
except (RuntimeError, ValueError) as error:
print(type(error).__name__, str(error))