caffe2官方文档Loading_Pretrained_Models中,读取网络参数pb文件时的RuntimeError解决方法

在Loading_Pretrained_Models.ipynb中,导入预训练参数和网络结构的程序段如下:

# Read the contents of the input protobufs into local variables
with open(INIT_NET, "rb") as f:
    init_net = f.read()
with open(PREDICT_NET, "rb") as f:
    predict_net = f.read()

# Initialize the predictor from the input protobufs
p = workspace.Predictor(init_net, predict_net)

其中INIT_NET为init_net.pb, PREDICT_NET为predict_net.pb,这两个文件里的内容类似于:

version https://git-lfs.github.com/spec/v1
oid sha256:97046c44ecd15b3c8806f609a15d0cc52af7bdc8aa19c720f8a1f6abe68e9a74
size 128070759

可能是因为我下载models的方式为:

git clone https://github.com/caffe2/models

由于文件过大过多,所以系统选择了采用上面的方式(git lfs)存储信息。这就导致当我读取pb文件并导入参数时,产生了一个Runtime错误。 

RuntimeError: [enforce fail at pybind_state.cc:804] ParseProtoFromLargeString( init_net.cast(), &init_net_). 

解决方法:

手动的下载这些pb文件,然后替换掉之前的pb文件。

例如,squeezenet的init_net.pb和predict_net.pb的下载地址分别为:

https://media.githubusercontent.com/media/caffe2/models/master/squeezenet/init_net.pb

https://media.githubusercontent.com/media/caffe2/models/master/squeezenet/predict_net.pb

然后再运行程序就可以啦。

上面这些下载链接可以通过https://github.com/caffe2/models得到。里面每一个文件都有单独的下载链接。

待学习

当然也可以学习git lfs相关的知识来解决上述问题,目前我还不会。

你可能感兴趣的:(caffe2,导入模型)