《深度学习——Andrew Ng》第四课第二周编程作业

深度学习第四课是 卷积神经网络 ,共四周内容:

  1. 第一周 卷积神经网络(卷积的含义,各个层的功能,如何计算数据在不同层的大小(shape))
  2. 第二周 深度卷积网络:实例探究(LeNet5、ResNet50等经典神经网络,迁移学习,数据扩充)
  3. 第三周 目标检测(目标检测,衡量指标,YOLO算法)
  4. 第四周 特殊应用:人脸识别和神经风格转换(。。。还没看)

作业及答案传送门

上面链接有作业及答案,这里主要总结一下第二周的作业内容,把学到的知识做个笔记。

keras框架

这里先送上keras框架的中文文档,Keras中文文档,有不会的内容查官方文档还是最有效的。

keras简介

之前有tensorflow、caffe、theano等诸多深度学习框架,这里keras的出现是为了进一步简化初学者构建神经网络的步骤。如果是只对深度学习有概念上的认识,而不清楚tensorflow里面的tensor(张量)等概念的同学,可以使用keras快速搭建自己的网络,这也符合NG快速搭建自己网络的理念。

网络层的使用

keras里面的网络层的使用都很简单,将keras.layers导入即可,这里以2D卷积层为例:

from keras import layers
from keras.layers import Conv2D

# 这里最后输出是X,输入是最后括号里面的X。8个3*3的2D卷积层
X = Conv2D(8,kernel_size=(3,3),strides=(1,1))(X)

keras.layers.convolutional.Conv2D(filters, kernel_size, strides=(1, 1), padding=’valid’, data_format=None, dilation_rate=(1, 1), activation=None, use_bias=True, kernel_initializer=’glorot_uniform’, bias_initializer=’zeros’, kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)

参数

  • filters:卷积核的数目(即输出的维度)
  • kernel_size:单个整数或由两个整数构成的list/tuple,卷积核的宽度和长度。如为单个整数,则表示在各个空间维度的相同长度。
  • strides:单个整数或由两个整数构成的list/tuple,为卷积的步长。如为单个整数,则表示在各个空间维度的相同步长。任何不为1的strides均与任何不为1的dilation_rate均不兼容
  • padding:补0策略,为“valid”, “same” 。“valid”代表只进行有效的卷积,即对边界数据不处理。“same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同。
  • activation:激活函数,为预定义的激活函数名(参考激活函数),或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x)
  • dilation_rate:单个整数或由两个个整数构成的list/tuple,指定dilated convolution中的膨胀比例。任何不为1的dilation_rate均与任何不为1的strides均不兼容。
  • data_format:字符串,“channels_first”或“channels_last”之一,代表图像的通道维的位置。该参数是Keras 1.x中的image_dim_ordering,“channels_last”对应原本的“tf”,“channels_first”对应原本的“th”。以128x128的RGB图像为例,“channels_first”应将数据组织为(3,128,128),而“channels_last”应将数据组织为(128,128,3)。该参数的默认值是~/.keras/keras.json中设置的值,若从未设置过,则为“channels_last”。
  • use_bias:布尔值,是否使用偏置项
  • kernel_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers
  • bias_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers
  • kernel_regularizer:施加在权重上的正则项,为Regularizer对象
  • bias_regularizer:施加在偏置向量上的正则项,为Regularizer对象
  • activity_regularizer:施加在输出上的正则项,为Regularizer对象
  • kernel_constraints:施加在权重上的约束项,为Constraints对象
  • bias_constraints:施加在偏置上的约束项,为Constraints对象

可视化

keras.utils.vis_utils模块提供了画出Keras模型的函数(利用graphviz)

这里首先要安装两个依赖包(按照顺序安装):

  1. graphviz
    sudo apt-get install graphviz
    如果提示有依赖无法安装,则先安装依赖,然后再装graphviz:

    sudo apt-get -f install

    sudo apt-get install graphviz

  2. pydot-ng
    sudo pip3 install pydot-ng

安装好之后可以在程序中画出自己网络模型图,这里以第一个作业的happyModel为例:

### keras visualization
from keras.utils import plot_model

plot_model(happyModel, to_file='happymodel.png', show_shapes = True)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值