サブカムTIL 0819

9187 ワード

n.問題

  • BCEWithLogitsLossとBCElossは何が違うのでしょうか、授業中に電子が信号を後ろに表示すると言っていましたが、そもそも自動加算ではなかったのでしょうか…?
  • super(Add, self).__init__()
    super().__init__()
  • の2つの違いは、前者が指定されたクラスの親に戻ることです.明確に説明しないと、すべての親を迂回します.リファレンス
  • 知るところ

    torchvision.transforms.Grayscale(num_output_channels=3)
    # grayscale의 1채널 영상을 3채널로 동일한 값으로 확장함

    PYTORCH


    Transfer learning


    model.save


    pytorchモデルを保存するには2つの方法があります.

    ウェイトのみ保存(Save Weights Only)

  • ストレージ
  • 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のアーキテクチャ形式は同じでなければなりません!!

    モデル、ウェイトの保存

  • ストレージ
  • 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
    1つのレイヤのみを訓練し、残りのレイヤを繰り返し凍結します.

  • モデルの読み込み
  • 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 = True

    Monitoring tools for PyTorch


    Tensorboard

  • scaler, graph, historgram, image, mesh
  • Weight&biases

  • mlopsツール
  • コラボレーション可能
  • 有料