pytorch計算兩個特徵的余弦相似度

2021-09-25 05:14:21 字數 545 閱讀 4445

首先,我們要記住一點,兩個特徵的余弦相似度計算出來的範圍是**[-1,1]**

其實,對於兩個特徵,它們的余弦相似度就是兩個特徵在經過l2歸一化之後的矩陣內積。

**如下:

import torch

import torch.nn.functional as f

#假設feature1為n*c*w*h, feature2也為n*c*w*h(基本網路中的tensor都是這樣)

feature1 = feature1.view(feature1.shape[0], -1)#將特徵轉換為n*(c*w*h),即兩維

feature2 = feature2.view(feature2.shape[0], -1)

feature1 = f.normalize(feature1) #f.normalize只能處理兩維的資料,l2歸一化

feature2 = f.normalize(feature2)

distance = feature1.mm(feature2.t())#計算余弦相似度

pytorch 快速計算兩個tensor的歐式距離

給定兩個tensor a 和 b。a的維度為 m,h b的維度為 n,h 要求每兩行之間計算他們的歐氏距離,返回乙個維度為 m,n 的tensor。要求不能使用迴圈,也不能擴充複製乙個tensor。解 將歐式距離的公式展開,根號下面是 所以 為 def euclideandistances a,b ...

pytorch模型輸入兩個引數

最近用pytorch需要用到兩個輸入,發現有很多朋友也沒有找到解決方法,今天來分享一下我的做法。def forward self,x1,x2 feature self.conv1 x1 out torch.cat feature,x2 dim 1 out1 self.layer1 out out2 ...

計算網格的兩個定義

科學領域驅使網格構建的源動力是在不同機構間協作的需求 聚集計算資源充分利用閒置的處理器週期的契機 資料量和計算需求超出了現有巨型計算機處理能力。因此計算網格最基本的定義為 在多種體系的動態環境下協作資源共享以及解決同樣問題。如果您把網際網路看作通訊網路,那麼網格計算就是計算網路 用於合用資產之間協調...