tf.keras.models.load_model(model_path)
加载模型出错: ‘SparseTensorSpec’ object has no attribute ‘name’
我在tfrecord中使用了一个变长特征:
"pkgSeq": tf.io.VarLenFeature(tf.int64)
具体模型定义如下:
from tensorflow.keras import Model
class DNN2(Model):
...
@tf.function
def call(self, inputs, training=False):
seq_embed = tf.nn.embedding_lookup_sparse(self.item_embedding_table, inputs['pkgSeq'], None)
feature = tf.concat([userinfo_user_age,
...
seq_embed,
], axis=-1)
result = self.layer1(feature)
output = self.layer2(result)
return output
保存模型时,使用了两种方式对比测试:
model = DNN2()
# way 1
save_path = os.path.join(ckpt_dir, './model')
model.save(save_path, save_format='tf')
# way 2
save_path2 = os.path.join(ckpt_dir, './model2')
tf.saved_model.save(model, save_path2)
然后使用
(1)tf 自带方式
model = tf.saved_model.load(model_path)
两个路径都可以正常加载。
(2)
但使用 keras加载时,便会出错:‘SparseTensorSpec’ object has no attribute ‘name’。 我想知道是哪里有问题,以及如何解决。谢谢!!
model2 = tf.keras.models.load_model(model_path)