在训练之后和训练过程中都可以保存模型进度。 这意味着模型可以从中断的地方继续进行,避免了长时间的训练。 保存还意味着您可以共享模型,而其他人可以重新创建您的作品。 在发布研究模型和技术时,大多数机器学习从业者分享:

  • 创建模型的代码,以及
  • 模型的训练权重或参数

共享这些数据可帮助其他人了解模型的工作原理,并使用新数据自己尝试。

设定

我们将使用MNIST数据集来训练我们的模型,以演示如何保存权重。 为了加快这些演示运行,仅使用前1000个示例:

library(keras)mnist %  array_reshape(c(1000, 28 * 28))train_images %  array_reshape(c(1000, 28 * 28))test_images 

定义模型

让我们建立一个简单的模型,以演示如何保存和加载权重。

# Returns a short sequential modelcreate_model %    layer_dense(units = 512, activation = "relu", input_shape = 784) %>%    layer_dropout(0.2) %>%    layer_dense(units = 10, activation = "softmax")  model %>% compile(    optimizer = "adam",    loss = "sparse_categorical_crossentropy",    metrics = list("accuracy")  )  model}model % summary()

保存整个模型

保存Keras模型的习惯形式是保存为HDF5格式。

生成的文件包含权重值,模型的配置,甚至优化器的配置。 这使您可以保存模型并稍后从完全相同的状态恢复训练,而无需访问原始代码。

model % fit(train_images, train_labels, epochs = 5)model %>% save_model_hdf5("my_model.h5")

如果您只想保存权重,则可以将最后一行替换为

model %>% save_model_weights_hdf5("my_model_weights.h5")

现在从该文件重新创建模型:

new_model % summary()

在训练期间保存检查点

在训练期间和训练结束时自动保存检查点非常有用。这样,您可以使用受过训练的模型,而无需重新训练它,也可以在您离开的地方进行训练,以防训练过程中断。

callback_model_checkpoint是执行此任务的回调。

回调使用几个参数来配置检查点。默认情况下,save_weights_only设置为false,这意味着将保存完整的模型-包括体系结构和配置。然后,您可以按照上一段所述还原模型。

现在,让我们集中讨论仅保存和恢复权重。在以下代码段中,我们将save_weights_only设置为true,因此在还原时需要模型定义。

filepath参数可以包含命名的格式选项,例如:如果文件路径为权重。{epoch:02d}-{val_loss:.2f} .hdf5,则模型检查点将与时期号一起保存,文件名中的验证丢失。

保存的模型权重将再次为HDF5格式。

检查点回调用法

训练模型并将其传递给callback_model_checkpoint:

