我有乙個簡單和工作的多層感知器在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的評價...