在安装caffe以后一般需要运行命令进行验证:
import caffe
这涉及到python中的导入:
在python 里面,import ** 有两种导入, 一种是模块导入,一种是包导入
1) 模块导入
模块通常是指写好的文件,文件可以 " .py"、".pyc"、".pyd"、".so"、".dll" 等类型, 最常用的是导入'.py' 文件模块, '.py'文件中可以包含类、方法、变量和常量
比如在目录/home/cc/test_r/目录下创建test0.py文件
# test0.py
class foo(object):
def __init__(self,year,data):
self.year = year
self.data = data
def output(self):
print "%s/%s" %(self.year,self.data)
则只要将路径添加到搜索路径中就可以直接导入'.py'模块:
import sys
sys.path.append('/home/cc/test_r')
import test0
a = test0.foo(2017,04)
print a.output()
# 或者
from test0 import foo
a = foo(2017,04)
print a.output()
导入'.py‘文件具体应用案例可参考:python构建深度神经网络(DNN), python也可以导入.so文件,需要使用python的c扩展, caffe中有用到,可以参考: 使用C语言扩展Python(一))
2) 包导入
上面是在test_r 目录下导入test0.py模块, 当有许多目录,每个目录下模块比较多时,则不同目录下的模块之间可能产生命名冲突, 因此可以采用将目录下对应的文件夹作为一个包, 导入该包,可以对该包下的文件进行相应的访问。
例如在test_r文件夹下创建一个__init__.py 文件就将test_r文件夹定义成了一个包, __init__可以为空,但一定要存在,不过通常情况下它用来存放包的初始化代码。
在test_r文件夹下创建一个空的__init__.py 文件后,此时test_r可以当做一个包来被python调用
import test_r.test0 as tt # import test_r
a = tt.foo(2017,04)
print a.output()
也可以在__init__里定义调用的包 (. 代表当前目录, .. 代表上级父目录):
# __init__.py
from .test0 import foo
import test_r
a = test_r.foo(2017,04)
print a.output()
3) import caffe
点击caffe此时会跳转到__init__.py文件,如下面:
from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver
from ._caffe import set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed
from ._caffe import __version__
from .proto.caffe_pb2 import TRAIN, TEST
from .classifier import Classifier
from .detector import Detector
from . import io
from .net_spec import layers, params, NetSpec, to_proto
参考:
1) http://www.cnblogs.com/liyang0519/p/6125248.html
2) http://blog.csdn.net/zyz511919766/article/details/22678143