栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

吴恩达深度学习编程作业0402——ResNets

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

吴恩达深度学习编程作业0402——ResNets

前言
本次练习旨在通过使用残差网络帮助我们训练一个深层的卷积网络,在过去深层的网络意味着复杂的函数,很难去实践。残差网络帮助我们让实践变得可行。
具体操作:
1.构建残差网络的块
2.将块连接到一起去训练一个用于图片分类的残差网络
(使用Keras实现)

加载包报错1:

importError: cannot import name 'plot_model' from 'keras.utils'

过去已经出现过此问题,是版本更新引起的,修改表达方式如下:

from keras.utils.vis_utils import plot_model

解决!

构建残差网络
1.标识块


作业中使用了如上两种结构的标识块,第一种通过快捷方式连接跨越了两层,第二种直接跨越三层。
2.标识块构成细节:
1.构建“主路”:分三步 参考指南
实施BatchNorm 参考指南
2.最后步骤:快捷链接 参考指南;使用激活函数
报错:

AttributeError: module 'tensorflow' has no attribute 'reset_default_graph'

解决方法:
错误产生是源于tensorflow版本更新
引用语句改为:

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

再次编译成功!
3.卷积块

注:即便输入输出的维度不同也可以使用卷积块;卷积块与标识块的不同之处在于快捷链接部分包含Conv2D层
Conv2D层的用处在于使用线性函数将输入x转化为不同的尺寸

卷积块构成细节:
1.构建“主路”:分三步
2.建立快捷方式:与之前的不同在于添加了Conv2D层
3.最后步骤:将快捷方式与主路连接;应用激活函数
4.构建你的一个残差网络模型

注:图中“ID BLOCK x3”表示你需要堆叠标识块3次
构建好模型后就可以开始训练模型了,练习中初始设置的epochs=2,这样训练后精确度并不高。作者给出的解释是,在训练20轮后可以获得不错的精确度,但是在CPU上训练模型会花费很长时间。若果使用GPU进行训练,时间会大幅度缩短。
5.测试自己的图片
报错:

AttributeError: module 'scipy.misc' has no attribute 'imread'

报错原因:新版本的scipy舍弃了一些函数,其中就包括 imread。
解决方法:
1.降低scipy的版本
2.修改引用方式和使用方式如下:
原引用方式:

import scipy.misc

原使用方式:

my_image = scipy.misc.imread(img_path)
修改后:
import imageio
my_image = imageio.imread(img_path)

总结:由于梯度消失问题,很深的传统卷积网络实践中很难实现,残差网络的出现解决了这一问题,只需简单的堆叠标识块和卷积块就能实现很深的网络,获得较好的性能。在完成作业的过程中可能会出现得出的数据和示例不一致的情况,作者也给出了适当的范围值,只要在范围内就可以接受。

希望能够帮助你解决和我一样的问题。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/299867.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号