checkpoint_dir % fit(  train_images,  train_labels,  epochs = 10,   validation_data = list(test_images, test_labels),  callbacks = list(cp_callback)  # pass callback to training)

检查创建的文件:

list.files(checkpoint_dir)

创建一个新的未经训练的模型。 仅从权重还原模型时,必须具有与原始模型具有相同体系结构的模型。 由于它是相同的模型架构,因此尽管模型是不同的实例,我们仍可以共享权重。

现在重建一个新的,未经训练的模型,并在测试集上对其进行评估。 未经训练的模型将以机会级别(〜10%的准确性)执行:

fresh_model % evaluate(test_images, test_labels)cat('Test loss:', score$loss, '')cat('Test accuracy:', score$acc, '')

然后从最新的检查点(第10步)加载权重,然后重新评估:

fresh_model %>% load_model_weights_hdf5(  file.path(checkpoint_dir, "weights.10-0.42.hdf5"))score % evaluate(test_images, test_labels)cat('Test loss:', score$loss, '')cat('Test accuracy:', score$acc, '')

为了减少文件数量,您还可以在第n个时间段仅保存一次模型权重。 例如,

checkpoint_dir % fit(  train_images,  train_labels,  epochs = 10,   validation_data = list(test_images, test_labels),  callbacks = list(cp_callback)  # pass callback to training)list.files(checkpoint_dir)

另外,您也可以决定仅保存最佳模型,默认情况下,最佳模型定义为验证损失。 有关更多信息,请参见callback_model_checkpoint的文档。

checkpoint_dir % fit(  train_images,  train_labels,  epochs = 10,   validation_data = list(test_images, test_labels),  callbacks = list(cp_callback)  # pass callback to training)

在这种情况下,权重在第6和第7个时期均已保存,但验证损失没有改善。

input date保存值_涛哥文集(36):R keras保存和还原模型相关推荐

  1. python 卡方分布值_饱和模型与偏差计算R方与p值

    引言:logistic回归中,我们了解到R2和P值的计算方法.但josh starmer老师指出,广义线性模型中R2更常见的计算方法还包括饱和模型(参考:Logistic回归:R2与P-value的计 ...

  2. mysql date 默认值_通过Oracle DB了解MySQL

    Oracle数据库是业界的翘楚,各行各业拥有大量的Oracle DB的DBA,本文尝试通过将Oracle与MySQL数据库的架构.安全.模式对象.数据类型及数据存储进行对比,以方便熟悉Oracle数据 ...

  3. formdata.append加多个值_呆哥数学每日一题 —— 多个最值函数混合向量

    如果想要获取往期每日一题电子版,可以加我微信:daigemath166,备注:知乎 每日一题 呆哥解析: 这是一道多个最值函数混合向量的问题 首先看到这种一大堆条件的题目,我们先不要觉得麻烦,先把可以 ...

  4. ios 获取一个枚举的所有值_凯哥带你从零学大数据系列之Java篇---第十一章:枚举...

    温馨提示:如果想学扎实,一定要从头开始看凯哥的一系列文章(凯哥带你从零学大数据系列),千万不要从中间的某个部分开始看,知识前后是有很大关联,否则学习效果会打折扣. 系列文章第一篇是拥抱大数据:凯哥带你 ...

  5. 用户dsn保存位置‘_苹果iOS 13.6终于能保存文章阅读进度了 朋友都等秃了

    几天前,iOS 13.6 Beta 2和iPadOS 13.6 Beta 2发布,据外媒iPhoneHacks消息,苹果此次通过新软件更新对Apple News应用程序进行了改进,更新后的iOS 13 ...

  6. 单片机断电后不保存程序_法兰购买到货后直接入库保存?不不不,还需要做一件事情...

    法兰在管道工程中是较为常见的零件.在管道工程中,法兰主要用于管道的连接,在需要连接的管道,各安装一片法兰盘,低压管道可以使用丝接法兰,4公斤以上压力的使用焊合法兰:低压小直径有丝接法兰,高压和低压大直 ...

  7. safari保存视频_如何使用Safari的“阅读列表”保存文章供以后使用

    safari保存视频 We're fond of any app that will allow you to save a webpage to read later, and there are ...

  8. python保存灰度图像_如何使用matplotlib/numpy将数组保存为灰度图像?

    我正在尝试将一个尺寸为128x128像素的numpy数组保存为灰度图像. 我只是简单地认为pyplot.imsave函数可以完成这项工作,但事实并非如此,它以某种方式将我的数组转换为RGB图像. 我试 ...

  9. python中如何保存文件_如何在python中处理后保存文件?

    我需要在处理后将所有文章放入同一文件夹,或者创建一个CSV文件.from bs4 import BeautifulSoup import glob import os, os.path path = ...

最新文章

  1. IBM AI辩手对战世界级人类辩手,炒作还是秀肌肉?
  2. MySQL8.0.16主从同步
  3. 计算机组成原理实用教程课后答案,王万生《计算机组成原理实用教程》课后习题答案..doc...
  4. 12.结账流程(Checkout Process)
  5. 第二阶段团队冲刺02
  6. Gensim进阶教程
  7. 2020最新 程序员数学(基础+进阶)
  8. AspnetPager
  9. 八皇后问题(Queen8)思路分析+源码
  10. 联想拯救者笔记本安装ubuntu系统不能正常关机
  11. 浅谈border-radius对border的影响
  12. 快速提升自身思维能力的方法总结
  13. [计算机]防止电脑进入锁屏
  14. linux小红帽实验心得,小红帽读书心得(精选4篇)
  15. 修改数据文件patch工具
  16. 关于.m4s音视频文件合成.mp4文件的方法
  17. Clustering and Exploring Search Results using Timeline Constructions (paper2)
  18. Numpy库中einsum函数用法
  19. MySQL常用关键字
  20. JAVA学习---从头开始WEEK03

热门文章

  1. HDFS的Shell客户端操作
  2. javaSE各阶段练习题--流程控制
  3. 2019秋季PAT甲级考试心得
  4. dart系列之:dart代码规范实践指南
  5. python打包exe不弹窗_Pyinstaller 打包exe教程及问题解决
  6. JWT (Json Web Token)教程
  7. 彻底解决网络爬虫遇到的中文乱码问题
  8. UnpooledHeadByteBuf源码分析
  9. AbstractReferenceCountedByteBuf源码分析
  10. 14行代码AC——1017 A除以B (20分)(大数运算+讲解)