用Keras搭建, 编译和训练神经网络时,常见问题
来源:互联网 发布:qt5 socket编程 编辑:程序博客网 时间:2024/05/17 07:50
用Keras搭建神经网络,编译和训练时,常见问题:
No.1怎么保存Keras模型?
不推荐使用pickle或cPickle。
(1) 如果只保存模型结构,代码如下:
# save as JSON
json_string = model.to_json()
# save as YAML
yaml_string = model.to_yaml()
# model reconstruction from JSON:
from keras.modelsimport model_from_json
model = model_from_json(json_string)
# model reconstruction from YAML
model =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 model
- get_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 model
- get_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 seebatch training in action inour CIFAR10example.
No.5当验证损失不再继续降低时,如何中断训练?
用EarlyStopping回调函数,代码如下:
[python] view plain copy
- from keras.callbacksimport EarlyStopping
- early_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。代码如下:
[python] view plain copy
- hist = model.fit(X, y,validation_split=0.2)
- print(hist.history)
各种精确度和损失的区别:
训练精确度
验证精确度
训练损失
验证损失
测试损失
No.8如何让我的Keras脚本每次产生确定的数据?
在引入Kerans之前,引入numpy,并且用其random.seed(种子)产生一个随机数对象。这样在相同硬件的机器上运行时,每次产生的随机数的顺序都是一样的。
[python] view plain copy
- import numpy as np
- np.random.seed(1234)
- # Keras imports start here
- from keras import ...
N0.9 在训练过程中,batch_size, nb_epoch分别什么意思
No.10 测试过程中,evaluate实现测试的机制是什么?返回值的大小反应了什么?
score = model.evaluate(x_test, y_test,batch_size=20)
No.11 预测过程后,如何绘制误差曲线?如何绘制拟合曲线?
参考网站:http://blog.csdn.net/niuwei22007/article/details/49045909
No.12 ValueError: I/O operation on closed file
将fit 函数中的verbose=0: model.fit(X_train, y_train, batch_size=BATCH_SIZE, nb_epoch=1, verbose=0,
validation_data=(X_val, y_val))
- 用Keras搭建, 编译和训练神经网络时,常见问题
- 用Keras搭建, 编译和训练神经网络时,常见问题
- keras神经网络常见问题-mse, nmse
- Keras:2.2搭建分类神经网络
- keras lastm循环神经网络训练验证测试
- 训练的神经网络的常见问题
- keras —— 30秒搭建神经网络
- keras入门 ---在小数据集上训练神经网络
- 第八期 使用 Keras 训练神经网络 《显卡就是开发板》
- Keras框架神经网络算法训练MNIST分类准确率(实验)
- Loss和神经网络训练
- Keras 常见问题
- 对比学习用 Keras 搭建 CNN RNN 等常用神经网络和其后端切换(Theano和TensorFlow)
- 【神经网络与深度学习】在Windows8.1上用VS2013编译Caffe并训练和分类自己的图片
- Keras学习笔记01——快速搭建神经网络结构
- 对比学习用 Keras 搭建 CNN RNN 等常用神经网络
- 利用tensorflow keras搭建一个简单的卷积神经网络
- 【机器学习】windows GPU版keras神经网络库编译
- 313. Super Ugly Number
- JQuery对JSON数组的操作
- c源文件到执行文件的编译过程
- matlab2014a代码示例 逻辑运算符不等于
- 恶意代码防范-熟悉给定工具
- 用Keras搭建, 编译和训练神经网络时,常见问题
- PTA-电话聊天狂人(分离链接法)
- Latex公式内行间距,字体大小控制
- java入门之main
- 新浪云的使用
- 【dotnet跨平台】微软昨天宣布正式发布.NET Core RC2和.NET Core SDK Preview 1,还有Entity Framework Core RC2
- 用node runAction实现定时器
- epoll讲解--转自”知乎“
- nginx模块开发之一