python 余弦距離 距離最小余弦

2021-10-11 12:29:13 字數 860 閱讀 7138

我有乙個簡單和工作的多層感知器在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),則會出現以下錯誤:

^$我不明白為什麼成本(函式)不是標量的。只是為了測試我試過: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)

我想問題是我看不出余弦距離函式和我的中誤差函式有什麼不同。我錯過了什麼?在

Python 歐氏距離和余弦距離

一 歐幾里得距離 euclidean distance 歐氏距離是最常見的距離度量,衡量的是多維空間中各個點之間的絕對距離。公式如下 因為計算是基於各維度特徵的絕對數值,所以歐氏度量需要保證各維度指標在相同的刻度級別,比如對身高 cm 和體重 kg 兩個單位不同的指標使用歐式距離可能使結果失效。py...

歐氏距離和余弦距離

一 歐幾里得距離 euclidean distance 歐氏距離是最常見的距離度量,衡量的是多維空間中各個點之間的絕對距離。公式如下 因為計算是基於各維度特徵的絕對數值,所以歐氏度量需要保證各維度指標在相同的刻度級別。eg 在深度學習中,提取cnns倒數的第二層fc作為最後的特徵向量,來進行人臉比對...

數學基礎之曼哈頓距離,歐式距離,余弦距離

曼哈頓距離,歐式距離,余弦距離 1.曼哈頓距離 曼哈頓距離又稱馬氏距離 manhattan distance 還見到過更加形象的,叫計程車距離的。具見上圖黃線,應該就能明白。計算距離最簡單的方法是曼哈頓距離。假設,先考慮二維情況,只有兩個樂隊 x 和 y,使用者a的評價為 x1,y1 使用者b的評價...