Keras官方文档学习(常见问题)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44593822/article/details/102777209

几乎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?

如果您在TensorFlowCNTK后端上运行,则如果检测到任何可用的GPU,您的代码将自动在GPU上运行。

What does "sample", "batch", "epoch" mean?

(“样本”,“批次”,“时期”是什么意思?)

以下是正确理解Keras所需了解和理解的一些常见定义:

  • Sample:数据集的一个元素。
  • 示例:一张图像是卷积网络中的样本
  • 示例:一个音频文件是语音识别模型的样本
  • Batch:一组N个样本。一批中的样品被独立,并行处理。如果进行训练,则批次只会对模型进行一次更新。
  • 批次通常近似于比单个输入更好的输入数据的分布。批次越大,近似值越好;但是,也确实,该批处理将花费更长的时间,并且仍然只会导致一次更新。为了进行推断(评估/预测),建议选择尽可能大的批次大小而不会占用内存(因为较大的批次通常会导致更快的评估/预测)。
  • Epoch:任意截止时间,通常定义为“一次遍历整个数据集”,用于将训练分为不同的阶段,这对日志记录和定期评估很有用。
  • 当使用Keras模型validation_datavalidation_split使用fitKeras模型的方法时,评估将在每个时期结束时进行。
  • 在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"

猜你喜欢

转载自blog.csdn.net/weixin_44593822/article/details/102777209