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

时间:2018-06-23 02:33:26

标签: python tensorflow keras python-3.6

(我正在使用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(使用Model而非Sequential制成的Keras模型的结构?现在,我们只能减肥吗?

1 个答案:

答案 0 :(得分:1)

当然可以保存模型,您所有的示例都有一个空的模型,保存没有意义。 Keras的作者根本没有实现这种情况。

如果您使用非空模型进行测试,您会发现保存效果完美。我们每天都在使用它。