最近对tensorflow日渐失望,不通版本不通模块之间的不兼容问题实在操蛋,导致自己都不知道算法运行的效果差是idea不行的原因还是tensorflow未知bug的原因。
所以,现在倾向于,比较简单的模块,或者轮子,能尽量自己实现就自己实现吧。除了避免未知的bug之外,还能为自己的需求量身定制。自己还能知根知底,避免盲目崇拜。
自己正处在远离tensorflow的边缘。
直接上代码吧:
def tf_cosine_distance(self, tensor1,tensor2):
"""
consine相似度:用两个向量的夹角判断两个向量的相似度,夹角越小,相似度越高,得到的consine相似度数值越大
数值范围[-1,1],数值越大越相似。
:param tensor1:
:param tensor2:
:return:
"""
#把张量拉成矢量,这是我自己的应用需求
tensor1 = tf.reshape(tensor1,shape=(1,-1))
tensor2 = tf.reshape(tensor2, shape=(1, -1))
# 求模长
tensor1_norm = tf.sqrt(tf.reduce_sum(tf.square(tensor1)))
tensor2_norm = tf.sqrt(tf.reduce_sum(tf.square(tensor2)))
# 内积
tensor1_tensor2 = tf.reduce_sum(tf.multiply(tensor1,tensor2))
cosin = tensor1_tensor2/(tensor1_norm*tensor2_norm)
return cosin
博主分享了对TensorFlow的失望经历,转而选择简单模块和自定义实现,通过实例展示了如何使用自己的代码计算余弦相似度。
1万+

被折叠的 条评论
为什么被折叠?



