Python 层未生成错误,即使在tensorflow 2.0.0中的model.build()之后
参考文件一如下: 我真的很想运行模型;给它一些输入;从模型内部获取一些层输出Python 层未生成错误,即使在tensorflow 2.0.0中的model.build()之后,python,python-3.x,tensorflow,tensorflow2.0,Python,Python 3.x,Tensorflow,Tensorflow2.0,参考文件一如下: 我真的很想运行模型;给它一些输入;从模型内部获取一些层输出 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
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
这似乎是可行的:但距离我运行模型和获取一些层输出的目标还有很长的路要走。TF2.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 = tf.keras.models.load_model('h5_emb.hp5')
还需要使用model_load(),而不是saved_model.load(),从磁盘加载到内存。像这样:
tf.keras.models.save_model(model, "h5_emb.hp5", save_format="h5")
model = tf.keras.models.load_model('h5_emb.hp5')
另一种保存和加载的教程和文档方法返回了一个模型,该模型不适用于预测或摘要
这是tensorflow 2.0.0版
希望这能帮助别人