부캠 TIL 0819
질문
- BCEWithLogitsLoss랑 BCEloss랑 뭐가 다른거지 강의에서는 전자가 시그모이드를 뒤에 달아준다는데 원래도 자동으로 달아주지 않나..?
super(Add, self).__init__()
super().__init__()- 위의 두가지의 차이점은 전자는 명시된 클래스의 부모클래스까지 돌고 온다는 것. 명시해주지 않는다면 모든 부모클래스를 돌고 온다는 것이다. 참고
알게된 것
torchvision.transforms.Grayscale(num_output_channels=3)
# grayscale의 1채널 영상을 3채널로 동일한 값으로 확장함PYTORCH
Transfer learning
model.save
pytorch 모델을 저장하는 방법은 두가지가 있다.
weight만 저장
- 저장
toch.save(model.state_dict(), os.path.join(MODEL_PATH, 'model.pt'))- 로딩
new_model = model() # 모델정의먼저하고
new_model.load_state_dict(os.path.join(MODEL_PATH, 'model.pt') # weight로드정의한 모델과 weight의 아키텍처형태가 같아야된다!!
모델, weight 저장
- 저장
torch.save(model, os.path.join(MODEL_PATH, 'model.pt'))- 로딩
new_model = torch.load(os.path.join(MODEL_PATH, 'model.pt'))checkpoints
# 현재 모델의 epoch, weight, optimizer, loss 저장
torch.save({'epoch': e,
            'model_state_dict': model.state_dict(),
            'optimizer_state_dict': optimizer.state_dict(),
            'loss': epoch_loss,
            },
            f"saved/checkpoint_model_{e}_{epoch_loss/len(dataloader)}_{epoch_acc/len(dataloader)}.pt")
checkpoint = torch.load(PATH) 
model.load_state_dict(checkpoint['model_state_dict'])
optimizer.load_state_dict(checkpoint['optimizer_state_dict'])
epoch = checkpoint['epoch']
loss = checkpoint['loss']Transter learning
요런 다양한 모델을 가져다가 조금 변형해서 쓰는것

- 
stepping fozen 
 레이어 하나씩만 trainable하게 하고 나머지 frozen하는 것을 반복
- 
모델 불러오기 
import torch
from torchvision import models
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
vgg = models.vgg16(pretrained=True).to(device)- 레이어에는 이름이 붙어있다.
for name, layer in vgg.named_modules():
    print(name, layer)- frozen
vgg = models.vgg16(pretrained=True).to(device)
class MyNewNet(nn.Module):
    def __init__(self):
        super(MyNewNet, self).__init__()
        self.vgg19 = models.vgg19(pretrained=True)
        self.linear_layers = nn.Linear(1000, 1)
   def forward(self, x):
      x = self.vgg19(x)
     return self.linear_layers(x)
for param in my_model.parameters():
    param.requires_grad = False
    
for param in my_model.linear_layers.parameters():
    param.requires_grad = TrueMonitoring tools for PyTorch
Tensorboard
- scaler, graph, historgram, image, mesh
Weight&biases
- mlops툴
- 협업 가능
- 유료
Author And Source
이 문제에 관하여(부캠 TIL 0819), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ann9902/부캠-TIL-0819-a9m3cd05저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)