임베딩 벡터 추출
분류층을 제거한 ResNet으로 사진을 벡터로 변환하고, 벡터의 모양과 의미를 확인합니다.
Web에서 개념과 코드 학습운영체제 권한이 필요한 실행은 Local에서 이어집니다.
01
1단계. ResNet 구조 살펴보기
ResNet18 모델의 자식 모듈을 순서대로 출력해 구조를 파악합니다.
- nn.Sequential과 children을 이용해 모델 일부를 떼어낼 수 있습니다.
- 512차원 임베딩의 정규화와 거리 비교를 직접 다룹니다.
- 같은 사진과 다른 사진의 임베딩이 어떻게 다른지 거리로 확인합니다.
직접 해보기마지막 두 레이어의 타입을 정확히 출력하세요.
import torch
import torchvision
from torchvision.models import resnet18, ResNet18_Weights
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
from sklearn.datasets import load_sample_image
weights = ResNet18_Weights.DEFAULT
model = resnet18(weights=weights)
model.eval()
layers = list(model.children())
[type(layer).__name__ for layer in layers]편집기를 준비하고 있습니다.