推 guaptpan: 不知道為什麼tf這裡這麼慢 05/18 23:46
→ guaptpan: 有沒有試過用placeholder 當user的資料輸入控制看看? 05/18 23:46
→ guaptpan: 我還有發現這樣的i與j的迴圈是不是有很多次不必要的重複 05/18 23:46
→ guaptpan: 計算嗎? 05/18 23:46
→ guaptpan: 例如總共10個user,i=1時的loop中1號與5號比過了,到i = 05/18 23:46
→ guaptpan: 5的loop中5號又與1號比較一次 05/18 23:46
→ guaptpan: 如果在第二層迴圈中改成 05/18 23:46
→ guaptpan: for j=I in range 會不會比較快一點 05/18 23:46
→ king00000000: 我試試看 05/19 00:17
推 tsoahans: tensorflow是要建立computing graph再去計算 你這樣會 05/19 00:27
→ tsoahans: 重複建很多次浪費時間 05/19 00:28
推 tsoahans: input改用placeholder,U1_norm到cosin都放for外面 05/19 00:36
推 sma1033: 寫tensorflow要快就是要懂得怎麼樣把資料分給顯卡平行算 05/19 16:00
→ sma1033: 如果你只是弄一個自己想好的邏輯,然後丟給Tensorflow 05/19 16:00
→ sma1033: 預期程式就會很"聰明"的幫你分配電腦硬體,最有效率的算 05/19 16:01
→ sma1033: 出結果,那你的期待應該很容易就會落空y 05/19 16:01
→ sma1033: 如果不懂如何使用GPU加速的話,其實還是寫Python處理資料 05/19 16:03
→ sma1033: 就好,因為把一樣的程式單純搬到TF上面應該是不會變快的 05/19 16:04
→ sma1033: 要速度快就是要利用平行運算的性質來跑(CPU or GPU都是) 05/19 16:05
推 NCTUFatGuy: 直接用numpy就好了 不知道用tf的意義 05/19 17:56
推 teracahou: tsoahans正解 這裡完全不需要用到 loops 你的computati 05/19 21:51
→ teracahou: onal graph 只需要一組 ops 但你現在建了 n^2 組 那當 05/19 21:51
→ teracahou: 然很慢 05/19 21:51
推 teracahou: 這個應用場景其實很常見 比如說CNN 有個 regression ta 05/19 21:58
→ teracahou: sk我們想用cosine distance去當 loss (或是一個很custo 05/19 21:58
→ teracahou: mized的loss) 這種情況能vectorize就vectorize. 否則會 05/19 21:58
→ teracahou: 非常的慢 05/19 21:59
→ king00000000: 感謝各位指教,前天改了之後沒問題了,不過倒是發現 05/21 15:33
→ king00000000: 了一件神奇的事情,我用gpu跑要將近4分鐘,用cpu竟 05/21 15:33
→ king00000000: 然只要1分多,跟我GPU應該比較快的印象不太一樣,我 05/21 15:33
→ king00000000: 挺好奇其中原因的 05/21 15:33
推 tsoahans: 要看程式是IO bound還是CPU bound,GPU再運算時需要透過 05/25 11:35
→ tsoahans: bus把資料搬到GPU的記憶體內,比CPU直接從memory取資料 05/25 11:36
→ tsoahans: 慢 05/25 11:36
推 tsoahans: 另外就是看你的程式有多少部分可以平行化 05/25 11:46