keras模型

用keras如何读取现有的模型

  • 最近在做神经网络训练的时候,由于机器配置的不够·····或者说windows对tensorflow中的multiprocess支持不太好吧····总是训练到某一个epoch突然报没有足够的空间分配,可内存明明还是很富余的。
  • 于是我采取了训练一个epoch保存一次模型的方法,那么问题来了,如何有什么办法能在训练意外终止的时候继续接着上次的结果训练呢?
  • 我一般都习惯用saved_model来保存模型,可是当我用下面这条代码:
    model.load_weights(cfg.MODEL.pretrained_model)

    的时候,出现报错:

     File "h5py\_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
      File "h5py\_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
      File "h5py\h5f.pyx", line 88, in h5py.h5f.open
    OSError: Unable to open file (file signature not found)

    这么一看,好像是要什么h5?

  • 于是查看tensorflow官方文档,居然发现有好几个相似的用法???
    首先是tf.keras.Model中的

    load_weights(
        filepath, by_name=False, skip_mismatch=False
    )

    然后是tf.keras.models中的

    tf.keras.models.load_model(
        filepath, custom_objects=None, compile=True
    )

    还有angrytf.saved_model里的:

    tf.saved_model.load(
        export_dir, tags=None
    )

    对比一下,keras里的两个方法都要用h5文件,saved_model里的可以加载我现在保存的模型,但是官方有这么一段文字:



    Loading can be done with tf.saved_model.load(). However, since it is an API that is on the lower level (and hence has a wider range of use cases), it does not return a Keras model. Instead, it returns an object that contain functions that can be used to do inference. For example:
     



    saved_model不能拿来加载权重继续训练了········于是乎···又要改代码,训练时要用keras···save_weights保存权重到h5文件,才能用load_weights继续训练crying前面的又白训练了

  • 补充:其实官方也给了将save_model转换成kerasmodel的方法···用tensorflow_hub
    但是累了,不想搞了,我还是选择只改一行代码······


        留下评论吧,AnonymousUser

              没有登录的话是不能使用评论功能的哈。 去登录 去注册


评论列表
用户wzl, March 19, 2020, 7:27 p.m.

回复
用户wzl回复wzl,March 19, 2020, 7:27 p.m.

回复
用户17855593708, May 29, 2020, 12:06 a.m.
你是笨蛋
回复
用户wzl回复17855593708,May 29, 2020, 12:10 a.m.
笨蛋说谁?
回复
用户17855593708回复wzl,May 29, 2020, 12:11 a.m.
说你笨蛋
回复