版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
几乎0基础直接看官方文档还是有点吃力的~
我应该如何引用Keras?
如果它有助于您的研究,请在您的出版物中引用Keras。这是一个BibTeX条目示例:
@misc{chollet2015keras,
title={Keras},
author={Chollet, Fran\c{c}ois and others},
year={2015},
howpublished={\url{https://keras.io}},
}
如何在GPU上运行Keras?
如果您在TensorFlow或CNTK后端上运行,则如果检测到任何可用的GPU,您的代码将自动在GPU上运行。
What does "sample", "batch", "epoch" mean?
(“样本”,“批次”,“时期”是什么意思?)
以下是正确理解Keras所需了解和理解的一些常见定义:
- Sample:数据集的一个元素。
- 示例:一张图像是卷积网络中的样本
- 示例:一个音频文件是语音识别模型的样本
- Batch:一组N个样本。一批中的样品被独立,并行处理。如果进行训练,则批次只会对模型进行一次更新。
- 甲批次通常近似于比单个输入更好的输入数据的分布。批次越大,近似值越好;但是,也确实,该批处理将花费更长的时间,并且仍然只会导致一次更新。为了进行推断(评估/预测),建议选择尽可能大的批次大小而不会占用内存(因为较大的批次通常会导致更快的评估/预测)。
- Epoch:任意截止时间,通常定义为“一次遍历整个数据集”,用于将训练分为不同的阶段,这对日志记录和定期评估很有用。
- 当使用Keras模型
validation_data
或validation_split
使用fit
Keras模型的方法时,评估将在每个时期结束时进行。 - 在Keras中,可以添加专门设计用于在epoch末尾运行的回调的功能。这些示例包括学习率更改和模型检查点(保存)。
如何保存Keras模型?
保存/加载整个模型(架构+权重+优化器状态)
不建议使用pickle或cPickle保存Keras模型。
您可以model.save(filepath)
用来将Keras模型保存到单个HDF5文件中,该文件包含:
- 模型的架构,从而可以重新创建模型
- 模型的权重
- 训练配置(损失,优化器)
- 优化程序的状态,从而可以从您上次中断的地方继续正确地进行训练。
然后,您可以keras.models.load_model(filepath)
用来重新实例化模型。 load_model
还将负责使用保存的训练配置来编译模型(除非从未首先编译过模型)。
例:
from keras.models import load_model
model.save('my_model.h5') # creates a HDF5 file 'my_model.h5'
del model # deletes the existing model
# returns a compiled model
# identical to the previous one
model = load_model('my_model.h5')
仅保存/加载模型的架构
如果只需要保存模型的体系结构,而不是模型的权重或训练配置,则可以执行以下操作:
# save as JSON
json_string = model.to_json()
# save as YAML
yaml_string = model.to_yaml()
生成的JSON / YAML文件是人类可读的,并且可以根据需要进行手动编辑。
然后,您可以根据以下数据构建新的模型:
# model reconstruction from JSON:
from keras.models import model_from_json
model = model_from_json(json_string)
# model reconstruction from YAML:
from keras.models import model_from_yaml
model = model_from_yaml(yaml_string)
仅保存/加载模型的权重
如果需要保存模型的权重,则可以在HDF5中使用以下代码进行保存:
model.save_weights('my_model_weights.h5')
假设您有用于实例化模型的代码,然后可以将保存的权重加载到具有相同架构的模型中:
model.load_weights('my_model_weights.h5')
如何记录每个时期的训练/验证损失/准确性?
该model.fit
方法返回一个History
回调,该回调具有一个history
包含连续损失列表和其他度量的属性。
hist = model.fit(x, y, validation_split=0.2)
print(hist.history)
如何从顺序模型中删除图层?
您可以通过调用来删除顺序模型中最后添加的图层.pop()
:
model = Sequential()
model.add(Dense(32, activation='relu', input_dim=784))
model.add(Dense(32, activation='relu'))
print(len(model.layers)) # "2"
model.pop()
print(len(model.layers)) # "1"