版本信息:TensorFlow2.7调用deepmatch库,实现youtubeDNN模型训练。
model.__setattr__("item_embedding",
get_item_embedding(pooling_item_embedding_weight, item_features[item_feature_name]))
出现如下错误:
TypeError: Could not build a TypeSpec for KerasTensor(type_spec=TensorSpec(shape=(None, 64), dtype=tf.float32, name=None), name='tf.compat.v1.squeeze/Squeeze:0', description="created by layer 'tf.compat.v1.squeeze'") of unsupported type <class 'keras.engine.keras_tensor.KerasTensor'>.
这主要是版本兼容问题,tf2.3可以用,但是在tf2.7出现问题,适配方法如下:
将原来的get_item_embedding拆开就可以了,即:
def get_item_embedding_v2(item_embedding, item_input_layer):
item_out = tf.gather(item_embedding, item_input_layer)
return Lambda(lambda x: tf.squeeze(x, 1))(item_out)
程序完美运行通过。