pytorch 頻率 過濾 保留高頻 保留低頻

2021-10-21 14:33:17 字數 2262 閱讀 4911

實驗中遇到這樣乙個需求,在[batch_size,seq_length]的二維tensor中,找到每乙個batch_size**現頻率最高的那一項,過濾掉其他項(保持原有形狀),並獲取其編碼。

例如,輸入序列是[ [1,1,1,2,2],[3,3,4,4,4]], 期望獲得[[1,1,1,0,0],[0,0,4,4,4]],之後再獲取1和4的embedding表示。(如果想獲得[1,4]也是類似的),**如下:

import numpy as np

import torch

# 關鍵**,資料會在後面展示

top_item =

for i in tmp:

array = i.cpu(

).numpy(

) a, cnts = np.unique(array[array !=0]

, return_counts=

true

)[a[cnts.argmax()]

]*20)

x=np.where(tmp.cpu(

).numpy(

)==top_item,tmp.cpu(

).numpy(),

0)top_item_tensor = torch.tensor(x)

.type

(torch.int64)

top_item_emb=self.embedding(top_item_tensor.cuda(

))

其中tmp是類似於[ [1,1,1,2,2],[3,3,4,4,4]]的輸入,top_item_tensor是類似於[[1,1,1,0,0],[0,0,4,4,4]]的陣列,

top_item是用來鉅鹿中間結果的輔助變數,

如果你的**是在cpu上執行的,請忽略**中的cpu()、cuda()等。

使用到的資料是下面這樣的:

tmp

out[

273]

:tensor([[

912,

912,

912,..

.,0,

0,0]

,[79,

79,79,

...,

0,0,

0],[

342,

871,

342,..

.,0,

0,0]

,...

,[882,

349,

346,..

.,0,

0,0]

,[722,

785,

873,..

.,0,

0,0]

,[785,0,

0,..

.,0,

0,0]

], device=

'cuda:0'

)

tmp.shape

out[

279]

: torch.size(

[128,20

])top_item_tensor

out[

274]

:tensor([[

912,

912,

912,..

.,0,

0,0]

,[79,

79,79,

...,

0,0,

0],[

342,0,

342,..

.,0,

0,0]

,...

,[0,

0,0,

...,

0,0,

0],[

0,0,

0,..

.,0,

0,0]

,[785,0,

0,..

.,0,

0,0]

])top_item_tensor.shape

out[

278]

: torch.size(

[128,20

])self.embedding

out[

276]

: embedding(

12346,64

)top_item_emb.shape

out[

277]

: torch.size(

[128,1

,64])

git高頻率命令

我這一生都是堅定不移的唯物主義者 唯有你 我希望有來生 設定name email git config grobal user.name your name git config grobal user.email email example.com 檢視name email git config ...

Linux高頻率命令收集

linux命令 1.跳到文字的最後一行 按 g 即 shift g 2.跳到最後一行的最後乙個字元 先重複1的操作即按 g 之後按 鍵,即 shift 4 3.跳到第一行的第乙個字元 先按兩次 g 4.跳轉到當前行的第乙個字元 在當前行按 0 5.grep r 1.txt 定向 輸出當前目錄下的查詢...

php高頻率面試題

php是hypertext preprocessor的簡稱,是用來開發動態網頁的伺服器指令碼語言。問題 什麼是mvc?mvc是指m model模型 view檢視 control控制器 model 資料資訊訪問層。view view層負責將應用的資料以特定的方式展現在介面上。controller 通常...