图层未构建错误,即使在 tensorflow 2.0.0 中 model.build() 之后
Layer not built error, even after model.build() in tensorflow 2.0.0
我正在关注的参考资料:
https://www.tensorflow.org/api_docs/python/tf/keras/Model#save
我真的很想运行这个模特;给它一些输入;获取来自模型内部的一些层输出。
model = tf.keras.models.load_model('emb_movielens100k_all_cols_dec122019')
input_shape = (None, 10)
model.build(input_shape)
到目前为止一切都很好;没有错误没有警告。
model.summary()
ValueError: You tried to call `count_params` on IL, but the layer isn't built. You can build it manually via: `IL.build(batch_input_shape)`
如何修复?
以下代码无法修复它:
IL.build(input_shape) # no
model.layer-0.build(input_shape) # no
这似乎可行:但这距离我 运行 构建模型并获取一些层输出的目标还有很长的路要走。 TF 2.0.0 有没有简单的方法?
layer1 = model.get_layer(index=1)
这会引发错误:
model = tf.saved_model.load('emb_movielens100k_all_cols_dec122019')
input_shape = (None, 10)
model.build(input_shape) #AttributeError: '_UserObject' object has no attribute 'build'
修复是使用 save_model(),而不是 model.save()。还需要在保存期间使用 save_format="h5",而不是默认格式。像这样:
tf.keras.models.save_model(model, "h5_emb.hp5", save_format="h5")
还需要使用 model_load() 而不是 saved_model.load() 从磁盘加载到内存。像这样:
model = tf.keras.models.load_model('h5_emb.hp5')
执行保存和加载的其他教程和文档方法返回的模型不适用于预测或摘要。
这是 tensorflow 版本 2.0.0。
希望这对其他人有帮助。
我正在关注的参考资料: https://www.tensorflow.org/api_docs/python/tf/keras/Model#save 我真的很想运行这个模特;给它一些输入;获取来自模型内部的一些层输出。
model = tf.keras.models.load_model('emb_movielens100k_all_cols_dec122019')
input_shape = (None, 10)
model.build(input_shape)
到目前为止一切都很好;没有错误没有警告。
model.summary()
ValueError: You tried to call `count_params` on IL, but the layer isn't built. You can build it manually via: `IL.build(batch_input_shape)`
如何修复?
以下代码无法修复它:
IL.build(input_shape) # no
model.layer-0.build(input_shape) # no
这似乎可行:但这距离我 运行 构建模型并获取一些层输出的目标还有很长的路要走。 TF 2.0.0 有没有简单的方法?
layer1 = model.get_layer(index=1)
这会引发错误:
model = tf.saved_model.load('emb_movielens100k_all_cols_dec122019')
input_shape = (None, 10)
model.build(input_shape) #AttributeError: '_UserObject' object has no attribute 'build'
修复是使用 save_model(),而不是 model.save()。还需要在保存期间使用 save_format="h5",而不是默认格式。像这样:
tf.keras.models.save_model(model, "h5_emb.hp5", save_format="h5")
还需要使用 model_load() 而不是 saved_model.load() 从磁盘加载到内存。像这样:
model = tf.keras.models.load_model('h5_emb.hp5')
执行保存和加载的其他教程和文档方法返回的模型不适用于预测或摘要。
这是 tensorflow 版本 2.0.0。
希望这对其他人有帮助。