多值离散问题:有的特征只有一个固定的取值,但是有的特征有不确定个数的取值,在tensorflow中特征输入又需要一样的长度。比如一个电影的类型可以有多种等,对电影类型进行嵌入时就会遇到问题。多个类型时,可以把多个类型的嵌入向量求和、求平均、根号等等。
一直不熟悉tensorflow,刚开始这个问题卡了我很久,还是记录一下吧。
1 tf.nn.embedding_lookup_sparse取平均
刚开始遇到这个问题,其实思路求平均等很简单,只不过自己不熟悉tensorflow,刚开始不知道如何自定义的处理,就按照网上搜到的这个方法。
TAG_SET = ["A","B","C","D","E"]#所有可能的取值
tags_str=["A|B|C",
"E|",
"C|D",
]#必须是List 每个元素是str
table = contrib.lookup.index_table_from_tensor(mapping=TAG_SET, default_value=-1)
split_tags = tf.string_split(tags_str,"|")
tags=tf.SparseTensor(indices=split_tags.indices,
values=table.lookup(split_tags.values),
dense_shape=split_tags