简易的深度学习框架Keras代码解析与应用

本文介绍了Keras这一深度学习框架的简易性,强调其官方文档对初学者的帮助。通过详细讲解如何构建卷积神经网络,包括激活函数、Dropout层的使用,以及训练和测试模型的步骤,展示了Keras的易用性。代码示例展示了从网络初始化到训练和保存模型的过程,适合快速入门。
摘要由CSDN通过智能技术生成

再来一波论文周边吧——是关于代码

总体来讲keras这个深度学习框架真的很“简易”,它体现在可参考的文档写的比较详细,不像caffe,装完以后都得靠技术博客,keras有它自己的官方文档(不过是英文的),这给初学者提供了很大的学习空间。
这个文档必须要强推!英文nice的可以直接看文档,我这篇文章就是用中文来讲这个事儿。

http://keras.io/


Keras官方文档

首先要明确一点:我没学过Python,写代码都是需要什么百度什么的,所以有时候代码会比较冗余,可能一句话就能搞定的能写很多~


论文引用——3.2 测试平台

项目代码是在Windows 7上运行的,主要用到的Matlab R2013a和Python,其中Matlab用于patch的分割和预处理,卷积神经网络搭建用到了根植于Python和Theano的深度学习框架Keras。Keras是基于Theano的一个深度学习框架,它的设计参考了Torch,用Python语言编写,是一个高度模块化的神经网络库,支持GPU和CPU,用起来特别简单,适合快速开发。


程序代码下载:[ Github ]

等发表了就立刻放到Github :-)


参考资料


1. 直接上卷积神经网络构建的主函数

def create_model(data):

    model = Sequential()

    model.add(Convolution2D(64, 5, 5, border_mode='valid', input_shape=data.shape[-3:])) 
    model.add(Activation('relu'))
    model.add(Dropout(0.5))

    model.add(Convolution2D(64, 5, 5, border_mode='valid'))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.5))

    model.add(Convolution2D(32, 3, 3, border_mode='valid')) 
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))

    model.add(Convolution2D(32, 3, 3, border_mode='valid')) 
    model.add(Activation('relu'))
    model.add(Dropout(0.5))

    model.add(Flatten())
    model.add(Dense(512, init='normal'))
    model.add(Activation('relu'))
    model.add(Dropout(0.5))

    model.add(Dense(LABELTYPE, init='normal'))
    model.add(Activation('softmax'))

    sgd = SGD(l2=0.0, lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
    model.compile(loss='categorical_crossentropy', optimizer=sgd, class_mode="categorical")

    return model

这个函数相当的简洁清楚了,输入训练集,输出一个空的神经网络,其实就是卷积神经网络的初始化。model = Sequential()是给神经网络起了头,后面的model.add()是一直加层,像搭积木一样,要什么加什么,卷积神经网络有两种类型的层:1)卷积,2)降采样,对应到代码上是:

model.add(Convolution2D(64, 5, 5, border_mode='valid'))
# 加一个卷积层,卷积个数64,卷积尺寸5*5

model.add(MaxPooling2D(pool_size=(2, 2)))
# 加一个降采样层,采样窗口尺寸2*2

1.1 激活函数

注意:每个卷积层后面要加一个激活函数,就是在教科书上说的这个部分


它可以将卷积后的结果控制在某一个数值范围内,如0~1,-1~1等等,不会让每次卷积完的数值相差悬殊

对应到代码上是这句:

model.add(Activation('relu'))

这个激活函数(Activation)keras提供了很多备选的,我这儿用的是ReLU这个,其他还有

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值