基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
来源:互联网 发布:linux系统字体中文乱码 编辑:程序博客网 时间:2024/04/29 19:14
http://blog.csdn.net/niuwei22007/article/details/49045909原地址可以查看更多文章
本文主要介绍一下Keras的问答部分,其实很简单,后边可能不会详细说到,提前凉一下,便于翻看。
Keras介绍:
Keras是一个极度简化、高度模块化的神经网络第三方库。基于Python+Theano开发,充分发挥了GPU和CPU操作。其开发目的是为了更快的做神经网络实验。适合前期的网络原型设计、支持卷积网络和反复性网络以及两者的结果、支持人工设计的其他网络、在GPU和CPU上运行能够无缝连接。
No.0 windows用户如何安装Keras框架?
用pip方式安装很简单。即打开cmd,输入pip install keras,然后等待安装完毕即可。会自动安装需要的组件。如果pip命令失败,则建议按照win7安装Theano详细教程去安装Python+Theano。然后再安装Keras即可。其他安装方式见这里。
No.1怎么保存Keras模型?
不推荐使用pickle或cPickle。
(1) 如果只保存模型结构,代码如下:
# save as JSONjson_string = model.to_json()# save as YAMLyaml_string = model.to_yaml()# model reconstruction from JSON:from keras.modelsimport model_from_jsonmodel = model_from_json(json_string) # model reconstruction from YAMLmodel =model_from_yaml(yaml_string)
(2) 如果需要保存数据:
model.save_weights('my_model_weights.h5')model.load_weights('my_model_weights.h5')
(3) 综合运用:
json_string = model.to_json()open('my_model_architecture.json','w').write(json_string)model.save_weights('my_model_weights.h5') model = model_from_json(open('my_model_architecture.json').read())model.load_weights('my_model_weights.h5')
No.2为什么训练损失比测试损失要大?
Keras有两种模型:训练和测试。规则化,比如Dropout和L1/L2,在测试时关闭了。
另外,训练损失是每一次训练batch的平均损失。模型因为在时刻变化,最开始的batch损失肯定要比最后的batches损失要高。另一方面,每一次epoch损失使用最后的epoch计算,因此返回的结果就比较小。
No.3如何将中间层的输出可视化?
通过Theano function的output。示例如下:
# with a Sequential modelget_3rd_layer_output =theano.function([model.layers[0].input], model.layers[3].get_output(train=False))layer_output =get_3rd_layer_output(X) # with a Graph modelget_conv_layer_output =theano.function([model.inputs[i].inputfor iin model.input_order],model.outputs['conv'].get_output(train=False), on_unused_input='ignore')conv_output = get_conv_output(input_data_dict)
No.4如何用Keras处理不适合存放在内存中的数据集?
Batch trainingusingmodel.train_on_batch(X, y)和model.test_on_batch(X, y)参考文档:modelsdocumentation。
You can also see batch training in action inour CIFAR10example.
No.5当验证损失不再继续降低时,如何中断训练?
用EarlyStopping回调函数,代码如下:
from keras.callbacksimport EarlyStoppingearly_stopping =EarlyStopping(monitor='val_loss', patience=2)model.fit(X, y, validation_split=0.2, callbacks=[early_stopping])
参考文档:callbacks documentation
No.6在训练时,数据会被随机打乱吗?
如果model.fit中的参数suffle=True时,会随机打算每一次epoch的数据。(默认打乱)
但是验证数据默认不会打乱。
No.7如何记录每一次epoch的训练/验证损失/准确度?
Model.fit函数会返回一个 History 回调,该回调有一个属性history包含一个封装有连续损失/准确的lists。代码如下:
hist = model.fit(X, y,validation_split=0.2)print(hist.history)
No.8如何让我的Keras脚本每次产生确定的数据?
在引入Kerans之前,引入numpy,并且用其random.seed(种子)产生一个随机数对象。这样在相同硬件的机器上运行时,每次产生的随机数的顺序都是一样的。
import numpyas npnp.random.seed(1234) # Keras imports start herefrom kerasimport ...
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
- (转) 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-02-Example
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-03-优化器
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-04-目标函数
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-05-模型
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-06-激活函数
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-07-初始化权值
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-08-规则化(规格化)
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-09-约束限制
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-10-回调
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-11-数据集
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-12-核心层
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-13-卷积层
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-14-递归层
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-15-Advanced Activation Layers
- UVa1025
- NYOJ-91阶乘之和
- 数据库的一点小总结
- 在raspberry通过PHP调用python中simplecv进行远程监控
- 安装双系统
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
- UVa437
- 日期操作类(Date、Calendar、DateFomat、SimpleDateFormat类)
- [UE]《Microinteractions》
- 网络各层设备
- bzoj1477: 青蛙的约会
- Ubuntu安装rime(记录)
- warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据警告
- 根据前序遍历和中序遍历树构造二叉树