1. 程式人生 > 其它 >一次 PyTorch 的踩坑經歷,以及如何避免梯度成為NaN

一次 PyTorch 的踩坑經歷,以及如何避免梯度成為NaN

函式防抖:短時間多次觸發同一事件,只執行 最開始 或 最後 一次操作。

function debounce(func, ms = 1000) {
  let timer;
  return function(...args) {
    console.log(args);
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(() => {
      func.apply(this, args);
    }, ms);
  };
}
const task = () => {console.log('run task')};
const debounceTask 
= debounce(task, 1000); window.addEventListener('click', debounceTask); // click 可以換成 scroll

 

 

 

對 debounce 函式返回的匿名函式中 args 引數(這裡可忽略)的存在作出說明:
  const debounceTask = debounce(task, 1000) 其實返回的是匿名函式。

點選頁面觸發 window.addEventListener('click', debounceTask) 事件,debounceTask 會執行。

這裡 debounceTask 沒有傳遞引數,列印 args 會看到有個事件物件,這裡的原因是因為:
  在瀏覽器中,如果函式執行沒有傳遞引數,會預設有個瀏覽器事件物件作為引數,如監聽的是點選 click 事件的話 args 就是 [PointerEvent]

 

 

 

將 click 換成 scroll,如果在函式不防抖,要執行很多次了~