hi各位好,這是我節前倒數第2天搬磚了,明晚下班回家種地,村里沒網,有事托夢,此文粉絲可見,
For Video Recommendation in Deep learning QQ Group 277356808
視頻推薦深度學習加這個群
For Visual in deep learning QQ Group 629530787
視覺深度學習加這個,別加錯
I'm here waiting for you
別加那么多,沒必要,另外,不接受這個網頁的私聊/私信!!!
問題來源于SR-GNN及GCN/LightGCN推理階段,因為都有倒排,所以發現這么費時間,如下是gcn的結果,argsort直接占據絕大部分時間,令人震驚,
scores是對logits進行softmax后得到的資料,具有概率統計意義,其位置對應原始訓練資料的item的index,很重要,
Training @ 2020-09-27 15:55:16.803590s
Epoch 1 [233.7s]: train==[0.08872=0.08755 + 0.00117]
Epoch 2 [188.3s]: train==[0.03362=0.03155 + 0.00207]
total time 39.851719, index time 0.000062, infer time 5.787474, argsort time 34.064183
total time 34.311058, index time 0.000055, infer time 0.189518, argsort time 34.121484
total time 34.390062, index time 0.000154, infer time 0.200301, argsort time 34.189607
total time 34.185163, index time 0.000160, infer time 0.199994, argsort time 33.985008
total time 34.261133, index time 0.000160, infer time 0.198627, argsort time 34.062345
total time 34.284593, index time 0.000145, infer time 0.198629, argsort time 34.085819
total time 34.628721, index time 0.000156, infer time 0.408642, argsort time 34.219923
total time 34.145094, index time 0.000148, infer time 0.200222, argsort time 33.944725
total time 34.221904, index time 0.000155, infer time 0.200848, argsort time 34.020901
total time 34.250089, index time 0.000149, infer time 0.199473, argsort time 34.050466
total time 34.341677, index time 0.000169, infer time 0.199252, argsort time 34.142257
total time 34.287936, index time 0.000166, infer time 0.203205, argsort time 34.084565
total time 34.152117, index time 0.000148, infer time 0.200518, argsort time 33.951451
batch_size=10240,增加或減少都不行,最后的倒排都占據絕大部分時間,那么問題來了,有沒有快速的倒排方法?
啥?你又說演算法的基本東西,N種排序方法,快排,插排,堆排,冒牌,,,這是我之前背過的C版本,沒個卵用???
我試試快排,是否速度要快于np.argsort,拭目以待吧
隨機生成一個(10240,38853)shape的陣列,對每行進行快排(倒排也可),如下:有在1s內結束的可指導下我
順便把行程和執行緒也考慮在內,這樣可以快點吧
1-快排僅僅是對陣列排序,而并沒有記錄其原始順序,想要記錄原始順序,寡人想到了一個方法,那就是字典(如果是有相同的資料的話,也可采用有序字典【胡謅的】,反正影響不大吧,應該不會有完全相同的數吧,都是一樣怎么可能呢?請大佬證明(或證偽)下);
ktest=np.random.randn(12)
print(ktest)
qsort(ktest,0,11)
print(ktest)
>>> inds=[kdict[k] for k in ktest]
>>> inds
[11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
這是字典的for方法,有沒有快速的方法呢?請大佬指點下,
電腦卡死了,宣告失敗,服務器過了7min也沒反應,失敗,電腦每行進行快排的時間需要0.4s,這也不快啊,咋整啊
同事大佬說了個庫,我簡單試了下不太好實作自己寫的函式用cuda加速,于是提issue吧
咋整啊??執行緒根本也是沒屁用哦,
2-其他排序也是不行啊,根本沒有頭緒,咋整啊,回家種地也會想著這事了,
有沒有大佬有其他方法啊?
3-后面等那個庫開發好了再補充吧
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/135284.html
標籤:其他
