python 余弦距离_距离最小余弦

我有一个简单和工作的多层感知器在Theano,有1个隐藏层和1个回归层,有2个输出。成本函数定义为均方误差函数。然而,在学习过程中,我现在想最小化两个向量之间的余弦距离,所以我想用余弦距离作为代价函数。下面是我当前实现的一些相关部分。在import theano

import theano.tensor as T

class RegressionLayer(object):

def __init__(self, input, n_in, n_out, W=None, b=None):

# rest of __init__ left out for brevity

def mse(self, y):

return T.mean(T.sqr(y - self.y_pred))

def cos(self, y):

return 1. - (T.dot(y,self.y_pred) / (T.sqrt(T.sum(T.sqr(y)) * T.sum(T.sqr(self.y_pred)))))

如果将cost函数从mse(y)更改为cos(y),则会出现以下错误:

^{pr2}$

我不明白为什么成本(函数)不是标量的。只是为了测试我试过:def cos(self, y):

T.sum(1. - (T.dot(y,self.y_pred) / (T.sqrt(T.sum(T.sqr(y)) * T.sum(T.sqr(self.y_pred))))))

然后模型就建立起来了,但是我在训练中得到了一个尺寸不匹配的问题。在ValueError: dimension mismatch in args to gemm (1,2)x(1,2)->(1,2)

我想问题是我看不出余弦距离函数和我的中误差函数有什么不同。我错过了什么?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值