回覆列表
  • 1 # 使用者4882566089773

    不一定,也可設定為[-1,1]之間。事實上,必須要有權值為負數,不然只有啟用神經元,沒有抑制的也不行。至於為什麼在[-1,1]之間就足夠了,這是因為歸一化和Sigmoid函式輸出區間限制這兩個原因。一般在程式設計時,設定一個矩陣為bounds=ones(S,1)*[-1,1]; %權值上下界。

    在MATLAB中,可以直接使用net = init(net);來初始化。我們可以透過設定網路引數net.initFcn和net.layer{i}.initFcn這一技巧來初始化一個給定的網路。net.initFcn用來決定整個網路的初始化函式。前饋網路的預設值為initlay,它允許每一層用單獨的初始化函式。設定了net.initFcn ,那麼引數net.layer{i}.initFcn 也要設定用來決定每一層的初始化函式。對前饋網路來說,有兩種不同的初始化方式經常被用到:initwb和initnw。initwb函式根據每一層自己的初始化引數(net.inputWeights{i,j}.initFcn)初始化權重矩陣和偏置。前饋網路的初始化權重通常設為rands,它使權重在-1到1之間隨機取值。這種方式經常用在轉換函式是線性函式時。initnw通常用於轉換函式是曲線函式。它根據Nguyen和Widrow[NgWi90]為層產生初始權重和偏置值,使得每層神經元的活動區域能大致平坦的分佈在輸入空間。

  • 中秋節和大豐收的關聯?
  • 三葉星雲的關於人馬座?