在用keras时用到了vgg19_weights_tf_dim_ordering_tf_kernels.h5这个文件,在线下载时,老是失败,于是直接下载下来放到指定位置进行使用。
主要参考了https://www.jianshu.com/p/0a4ba12df520这篇文章,感觉作者在解决问题时候的思路非常好,值得我学习。

keras有着很多已经与训练好的模型供调用,因此我们可以基于这些已经训练好的模型来做特征提取或者微调,来满足我们自己的需求。
比如我们要调用VGG16在imagenet下训练的模型:


这里是利用预训练的模型来做特征提取,因此我们不需要顶层的分类器网络部分的权重,只需要使用到训练好的卷积基。这也就是VGG16参数中include_top=False的含义,weights='imagenet’的意思就直接是基于imagenet训练的网络权重了。
但是在服务器上运行的时候遇到一个问题,因为这个模型第一次使用时需要去下载,而服务器连接下载的url超时。。。那就只能手动离线下载然后放到路径里去供调用了。
首先keras提供的模型下载地址是:https://github.com/fchollet/deep-learning-models/releases
其中我们找到vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5下载即可。
从这个命名也可以看出很多信息了,比如从tf看出这是基于tensorflow的(th是基于Theano ),notop也就是我们上面说的不要顶层的分类器部分,h5后缀表示keras使用HDF5格式存储的,等等。
下好后放在哪呢?我们只能看看keras的代码是怎么写的,从报错信息中可以得到你的机器中vgg16.py的文件路径,比如:

Traceback (most recent call last):File "main.py", line 9, in <module>train.train()File "/cloudox/cifar10_test/train.py", line 52, in trainconv_base = VGG16(include_top=False, weights='imagenet')File "/……/keras/applications/__init__.py", line 28, in wrapperreturn base_fun(*args, **kwargs)File "/……/keras/applications/vgg16.py", line 11, in VGG16return vgg16.VGG16(*args, **kwargs)File "/……/keras_applications/vgg16.py", line 209, in VGG16file_hash='6d6bbae143d832006294945121d1f1fc')File "/……/keras/utils/data_utils.py", line 226, in get_fileraise Exception(error_msg.format(origin, e.errno, e.reason))
Exception: URL fetch failure on https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5: None -- [Errno 110] Connection timed out

从报错信息中,第一我们可以知道是下载“https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5”这个文件超时,这也是我们上面文件下载路径的由来。第二我们可以知道下载的源头在哪里,大致检查一下,就会发现是在"/……/keras_applications/vgg16.py"这个文件中(“/usr/local/app/anaconda2/envs/tensorflow/lib/python2.7/site-packages/keras_applications/vgg16.py”),他的代码其实就在这:https://github.com/fchollet/deep-learning-models/blob/master/vgg16.py
好我们看看vgg16.py的代码,首先在顶部定义了两个下载路径:

WEIGHTS_PATH = 'https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels.h5'
WEIGHTS_PATH_NO_TOP = 'https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5'

然后往下翻会看到获取模型权重文件的代码:

 # load weightsif weights == 'imagenet':if include_top:weights_path = get_file('vgg16_weights_tf_dim_ordering_tf_kernels.h5',WEIGHTS_PATH,cache_subdir='models')else:weights_path = get_file('vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5',WEIGHTS_PATH_NO_TOP,cache_subdir='models')model.load_weights(weights_path)

还记得我们调用的时候传的参数吧,VGG16(include_top=False, weights=‘imagenet’),所以就是这里。这里调用了get_file这个函数来从路径中获取权重文件,那我们看看这个函数在哪,代码中说了在:

from keras.utils.data_utils import get_file

那就去找嘛,既可以在你的文件夹里找,也可以在github找,因为vgg16这个文件属于一个单独的工程,因此我们从作者的所有仓库中找到keras工程,然后顺着keras.utils.data_utils找到代码,在这:https://github.com/keras-team/keras/blob/master/keras/utils/data_utils.py
这时候离我们要的东西就不远了,这时候都不用详细看代码,我们看下注释:


注释说,这个函数会先检查cache中是否有文件,如果没有就从url下载,而这个cache的路径在~/.keras,默认存储文件是datasets,说明默认是下载数据集的,还记得vgg16那边传的参数么,cache_subdir=‘models’,
所以这个文件应该在的位置就是~/.keras/models,这时候我们直接进入该目录,发现果然有个models文件,那就直接把文件放进models就好啦。

这时候再去运行之前自己的代码就可以成功啦。

作者:Cloudox_
链接:https://www.jianshu.com/p/0a4ba12df520
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

