tf.keras中预训练模型的使用及报错解决

本机环境:
Anaconda TensorFlow2.1.0 - CPU
Ubuntu18.04
Python3.7

任务描述:
以上环境下使用tf.Keras搭建CNN,使用Keras Applications内置预训练模块VGG16(不使用自带fc层);对源数据进行数据增强

方案及报错解决:
1)希望引入VGG系列网络提升网络性能,直接在代码中写入VGG代码效率低下、效果不佳,改用嵌入预训练模块方式;keras使用预训练网络训练有两种方式:Keras Applications和TensorFlow Hub,(具体内容见:https://blog.csdn.net/zimiao552147572/article/details/104134536介绍地很详细)

2)本文使用Keras Applications模块导入VGG16,使用命令:

from tensorflow.keras.applications import VGG16

训练时默认到github下载初始化权重,该权重用imagenet数据集预训练。由于这一模块有500MB左右,网络运行时下载极为缓慢,建议事先下载本地使用。根据程序提示网址或官网:https://github.com/fchollet/deep-learning-models/releases下载。本文下载文件:vgg16_weights_tf_dim_ordering_tf_kernels.h5,带fc层,不带fc层的文件在文件名后有notop标识,本文直接用迅雷下载可行。下载好的h5文件放到本地路径:

~/.keras/models

再运行程序可默认调用本地模块,但本文尝试无效,解决方法为命令:

pre_trained_model = VGG16(input_shape=(96, 96, 3) , include_top=False, weights="imagenet")

中,将weights参数改为上述或其他保存的地址,即可调用,但出现报错:ValueError: You are trying to load a weight file containing 16 layers into a model with 13 layers. 该问题的原因在完成本文时并未深入研究,可能涉及嵌套型神经网络问题,再更。解决方法为:模型定义时,先不使用预训练权重,定义好后再用load_weights函数加载权重,命令如下:

base_model = NASNetLarge(weights=None, include_top=False)
base_model.load_weights("你的权重路径", by_name=True)

(参见:https://blog.csdn.net/liumoude6/article/details/82762578?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3
我已运行,状态良好~

3)数据增强
安装imgaug工具包时,需要先安装依赖包shapely,本文用Anaconda安装的TensorFlow似乎不需要手动安装,直接安装即可,命令:

pip install imgaug

本文出现报错:OpenSSL.SSL.WantReadError,与前文安装cv2时解决方案一样

其他参考:
1)ValueError: You are trying to load a weight file containing 16 layers into a model with 13 layers.报错的可能原因及解决(嵌套型神经网络问题;多GPU训练):ValueError: You are trying to load a weight file containing 12 layers into a model with 2 layers.
2)Keras内置VGG19介绍(文件下载注意和实例):keras中VGG19预训练模型的使用
3)初期解决保存本地模块后仍默认网络下载(使用flask包):Keras下载预训练模型(例VGG16)文件存放位置以及下载太慢的解决办法
4)初期解决下载模块的本地存放路径(~/.keras/datasets/):Keras自带数据集与预训练model下载太慢

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值