将模型从 Caffe 转换为 Tensorflow 时出错
Error converting a model from Caffe to Tensorflow
ImportError: 没有名为 kaffe.tensorflow
的模块
尝试使用 caffe-tensorflow 转换器将模型从 Caffe 转换为 Tensorflow。
使用此命令:
convert.py --caffemodel ./VGG_ILSVRC_19_layers.caffemodel
--data-output-path ./TF_conv/dataOutput.npz --code-output-path ./TF_conv/codeOutput.py ./VGG_ILSVRC_19_layers_deploy.prototxt
我得到这个代码输出文件:
from kaffe.tensorflow import Network
class VGG_ILSVRC_19_layers(Network):
def setup(self):
(self.feed('data')
.conv(3, 3, 64, 1, 1, name='conv1_1')
.conv(3, 3, 64, 1, 1, name='conv1_2')
.max_pool(2, 2, 2, 2, name='pool1')
.conv(3, 3, 128, 1, 1, name='conv2_1')
.conv(3, 3, 128, 1, 1, name='conv2_2')
.max_pool(2, 2, 2, 2, name='pool2')
.conv(3, 3, 256, 1, 1, name='conv3_1')
.conv(3, 3, 256, 1, 1, name='conv3_2')
.conv(3, 3, 256, 1, 1, name='conv3_3')
.conv(3, 3, 256, 1, 1, name='conv3_4')
.max_pool(2, 2, 2, 2, name='pool3')
.conv(3, 3, 512, 1, 1, name='conv4_1')
.conv(3, 3, 512, 1, 1, name='conv4_2')
.conv(3, 3, 512, 1, 1, name='conv4_3')
.conv(3, 3, 512, 1, 1, name='conv4_4')
.max_pool(2, 2, 2, 2, name='pool4')
.conv(3, 3, 512, 1, 1, name='conv5_1')
.conv(3, 3, 512, 1, 1, name='conv5_2')
.conv(3, 3, 512, 1, 1, name='conv5_3')
.conv(3, 3, 512, 1, 1, name='conv5_4')
.max_pool(2, 2, 2, 2, name='pool5')
.fc(4096, name='fc6')
.fc(4096, name='fc7')
.fc(1000, relu=False, name='fc8')
.softmax(name='prob'))
与:python ./codeOutput.py
我收到此错误:
Traceback (most recent call last):
File "./codeOutput.py", line 1, in <module>
from kaffe.tensorflow import Network
ImportError: No module named kaffe.tensorflow
我是否必须将 codeOutput.py 文件放在 kaffe.tensorflow 模块所在的目录中?
我必须复制文件所在的 kaffe.tensorflow 模块吗?
我可以通过某种方式将两者联系起来吗?
caffe-tensorflow 必须在您的 PYTHONPATH 中,这样 python 才能找到模块。
您可以在 .bashrc 中编辑 PYTHONPATH 环境变量。例如:
export PYTHONPATH='/path/to/caffe-tensorflow'
或者您在脚本中添加路径:
import sys
sys.path.insert(0, '/path/to/caffe-tensorflow')
ImportError: 没有名为 kaffe.tensorflow
的模块尝试使用 caffe-tensorflow 转换器将模型从 Caffe 转换为 Tensorflow。
使用此命令:
convert.py --caffemodel ./VGG_ILSVRC_19_layers.caffemodel --data-output-path ./TF_conv/dataOutput.npz --code-output-path ./TF_conv/codeOutput.py ./VGG_ILSVRC_19_layers_deploy.prototxt
我得到这个代码输出文件:
from kaffe.tensorflow import Network
class VGG_ILSVRC_19_layers(Network):
def setup(self):
(self.feed('data')
.conv(3, 3, 64, 1, 1, name='conv1_1')
.conv(3, 3, 64, 1, 1, name='conv1_2')
.max_pool(2, 2, 2, 2, name='pool1')
.conv(3, 3, 128, 1, 1, name='conv2_1')
.conv(3, 3, 128, 1, 1, name='conv2_2')
.max_pool(2, 2, 2, 2, name='pool2')
.conv(3, 3, 256, 1, 1, name='conv3_1')
.conv(3, 3, 256, 1, 1, name='conv3_2')
.conv(3, 3, 256, 1, 1, name='conv3_3')
.conv(3, 3, 256, 1, 1, name='conv3_4')
.max_pool(2, 2, 2, 2, name='pool3')
.conv(3, 3, 512, 1, 1, name='conv4_1')
.conv(3, 3, 512, 1, 1, name='conv4_2')
.conv(3, 3, 512, 1, 1, name='conv4_3')
.conv(3, 3, 512, 1, 1, name='conv4_4')
.max_pool(2, 2, 2, 2, name='pool4')
.conv(3, 3, 512, 1, 1, name='conv5_1')
.conv(3, 3, 512, 1, 1, name='conv5_2')
.conv(3, 3, 512, 1, 1, name='conv5_3')
.conv(3, 3, 512, 1, 1, name='conv5_4')
.max_pool(2, 2, 2, 2, name='pool5')
.fc(4096, name='fc6')
.fc(4096, name='fc7')
.fc(1000, relu=False, name='fc8')
.softmax(name='prob'))
与:python ./codeOutput.py
我收到此错误:
Traceback (most recent call last):
File "./codeOutput.py", line 1, in <module>
from kaffe.tensorflow import Network
ImportError: No module named kaffe.tensorflow
我是否必须将 codeOutput.py 文件放在 kaffe.tensorflow 模块所在的目录中?
我必须复制文件所在的 kaffe.tensorflow 模块吗?
我可以通过某种方式将两者联系起来吗?
caffe-tensorflow 必须在您的 PYTHONPATH 中,这样 python 才能找到模块。 您可以在 .bashrc 中编辑 PYTHONPATH 环境变量。例如:
export PYTHONPATH='/path/to/caffe-tensorflow'
或者您在脚本中添加路径:
import sys
sys.path.insert(0, '/path/to/caffe-tensorflow')