稍微整理一下在努力学(kan)习(dong)Keras的Hello World程序的一些参考文档和思考。
安装
安装的时候需要翻墙
Keras中文文档 / Keras安装和配置指南(Windows)
http://keras-cn.readthedocs.io/en/latest/getting_started/keras_windows/
对于Keras的介绍很详细(就是看不懂)
在这一步要是安装目录存在中文的话会报错
解决方法参考
http://blog.youkuaiyun.com/all_over_servlet/article/details/45112221
基本概念
我能看懂的最简单的概念
卷积层
convout1=Convolution2D(nb_filters[0], kernel_size[0], kernel_size[1],
border_mode='valid',
input_shape=input_shape)
model.add(convout1)
我们是如何识别出一个数字的呢?当然是因为这个数字不同于别的数字的特点,对于像MNist这样的数据,特点自然来自于明暗交界的地方。一片黑的区域不会告诉我们任何有用的信息,同样地,一片白的区域也不会告诉我们任何有用的信息。同样,数字的笔画粗细对我们的识别也没有太大的作用。这些都是我们识别过程中会遇到的问题,而其中临近像素之间有规律地出现相似的状态就是局部相关性。
那么如何消除这些局部相关性呢,使我们的特征变得少而精呢?卷积就是一种很好地方法。它只考虑附近一块区域的内容,分析这一小片区域的特点,这样针对小区域的算法可以很容易地分析出区域内的内容是否相似。如果再加上Pooling层(可以理解为汇集,聚集的意思,后面不做翻译),从附近的卷积结果中再采样选择一些高价值的合成信息,丢弃一些重复低质量的合成信息,就可以做到对特征信息的进一步处理过滤,让特征向少而精的方向前进。
作者:冯超
链接:https://zhuanlan.zhihu.com/p/21609512
来源:知乎
model.add(Activation("sigmoid"))
激活函数,通过函数把数据的特征保留并映射出来,加入非线性因素,线性的模型可能无法很好地表达关联。
池化层
model.add(MaxPooling2D(pool_size=pool_size))
对于卷积层输出map的每个不重叠n*n区域,选取每个区域中的最大值(max-pooling)或是平均值(mean-pooling),用这个值代表这个区域的值
- 增强鲁棒性
- 降维
全连接层
model.add(Dense(84))
Keras中的全连接层称为Dense
全连接层直接将前一层的输出展开为一维向量
Drop out
model.add(Dropout(0.5))
在训练过程中以一定概率1-p将隐含层节点的输出值清0,而用bp更新权值时,不再更新与该节点相连的权值,是一种预防过学习的机制
模拟人脑,神经元并不是完全连接的(捂脸)
还是