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

首先要明确一点:我没学过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 激活函数
注意:每个卷积层后面要加一个激活函数,就是在教科书上说的这个部分

对应到代码上是这句:
model.add(Activation('relu'))
这个激活函数(Activation)keras提供了很多备选的,我这儿用的是ReLU这个,其他还有