自己教師有り学習のためのライブラリ"solo-learn"の使い方がわかりません
様々な自己教師有り学習手法を提供してくれるライブラリの"solo-learn"で、VICRegのモデルを作成しようとしたのですがうまくできませんでした。チュートリアルのBarlow Twinsのモデルによる学習は行えたのですが、VICReg用に中身を書き換えようとしたところエラーが発生しました。どのように書き換えればVICRegを実装できるのでしょうか。
初めての質問なので至らない点がありましたらご指摘いただけると幸いです。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "C:\Users\pello\AppData\Local\Temp\atom_script_tempfiles\202206-8072-kh6viu.e51yi", line 158, in <module> model = VICReg(**kwargs) File "C:\Users\pello\AppData\Local\Programs\Python\Python38\lib\site-packages\solo\methods\vicreg.py", line 49, in __init__ super().__init__(**kwargs) File "C:\Users\pello\AppData\Local\Programs\Python\Python38\lib\site-packages\solo\methods\base.py", line 215, in __init__ kwargs = self.backbone_args.copy() AttributeError: 'str' object has no attribute 'copy' [Finished in 4.017s]
該当のソースコード
python
1import ssl 2import torch 3from pytorch_lightning import Trainer 4from pytorch_lightning.callbacks import LearningRateMonitor 5from pytorch_lightning.loggers import WandbLogger 6from pytorch_lightning.plugins import DDPPlugin 7 8from solo.methods import VICReg # imports the method class 9from solo.utils.checkpointer import Checkpointer 10 11# some data utilities 12# we need one dataloader to train an online linear classifier 13# (don't worry, the rest of the model has no idea of this classifier, so it doesn't use label info) 14from solo.utils.classification_dataloader import prepare_data as prepare_data_classification 15 16# and some utilities to perform data loading for the method itself, including augmentation pipelines 17from solo.utils.pretrain_dataloader import ( 18 prepare_dataloader, 19 prepare_datasets, 20 prepare_n_crop_transform, 21 prepare_transform, 22) 23 24ssl._create_default_https_context = ssl._create_unverified_context 25 26# wandb.init(project = 'project') 27# config = wandb.config 28 29# common parameters for all methods 30# some parameters for extra functionally are missing, but don't mind this for now. 31base_kwargs = { 32 "backbone": "resnet50", 33 "backbone_args": "dict", 34 "num_classes": 1000, 35 # "cifar": True, 36 "imagenet": True, 37 "zero_init_residual": True, 38 "max_epochs": 1000, 39 "optimizer": "sgd", 40 "lars": True, 41 "lr": 0.2, 42 "gpus": "0", 43 "grad_clip_lars": True, 44 "weight_decay": 0.00001, 45 "classifier_lr": 0.5, 46 "exclude_bias_n_norm": True, 47 "accumulate_grad_batches": 1, 48 "extra_optimizer_args": {"momentum": 0.9}, 49 "scheduler": "warmup_cosine", 50 "min_lr": 0.002, 51 "warmup_start_lr": 0.0, 52 "warmup_epochs": 10, 53 "num_crops_per_aug": [2, 0], 54 "num_large_crops": 2, 55 "num_small_crops": 0, 56 "eta_lars": 0.02, 57 "lr_decay_steps": None, 58 "dali_device": "gpu", 59 "batch_size": 256, 60 "num_workers": 4, 61 "data_dir": "/data/datasets", 62 "train_dir": "imagenet/train", 63 "val_dir": "imagenet/val", 64 "dataset": "imagenet", 65 "name": "vicreg-imagenet", 66} 67 68# barlow specific parameters 69method_kwargs = { 70 "proj_hidden_dim": 2048, 71 "proj_output_dim": 2048, 72 "sim_loss_weight": 25, 73 "var_loss_weight": 25, 74 "cov_loss_weight": 1, 75} 76 77kwargs = {**base_kwargs, **method_kwargs} 78 79model = VICReg(**kwargs) 80
試したこと
importするmethodsをbarlowtwinsからVICRegに変更
kwargsのデータセットをimagenetに変更
method_kwargsをVICRegに合わせた内容に変更
missing 1 required positional argument: 'backbone_args'と言われたので「"backbone_args": "dict",」を追加
###使用したライブラリー"solo-learn"
https://solo-learn.readthedocs.io/en/latest/index.html
あなたの回答
tips
プレビュー