(我正在使用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
显示在.save
和get_config
中(后者也被to_json
和to_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模型的结构?现在,我们只能减肥吗?
答案 0 :(得分:1)
当然可以保存模型,您所有的示例都有一个空的模型,保存没有意义。 Keras的作者根本没有实现这种情况。
如果您使用非空模型进行测试,您会发现保存效果完美。我们每天都在使用它。