赞
踩
Keras: 基于 Python 的深度学习库(这份学习资料是学习的老师上课的ppt,感谢张老师)
一、Keras关键词
中文官网:https://keras.io/zh/
1、Keras由纯Python编写,这意味着它的源代码简单易懂,你可以随时进去看看它都做了什么,怎么做的。并且,当你需要修改源代码的时候,大胆修改就可以了,它会立刻生效。 尽管Python的运行效率要低于C++,但Keras只是Tensorflow和Theano的包装而已,这层包装的运行代价是很小的。
2、“先确定符号以及符号之间的计算关系,然后才放数据进去计算”的办法,就是符号式编程。当声明a和b时,它们里面是空的。当确立z=a+b的计算关系时,a,b和z仍然是空的,只有当真的把数据放入a和b了,程序才开始做计算。
3、Keras事实上是一个基于Theano和Tensorflow上的一个包装,所谓站在巨人的肩膀上也不外如是了。 因为Theano和Tensorflow都是符号主义的东西(下面讲再说这是啥),因此Keras自然也是符号主义的。
4、Keras是一款高度模块化的框架,使用它搭建网络和训练网络将会非常容易,如果你需要深入模型中控制细节,通常使用Keras提供的一些函数就可以了,很少需要深入到Tensorflow或Theano那一层。因此,Keras适合于快速原型生成,如果你经常需要很快的实现一下自己的idea,Keras会是一个不错的选择。
5、另外,Keras的预训练模型库也在逐步建设,目前有VGG-16,VGG-19,resnet50,Inceptionv3四种预训练好的模型供大家使用。
参与符号运算的那些变量统一称作张量。张量是矩阵的进一步推广。
建立一个从张量到张量的映射函数,再放入真实数据进行计算。
对深度学习而言,这个“映射函数”就是一个神经网络,而神经网络中的每个层自然也都是从张量到张量的映射。
上面的三个模块是Keras最为要紧和核心的三块内容,搭建一个神经网络,就只用上面的内容即可。注意的是,backend虽然很重要,但其内容多而杂,大部分内容都是被其他keras模块调用,而不是被用户直接使用。所以它不是新手马上就应该学的,初学Keras不妨先将backend放一旁,从model和layers学起。
卷积层、递归神经网络层、全连接层、激活层……等等
预定义的回调函数中CheckModelpoint,History和EarlyStopping都是比较重要和常用的。其中CheckPoint用于保存模型,History记录了训练和测试的信息,EarlyStopping用于在已经收敛时提前结束训练。回调函数LearningRateScheduler支持按照用户的策略调整学习率。值得注意的是,History是模型训练函数fit的返回值,也就是说即使你没有使用任何回调函数,找一个变量接住model.fit(),还是能得到不少训练过程中的有用信息。
十一、调试分析和使用网络,处理数据的模块
十二、常用数据集的模块
十三、与scikit-learn联动机制
十四、构建一个深度模型的四大要素:
十五、举例:
- from keras.models import Sequential # Sequential 模型
-
- from keras.layers import Dense, Activation
-
- from keras.optimizers import SGD
-
-
-
- model = Sequential()
-
- # 简单用.add()堆积模型
-
- model.add(Dense(output_dim=64, input_dim=100))
-
- model.add(Activation("relu"))
-
- model.add(Dense(output_dim=10))
-
- model.add(Activation("softmax"))
-
-
-
- # 完成模型构建后使用.compile配置学习过程
-
- model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
-
- # 批量在训练数据上迭代
-
- model.fit(X_train, Y_train, nb_epoch=5, batch_size=32)
-
- # 评估模型
-
- loss = model.evaluate(X_test, Y_test, batch_size=32)
-
- # 或者对新数据进行预测
-
- Classes = model.predict(x_test,batch_size_size=128)
应用:案例一:线性回归 案例二:手写数字识别
十六、目前流行的梯度下降方法
在罚函数的等高线图中,优化器的位置随时间的变化情况。注意到,Adagrad、 Adadelta 及 RMSprop 法几乎立刻就找到了正确前进方向并以相似的速度很快收敛。而动量法和 NAG 法,则找错了方向,如图所示,让小球沿着梯度下降的方向前进。但 NAG 法能够很快改正它的方向向最小指出前进,因为他能够往前看并对前面的情况做出响应。
展现了各算法在鞍点附近的表现。如上面所说,这对对于 SGD 法、动量法及 NAG 法制造了一个难题。他们很难打破」对称性「带来的壁垒,尽管最后两者设法逃脱了鞍点。而 Adagrad 法、RMSprop 法及 Adadelta 法都能快速的沿着负斜率的方向前进。
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。