keras离线下载模型的存储位置相关推荐

  1. Mac技巧之找到 Mac OS X 系统更新升级包下载后的存储位置,避免多台苹果电脑重复下载苹果OS X 10.7.4发布,升级包下载

    http://www.mac52ipod.cn/post/apple-mac-os-x-system-upgrade-package-storage-location.php 苹果每次发布 Mac O ...

  2. 云视通手机下载的文件存储位置_2020年新版手机QQ和微信接受文件存储在手机哪个文件夹...

    2020年手机QQ和微信的更新非常快,不仅成为了我们的聊天工具,也成为了很多人的文 件收发工具,我们通过QQ或者微信,基本可以实现文字视频等聊天,重要文件相互收发 传递等工作.但近期手机QQ的更新,改 ...

  3. 云视通手机下载的文件存储位置_小白版丨IPFS网络怎么存储、下载文件?怎么托管网站?...

    IPFS是一种用于文件存储的对等网络协议,采用的是基于内容的寻址,而非基于位置.这意味着要查找文件,我们不需要知道它在哪里(abc.com/cat.png),而是它包含的内容(QmSNssW5a9S3 ...

  4. Mac OS X 系统更新升级包下载后的存储位置

    打开 Finder,在顶部菜单栏点击 "前往",在下拉菜单里选择 "前往文件夹-",粘入下面这个路径,回车.看到苹果电脑 Mac OS X 系统更新升级包了吧. ...

  5. armbian宝塔_斐讯N1+Armbian+宝塔+Apache+Mysql+PHP+cloudreve+aria2实现云存储+离线下载服务器...

    看到很多人提到不建议在N1的armbian中安装宝塔,因为无法安装WEB环保,于是写一个简单的内容来给大家提供一些灵感. 写在前面: 因为宝塔环境安装Arm系统的兼容性并不好,所以需要做的工作会稍多一 ...

  6. 斐讯N1+ARMBIAN+宝塔+APACHE+MYSQL+PHP+CLOUDREVE+ARIA2实现云存储+离线下载服务器

    漫步云端服务器 http://chdong.top/bbs/ http://www.chdong.top/ 看到很多人提到不建议在N1的armbian中安装宝塔,因为无法安装WEB环保,于是写一个简单 ...

  7. [R语言]1. R语言中R包下载存储位置和安装位置

    开发环境:Win7+R3.6.2+RStudio R语言学习中R包的安装必不可少,可能很多人都没有深究R包是怎么安装的,只是用install.packages("xx包名")命令来 ...

  8. R语言修改下载安装包install.package的默认存储位置

    这次遇到的问题是:R语言下载安装包时会先将下载下来的二进制zip文件保存在本地,然后将其解压安装到R的library文件夹下.包被下载后会默认将二进制zip文件保存在本地C盘的临时会话的downloa ...

  9. Visual Studio 2017各版本安装包离线下载、安装全教程

    微软最近发布了正式版Visual Studio 2017并公开了其下载方式,不过由于VS2017采用了新的模块化安装方案,所以微软官方并未提供ISO镜像,但是官方提供了如何进行离线下载的方案给需要进行 ...

最新文章

  1. VS_自动添加头文件
  2. 软件调试学习笔记(五)—— 软件断点内存断点
  3. 导师实验室对学生影响有多大?
  4. Linux中srch出现bash,Shell练习题(3)
  5. [译] 每天一段 Spring 5 官方文档(5.1.4.RELEASE)—— Spring Framework Overview 06
  6. sql 除法_七天学会SQL-04SQL复杂查询
  7. Bundle Identifier
  8. Python《爬虫收集》
  9. tomcat-内存溢出java.lang.OutOfMemoryErrory:PermGen space解决方法
  10. fltk和glog在mac下的安装与编译
  11. 安全模式下如何重启计算机,Windows10进入安全模式的6种方法?安全模式下如何维护电脑?...
  12. 基于Java socket的网络聊天室的设计与实现
  13. 浙大版《C语言程序设计(第3版)》题目集习题5-6 使用函数输出水仙花数 (20 分) 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1 ​3 ​​ +
  14. 优麒麟设置root登入
  15. js 前端常用时间操作:时间戳、当前时间
  16. Redis Desktop Manager连接失败/超时?
  17. 【用户画像】用户画像添加标签、定义标签任务、搭建工程
  18. linux可以识别多少lun,Linux上每个SCSI设备的最大LUN数目是多少(by quqi99)
  19. 计算机网络核心知识点总结面试笔试要点
  20. Yolov5系列(3)-loss解析

热门文章

  1. 设计题目:门禁管理系统(DOS)
  2. 数据库SQL查询效率in、exists、left join on、right join on 适用场景与比较
  3. K8S 快速入门(一)虚拟化、容器化构建云计算平台的基本概念及原理解析
  4. 通过ChatGPT实现的ChatPDF,简单的应用落地,让你的文档变成一个智能助手,通过对话的方式快速学习文档内容
  5. s7-300 PLC 利用SFC51 增加DP从站在线诊断功能
  6. JetSon TX1配置问题记录
  7. modbus tcp主站和从站_【技术】Modbus协议栈应用实例之四:ModbusTCP服务器应用
  8. linux网络相关日志,网络安全系列之十五 Linux日志管理1
  9. android url scheme 跳转传值,如何自定义 URL Scheme 进行跳转
  10. Windows ce6.0 安装过程!