<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 實現激活函數 激活函數是神經網絡近似非線性輸出并適應非線性特征的關鍵。他們將非線性運算引入神經網絡。如果我們小心選擇了哪些激活函數以及放置它們的位置,它們是非常強大的操作,我們可以告訴 TensorFlow 適合和優化。 ## 做好準備 當我們開始使用神經網絡時,我們將定期使用激活函數,因為激活函數是任何神經網絡的重要組成部分。激活函數的目標只是調整權重和偏差。在 TensorFlow 中,激活函數是作用于張量的非線性操作。它們是以與先前的數學運算類似的方式運行的函數。激活函數有很多用途,但主要的概念是它們在對輸出進行歸一化的同時在圖中引入了非線性。使用以下命令啟動 TensorFlow 圖: ```py import tensorflow as tf sess = tf.Session() ``` ## 操作步驟 激活函數存在于 TensorFlow 中的神經網絡(nn)庫中。除了使用內置激活函數外,我們還可以使用 TensorFlow 操作設計自己的函數。我們可以導入預定義的激活函數(`import tensorflow.nn as nn`)或顯式,并在函數調用中寫入`nn`。在這里,我們選擇明確每個函數調用: 1. 被整流的線性單元,稱為 ReLU,是將非線性引入神經網絡的最常見和最基本的方式。這個函數叫做`max(0,x)`。它是連續的,但不是平滑的。它看起來如下: ```py print(sess.run(tf.nn.relu([-3., 3., 10.]))) [ 0\. 3\. 10.] ``` 1. 有時我們會想要限制前面的 ReLU 激活函數的線性增加部分。我們可以通過將`max(0,x)`函數嵌套到`min()`函數中來實現。 TensorFlow 具有的實現稱為 ReLU6 函數。這被定義為`min(max(0,x),6)`。這是硬 sigmoid 函數的一個版本,并且計算速度更快,并且不會消失(無窮小接近零)或爆炸值。當我們在[第 8 章](../Text/61.html) [](../Text/61.html),卷積神經網絡和[第 9 章](../Text/68.html),循環神經網絡中討論更深層的神經網絡時,這將派上用場。它看起來如下: ```py print(sess.run(tf.nn.relu6([-3., 3., 10.]))) [ 0\. 3\. 6.] ``` 1. S 形函數是最常見的連續和平滑激活函數。它也被稱為邏輯函數,其形式為`1 / (1 + exp(-x))`。 Sigmoid 函數不經常使用,因為它傾向于在訓練期間將反向傳播術語置零。它看起來如下: ```py print(sess.run(tf.nn.sigmoid([-1., 0., 1.]))) [ 0.26894143 0.5 0.7310586 ] ``` > 我們應該知道一些激活函數不是以零為中心的,例如 sigmoid。這將要求我們在大多數計算圖算法中使用之前將數據歸零。 1. 另一個平滑激活函數是超切線。超正切函數與 sigmoid 非常相似,除了它的范圍在 0 和 1 之間,它的范圍在-1 和 1 之間。該函數具有雙曲正弦與雙曲余弦的比率的形式。寫這個的另一種方法是`(exp(x) - exp(-x)) / (exp(x) + exp(-x))`。此激活函數如下: ```py print(sess.run(tf.nn.tanh([-1., 0., 1.]))) [-0.76159418 0\. 0.76159418 ] ``` 1. `softsign`函數也可用作激活函數。該函數的形式是`x / (|x| + 1)`。 `softsign`函數應該是符號函數的連續(但不是平滑)近似。請參閱以下代碼: ```py print(sess.run(tf.nn.softsign([-1., 0., -1.]))) [-0.5 0\. 0.5] ``` 1. 另一個函數是`softplus`函數,是 ReLU 函數的流暢版本。該函數的形式是`log(exp(x) + 1)`。它看起來如下: ```py print(sess.run(tf.nn.softplus([-1., 0., -1.]))) [ 0.31326166 0.69314718 1.31326163] ``` > 當輸入增加時,`softplus`函數變為無窮大,而`softsign`函數變為 1.然而,當輸入變小時,`softplus`函數接近零,`softsign`函數變為-1。 1. 指數線性單元(ELU)與 softplus 函數非常相似,只是底部漸近線為-1 而不是 0.如果`x &lt; 0`其他`x`,則形式為`exp(x) + 1`。它看起來如下: ```py print(sess.run(tf.nn.elu([-1., 0., -1.]))) [-0.63212055 0\. 1\. ] ``` ## 工作原理 這些激活函數是我們將來可以在神經網絡或其他計算圖中引入非線性的方法。重要的是要注意我們的網絡中我們使用激活函數的位置。如果激活函數的范圍在 0 和 1(sigmoid)之間,則計算圖只能輸出 0 到 1 之間的值。如果激活函數在內部并隱藏在節點之間,那么我們想要知道當我們傳遞它們時,范圍可以在我們的張量上。如果我們的張量被縮放到平均值為零,我們將希望使用一個激活函數來保持盡可能多的方差在零附近。這意味著我們想要選擇激活函數,例如雙曲正切(tanh)或 softsign。如果張量都被縮放為正數,那么我們理想地選擇一個激活函數來保留正域中的方差。 ## 更多 以下是兩個繪圖,說明了不同的激活函數。下圖顯示了 ReLU,ReLU6,softplus,指數 LU,sigmoid,softsign 和雙曲正切函數: ![](https://img.kancloud.cn/73/a7/73a7aace9be047d92ddb5c5574c5dcbc_371x256.png) 圖 3:softplus,ReLU,ReLU6 和指數 LU 的激活函數 在這里,我們可以看到四個激活函數:softplus,ReLU,ReLU6 和指數 LU。這些函數在零的左邊展平并線性增加到零的右邊,但 ReLU6 除外,其最大值為 6: ![](https://img.kancloud.cn/e0/7b/e07be57137cca4c75195c81b1bf7404a_381x256.png) 圖 4:Sigmoid,雙曲正切(tanh)和 softsign 激活函數 這是 sigmoid,雙曲正切(tanh)和 softsign 激活函數。這些激活函數都是平滑的,具有`S n`形狀。請注意,這些函數有兩個水平漸近線。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看