11 学习笔记

Keras是一个极度简化、高度模块化的神经网络第三方库。基于Python+Tensorflow开发,充分发挥了GPU和CPU操作。其开发目的是为了更快的做神经网络实验。适合前期的网络原型设计、支持卷积网络和反复性网络以及两者的结果、支持人工设计的其他网络、在GPU和CPU上运行能够无缝连接。

0. windows用户如何安装Keras框架?

用pip方式安装很简单。即打开cmd,输入pip install keras,然后等待安装完毕即可。会自动安装需要的组件。

1. 怎么保存Keras模型?

(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')  

2. 为什么训练损失比测试损失要大?

Keras有两种模型:训练和测试。规则化,比如Dropout和L1/L2,在测试时关闭了。
另外,训练损失是每一次训练batch的平均损失。模型因为在时刻变化,最开始的batch损失肯定要比最后的batches损失要高。另一方面,每一次epoch损失使用最后的epoch计算,因此返回的结果就比较小。

3 如何用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.

4 当验证损失不再继续降低时,如何中断训练?

用EarlyStopping回调函数,代码如下:

from keras.callbacksimport EarlyStopping  
early_stopping =EarlyStopping(monitor='val_loss', patience=2)  
model.fit(X, y, validation_split=0.2, callbacks=[early_stopping])  

5 在训练时,数据会被随机打乱吗?

如果model.fit中的参数suffle=True时,会随机打算每一次epoch的数据。(默认打乱)
但是验证数据默认不会打乱。

6 如何记录每一次epoch的训练/验证损失/准确度?

Model.fit函数会返回一个 History 回调,该回调有一个属性history包含一个封装有连续损失/准确的lists。代码如下:

hist = model.fit(X, y,validation_split=0.2)  
print(hist.history)  

7 如何让我的Keras脚本每次产生确定的数据?

在引入Kerans之前,引入numpy,并且用其random.seed(种子)产生一个随机数对象。这样在相同硬件的机器上运行时,每次产生的随机数的顺序都是一样的。

import numpyas np  
np.random.seed(1234)  
   
# Keras imports start here  
from kerasimport ... 

原文地址

你可能感兴趣的:(11 学习笔记)