mmdnnでPyTorch用にモデルを変換してみる - らんだむな記憶の続き。
caffemodel
を MMdnn
で 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.Tensor
の copy_
メソッドで実行されるようだ。
torch.Tensor
はhttps://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-L585が Python からはそう見えるという感じになるのだろうか?