らんだむな記憶

blogというものを体験してみようか!的なー

pretrainedモデルのウェイトのロード (1)

mmdnnでPyTorch用にモデルを変換してみる - らんだむな記憶の続き。

caffemodelMMdnn で PyTorch 用に変換しても KitModel としてのロードしか提供されない。どっちかというと、 torchvision.models.vgg19 に流し込んで利用したいので、weight と bias を取り出してロードさせることを試みる。

pretrained なモデルのウェイトのロードは https://github.com/pytorch/vision/blob/v0.6.0/torchvision/models/vgg.py#L94とかで使われる model.load_state_dict により実現されるが、その中身を追いかけるためにhttps://github.com/pytorch/pytorch/blob/v1.5.0/torch/nn/modules/module.py#L778を見ると、 with torch.no_grad(): をした上で torch.Tensorcopy_ メソッドで実行されるようだ。

torch.Tensorhttps://github.com/pytorch/pytorch/blob/v1.5.0/torch/tensor.py#L41より torch._C._TensorBase を継承しているが、この辺からはかなり分かりにくい。Where does `torch._C` come from? - PyTorch Forumsの内容を踏まえると
https://github.com/pytorch/pytorch/blob/v1.5.0/torch/csrc/autograd/python_variable.cpp#L546-L585Python からはそう見えるという感じになるのだろうか?