Theano 中的余弦相似度
Cosine similarity in Theano
使用 numpy 和 theano 计算余弦相似度的最简单方法是什么?
以 numpy 数组形式给出的向量。
我试过仅使用 numpy 来计算余弦相似度矩阵,但它的运行速度慢得令人抓狂。然而,我对 theano 绝对是新手,但假设这个库可以帮助我构建我的余弦相似度矩阵。
嗯,帮帮忙! :)
这是 post 关于 Python 中的余弦相似度:Cosine Similarity between 2 Number Lists。
我用 Numpy 和 Theano 重写了 this answer:
def cos_sim_numpy(v1, v2):
numerator = sum(v1*v2)
denominator = math.sqrt(sum(v1**2)*sum(v2**2))
return numerator/denominator
def compile_cos_sim_theano():
v1 = theano.tensor.vector(dtype=theano.config.floatX)
v2 = theano.tensor.vector(dtype=theano.config.floatX)
numerator = theano.tensor.sum(v1*v2)
denominator = theano.tensor.sqrt(theano.tensor.sum(v1**2)*theano.tensor.sum(v2**2))
return theano.function([v1, v2], numerator/denominator)
cos_sim_theano_fn = compile_cos_sim_theano()
v1 = numpy.asarray([3,45,7,2], dtype=np.float32)
v2 = numpy.asarray([2,54,13,15], dtype=np.float32)
print cos_sim_theano_fn(v1, v2), cos_sim_numpy(v1, v2)
Output: 0.972284251712 0.972284251712
使用 numpy 和 theano 计算余弦相似度的最简单方法是什么? 以 numpy 数组形式给出的向量。
我试过仅使用 numpy 来计算余弦相似度矩阵,但它的运行速度慢得令人抓狂。然而,我对 theano 绝对是新手,但假设这个库可以帮助我构建我的余弦相似度矩阵。
嗯,帮帮忙! :)
这是 post 关于 Python 中的余弦相似度:Cosine Similarity between 2 Number Lists。
我用 Numpy 和 Theano 重写了 this answer:
def cos_sim_numpy(v1, v2):
numerator = sum(v1*v2)
denominator = math.sqrt(sum(v1**2)*sum(v2**2))
return numerator/denominator
def compile_cos_sim_theano():
v1 = theano.tensor.vector(dtype=theano.config.floatX)
v2 = theano.tensor.vector(dtype=theano.config.floatX)
numerator = theano.tensor.sum(v1*v2)
denominator = theano.tensor.sqrt(theano.tensor.sum(v1**2)*theano.tensor.sum(v2**2))
return theano.function([v1, v2], numerator/denominator)
cos_sim_theano_fn = compile_cos_sim_theano()
v1 = numpy.asarray([3,45,7,2], dtype=np.float32)
v2 = numpy.asarray([2,54,13,15], dtype=np.float32)
print cos_sim_theano_fn(v1, v2), cos_sim_numpy(v1, v2)
Output: 0.972284251712 0.972284251712