caffe prototxtからPyTorchへ - らんだむな記憶の続き。
MMdnn
については面倒臭いので以下で導入する。
docker pull mmdnn/mmdnn:0.2.5-py35-ubuntu16.04
で、以下を変換してみたい。
curl http://www.robots.ox.ac.uk/~vgg/software/very_deep/caffe/VGG_ILSVRC_19_layers.caffemodel -o VGG_ILSVRC_19_layers.caffemodel curl https://gist.githubusercontent.com/ksimonyan/3785162f95cd2d5fee77/raw/f02f8769e64494bcd3d7e97d5d747ac275825721/VGG_ILSVRC_19_layers_deploy.prototxt -o VGG_ILSVRC_19_layers_deploy.prototxt
そして
docker run -it -v $(pwd):/mnt mmdnn/mmdnn:0.2.5-py35-ubuntu16.04
でダウンロード先をマウントしてみる。
深層学習モデルの相互変換ツールMMdnnを試す - Qiitaとかを参考にして、
mmconvert -sf caffe -iw VGG_ILSVRC_19_layers.caffemodel -in VGG_ILSVRC_19_layers_deploy.prototxt -df pytorch -om VGG_ILSVRC_19.pt
で変換してみる。
コンテナを抜けたら
docker container prune
で後片付け。出力された VGG_ILSVRC_19.pt
とか VGG_ILSVRC_19.py
とかは
sudo chown -R xxx:xxx VGG_ILSVRC_19.pt VGG_ILSVRC_19.py
でオーナーを変更しておく。
MMdnn/mmdnn/conversion/pytorch at master · microsoft/MMdnn · GitHubを参考に、
import torch model = torch.load("VGG_ILSVRC_19.pt")
でモデルをロードできる。この時、カレントディレクトリに VGG_ILSVRC_19.py
も一緒に置いておかないと読み込みに失敗する。
for name, t in model.state_dict().items(): print(name, t.shape)
でテンソルの中身を確認できる。