首页 文章

Keras和Tensorflow:保存非顺序模型权重

提问于
浏览
2

(我正在使用Tensorflow 1.8.0 ......)

documentation from Keras on how to save a model提到保存顺序模型与从功能API创建的模型之间没有区别 . 但是,以下所有代码块都会失败:

import tensorflow as tf
net = tf.keras.models.Model()
net.save('file')

要么

import tensorflow as tf
net = tf.keras.models.Model()
print(net.to_json())

要么

import tensorflow as tf
net = tf.keras.models.Model()
print(net.to_yaml())

要么

import tensorflow as tf
net = tf.keras.models.Model()
print(net.get_config())

他们举起了一个 NotImplementedError . 在Keras模块中,相关的线路是

if not self._is_graph_network:
  raise NotImplementedError

它显示在 .saveget_config (后者也被 to_jsonto_yaml 调用 .

唯一可行的是以下内容

import tensorflow as tf
net = tf.keras.models.Model()
net.save_weights('file')

在这种情况下,权重成功保存,可以使用 net.load_weights 成功加载 .

但是,将上述代码块的第二行 net = tf.keras.models.Model() 替换为 net = tf.keras.models.Sequential() ,使net成为顺序模型,允许上述所有内容工作 .

是否真的不可能保存使用功能API制作的Keras模型的结构(使用 Model 而不是 Sequential )?现在,我们只能减肥吗?

1 回答

  • 1

    当然可以保存模型,你的所有例子都有一个空模型,没有任何意义可以保存 . Keras的作者根本没有实现这种情况 .

    如果您使用非空模型进行测试,您将看到保存工作完美 . 我们每天都在使用它 .

相关问题