设为首页 收藏本站
查看: 1336|回复: 0

[经验分享] caffe初试(一)happynear的caffe-windows版本的配置及遇到的问题

[复制链接]

尚未签到

发表于 2017-6-29 17:19:24 | 显示全部楼层 |阅读模式
  之前已经配置过一次caffe环境了:
Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境
  但其中也提到,编译时,用到了cuda6.5,但是实际训练时,使用GPU训练,又会出现问题。所以强迫症使然,我决定另外配置一个cpu_only的版本,编译时,不使用cuda。
  于是网上查了查,很多小伙伴都是使用happynear配置的caffe-windows版本,并参照其博客中的步骤进行编译使用的:
如何快糙猛地在Windows下编译CAFFE并使用其matlab和python接口
  按照博客中的方法,自己要做的事情就变得很少很少了,主要有:
  1、双击./src/caffe/proto/extract_proto.bat批处理文件来生成caffe.pb.h和caffe.pb.cc两个c++文件,和caffe_pb2.py这个Python使用的文件。
  2、打开./build_cpu_only/MainBuilder.sln ,点击编译按钮;
  原来以为只需静静等待,即可生成caffe.exe。但没想到,还是出现了问题,费了好大的劲,最终才得以解决。
  问题一:编译时,出现如下错误:
  错误 621 error LNK2001: 无法解析的外部符号 "__declspec(dllimport) void __cdecl google::ShowUsageWithFlagsRestrict(char const *,char const *)" (__imp_?ShowUsageWithFlagsRestrict@google@@YAXPEBD0@Z) F:\caffe-windows-master\build_cpu_only\MSVC\caffe.obj caffe
  错误 622 error LNK2001: 无法解析的外部符号 "__declspec(dllimport) void __cdecl google::SetUsageMessage(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_?SetUsageMessage@google@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) F:\caffe-windows-master\build_cpu_only\MSVC\caffe.obj caffe
  错误 623 error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __cdecl google::FlagRegisterer::FlagRegisterer(char const *,char const *,char const *,char const *,void *,void *)" (__imp_??0FlagRegisterer@google@@QEAA@PEBD000PEAX1@Z) F:\caffe-windows-master\build_cpu_only\MSVC\caffe.obj caffe
  错误 624 error LNK2001: 无法解析的外部符号 "__declspec(dllimport) void __cdecl google::SetVersionString(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_?SetVersionString@google@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) F:\caffe-windows-master\build_cpu_only\MSVC\caffe.obj caffe
  错误 625 error LNK2001: 无法解析的外部符号 "__declspec(dllimport) unsigned int __cdecl google::ParseCommandLineFlags(int *,char * * *,bool)" (__imp_?ParseCommandLineFlags@google@@YAIPEAHPEAPEAPEAD_N@Z) F:\caffe-windows-master\build_cpu_only\MSVC\common.obj caffe
  错误 626 error LNK1120: 5 个无法解析的外部命令 F:\caffe-windows-master\bin\caffe.exe caffe

出现的问题是:程序运行时调用了ShowUsageWithFlagsRestrict、SetUsageMessage等这些个函数,但编译器找不到这些函数定义的位置,即出现“无法解析的外部符号”,这就是缺少依赖库时常出现的error。究其原因是happynear在caffe的配置环境中,没有添加libgflags.lib库。这是一个Google开源的一个库,具体用途我也不知道。
所以只需:打开各工程属性页,在 链接器-》输入-》附加依赖项 中添加 “libgflags.lib” 即可

问题二:运行run_mnist.bat,尝试使用caffe训练mnist手写字体库模型时出现如下错误:
   ** On entry to SGEMM parameter number 3 had an illegal value
** On entry to SGEMM  parameter number  3 had an illegal value
** On entry to SGEMM  parameter number  3 had an illegal value
** On entry to SGEMM  parameter number  3 had an illegal value
这不是一个常见的错误,所以上网查了很久也没找到解决的方法。后来只有自己乱试了,结果在配置环境变量时发现,我上一次使用
Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境
  配置时,发现当时第三方库下的bin路径还存在(我的是F:\caffe\3rdparty\bin;)而这一次的配置,环境变量是放在F:\caffe\3rdparty\bin;之后的,会不会是由于F:\caffe\3rdparty\bin;的存在,使得该版本生成的caffe.exe在训练时出错,因为caffe.exe在运行时,是会从环境变量中找寻找需要的动态库进行链接才能顺利执行的。或许是因为F:\caffe\3rdparty\bin;的存在,使得该版本下的caffe.exe在运行时,先从F:\caffe\3rdparty\bin;中取动态库进行链接,而可能两个版本在配置时所用动态库有差异,不能共用,所以才导致该版本的caffe.exe在训练时,出现如上错误?
  带着疑问,我将F:\caffe\3rdparty\bin;从环境变量中删去,并且从任务管理器中结束了explorer.exe,再重新新建任务explorer.exe(即使环境变量生效!!!)
  然后再运行run_mnist.bat,结果真的可以正常开始训练了。真是被自己的智慧所折服。- -|||
  以上。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-389408-1-1.html 上篇帖子: scikit-learn 和pandas 基于windows单机机器学习环境的搭建 下篇帖子: [笔记]linux下和windows下的 创建线程函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表