之前已经配置过一次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.hcaffe.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,结果真的可以正常开始训练了。真是被自己的智慧所折服。- -|||

以上。

caffe初试(一)happynear的caffe-windows版本的配置及遇到的问题的更多相关文章

  1. Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境

    折腾了几天,终于在windows系统上成功配置了Caffe环境,期间遇到了很多问题,每个问题的解决也都花了不少时间,查过挺多资料,感觉挺有意义,这里写篇博客记录一下. 原来我使用的CUDA版本是7.5 ...

  2. caffe 在 windows 下的配置(scripts\build_win.cmd)

    官网配置文档见:GitHub - BVLC/caffe at windows 1. windows 设置 requirements: visual studio 2013/2015 CMake > ...

  3. windows 10安装和配置caffe教程 | Install and Configure Caffe on windows 10

    本文首发于个人博客https://kezunlin.me/post/1739694c/,欢迎阅读! Install and Configure Caffe on windows 10 Part 1: ...

  4. 【转】Caffe初试(十)命令行解析

    caffe的运行提供三种接口:C++接口(命令行).Python接口和matlab接口.本文先对命令行进行解析,后续会依次介绍其它两种接口. caffe的C++主程序(caffe.cpp)放在根目录下 ...

  5. Caffe + Ubuntu 14.04 64bit + CUDA6.5 + 无GPU 配置

    官网: http://caffe.berkeleyvision.org/installation.html#compilation 参考网站: http://www.cnblogs.com/dupul ...

  6. Caffe+CUDA8.0+CuDNNv5.1+OpenCV3.1+Ubuntu14.04 配置参考文献 以及 常见编译问题总结

    Caffe + CUDA8.0 + CuDNNv5.1 + OpenCV3.1 + Ubuntu14.04  配置参考文献 ---- Wang Xiao  Anhui University  CVPR ...

  7. caffe平台快速搭建:caffe+window7+vs2013

    caffe平台快速搭建:caffe+window7+vs2013 1.caffe-master下载 采用微软提供Windows工具包(caffe-master),下载地址:https://github ...

  8. 【Caffe】源码解析----caffe.proto (转载)

    分析caffe源码,看首先看caffe.proto,是明智的选择.好吧,我不是创造者,只是搬运工. 原文地址:http://blog.csdn.net/qq_16055159/article/deta ...

  9. Caffe实战三(依赖包解析及环境配置)

    前面的文章使用的软件环境是开始时通过apt-get命令所安装的,本文将通过编译源码的方式重新配置一个可迁移的软件环境.(参考:<深度学习 21天实战Caffe> 第五天 Caffe依赖包解 ...

随机推荐

  1. net MVC 重定向总结

    [HttpPost] public ActionResult StudentList(string StudName, string studName, DateTime BirthDay, Form ...

  2. linux之svn

    sudo apt-get install subversion 实践出真理

  3. [bigdata] Spark RDD整理

    1. RDD是什么RDD:Spark的核心概念是RDD (resilient distributed dataset),指的是一个只读的,可分区的弹性分布式数据集,这个数据集的全部或部分可以缓存在内存 ...

  4. web开发——写一个简单的表格导出操作

    一.前台页面: 主要是一个按钮和一个表格,表格有显示数据,按钮负责将表格中的数据选择性地导出.除此外,可以附加一个小窗口和进度条,用于显示下载进度. 1. 按钮:<a href="ja ...

  5. AE开发能否实现TOC Control里添加多个Data Frame

    问题: 在ArcMap中,菜单Insert下Data Frame,可以在TOC中增加Data Frame,在MapControl或者PageLayoutControl下都可以正常显示多个Data Fr ...

  6. 深入理解IoC/DI

    ------------------------------------------------------------------------ 理解IoC/DI 1.控制反转 --> 谁控制谁 ...

  7. golang笔记——并发

    go语言中的main函数也是运行在一个单独的goroutine中的,一般称为 main goroutine,main函数结束时,会打断其它 goroutine 的执行,但是其它 goroutine 不 ...

  8. 全屏滚动效果H5FullscreenPage.js

    前提: 介于现在很多活动都使用了 类似全屏滚动效果 尤其在微信里面 我自己开发了一个快速构建 此类项目的控件 与市面上大部分控件不同的是此控件还支持元素的动画效果 并提供多种元素效果 基于zepto. ...

  9. hzwer模拟赛 虫洞

    [题目描述] N个虫洞,M条单向跃迁路径.从一个虫洞沿跃迁路径到另一个虫洞需要消耗一定量的燃料和1单位时间.虫洞有白洞和黑洞之分.设一条跃迁路径两端的虫洞质量差为delta. 1.从白洞跃迁到黑洞,消 ...

  10. Ulink2 "No Ulink Device found" 解决办法

    一.背景 keil使用ULINK2调试的时候,提示 "No Ulink Device found", "error: flash download failed - Ta ...