<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國際加速解決方案。 廣告
                # 實現操作門 神經網絡最基本的概念之一是作為操作門操作。在本節中,我們將從乘法操作開始作為門,然后再繼續考慮嵌套門操作。 ## 做好準備 我們將實現的第一個操作門是`f(x) = a · x`。為優化此門,我們將`a`輸入聲明為變量,將`x`輸入聲明為占位符。這意味著 TensorFlow 將嘗試更改`a`值而不是`x`值。我們將創建損失函數作為輸出和目標值之間的差異,即 50。 第二個嵌套操作門將是`f(x) = a · x + b`。同樣,我們將`a`和`b`聲明為變量,將`x`聲明為占位符。我們再次將輸出優化到目標值 50。值得注意的是,第二個例子的解決方案并不是唯一的。有許多模型變量組合可以使輸出為 50.對于神經網絡,我們并不關心中間模型變量的值,而是更加強調所需的輸出。 將這些操作視為我們計算圖上的操作門。下圖描繪了前面兩個示例: ![](https://img.kancloud.cn/d5/c9/d5c96c6aacd54897fc3036297dfbd344_874x724.png) 圖 1:本節中的兩個操作門示例 ## 操作步驟 要在 TensorFlow 中實現第一個操作門`f(x) = a · x`并將輸出訓練為值 50,請按照下列步驟操作: 1. 首先加載`TensorFlow`并創建圖會話,如下所示: ```py import tensorflow as tf sess = tf.Session() ``` 1. 現在我們需要聲明我們的模型變量,輸入數據和占位符。我們使輸入數據等于值`5`,因此得到 50 的乘法因子將為 10(即`5X10=50`),如下所示: ```py a = tf.Variable(tf.constant(4.)) x_val = 5. x_data = tf.placeholder(dtype=tf.float32) ``` 1. 接下來,我們使用以下輸入將操作添加到計算圖中: ```py multiplication = tf.multiply(a, x_data) ``` 1. 我們現在將損失函數聲明為輸出與`50`的期望目標值之間的 L2 距離,如下所示: ```py loss = tf.square(tf.subtract(multiplication, 50.)) ``` 1. 現在我們初始化我們的模型變量并將我們的優化算法聲明為標準梯度下降,如下所示: ```py init = tf.global_variables_initializer() sess.run(init) my_opt = tf.train.GradientDescentOptimizer(0.01) train_step = my_opt.minimize(loss) ``` 1. 我們現在可以將模型輸出優化到`50`的期望值。我們通過連續輸入 5 的輸入值并反向傳播損失來將模型變量更新為`10`的值,如下所示: ```py print('Optimizing a Multiplication Gate Output to 50.') for i in range(10): sess.run(train_step, feed_dict={x_data: x_val}) a_val = sess.run(a) mult_output = sess.run(multiplication, feed_dict={x_data: x_val}) print(str(a_val) + ' * ' + str(x_val) + ' = ' + str(mult_output)) ``` 1. 上一步應該產生以下輸出: ```py Optimizing a Multiplication Gate Output to 50\. 7.0 * 5.0 = 35.0 8.5 * 5.0 = 42.5 9.25 * 5.0 = 46.25 9.625 * 5.0 = 48.125 9.8125 * 5.0 = 49.0625 9.90625 * 5.0 = 49.5312 9.95312 * 5.0 = 49.7656 9.97656 * 5.0 = 49.8828 9.98828 * 5.0 = 49.9414 9.99414 * 5.0 = 49.9707 ``` 接下來,我們將對兩個嵌套的操作門`f(x) = a · x + b`進行相同的操作。 1. 我們將以與前面示例完全相同的方式開始,但將初始化兩個模型變量`a`和`b`,如下所示: ```py from tensorflow.python.framework import ops ops.reset_default_graph() sess = tf.Session() a = tf.Variable(tf.constant(1.)) b = tf.Variable(tf.constant(1.)) x_val = 5\. x_data = tf.placeholder(dtype=tf.float32) two_gate = tf.add(tf.multiply(a, x_data), b) loss = tf.square(tf.subtract(two_gate, 50.)) my_opt = tf.train.GradientDescentOptimizer(0.01) train_step = my_opt.minimize(loss) init = tf.global_variables_initializer() sess.run(init) ``` 1. 我們現在優化模型變量以將輸出訓練到`50`的目標值,如下所示: ```py print('Optimizing Two Gate Output to 50.') for i in range(10): # Run the train step sess.run(train_step, feed_dict={x_data: x_val}) # Get the a and b values a_val, b_val = (sess.run(a), sess.run(b)) # Run the two-gate graph output two_gate_output = sess.run(two_gate, feed_dict={x_data: x_val}) print(str(a_val) + ' * ' + str(x_val) + ' + ' + str(b_val) + ' = ' + str(two_gate_output)) ``` 1. 上一步應該產生以下輸出: ```py Optimizing Two Gate Output to 50\. 5.4 * 5.0 + 1.88 = 28.88 7.512 * 5.0 + 2.3024 = 39.8624 8.52576 * 5.0 + 2.50515 = 45.134 9.01236 * 5.0 + 2.60247 = 47.6643 9.24593 * 5.0 + 2.64919 = 48.8789 9.35805 * 5.0 + 2.67161 = 49.4619 9.41186 * 5.0 + 2.68237 = 49.7417 9.43769 * 5.0 + 2.68754 = 49.876 9.45009 * 5.0 + 2.69002 = 49.9405 9.45605 * 5.0 + 2.69121 = 49.9714 ``` > 這里需要注意的是,第二個例子的解決方案并不是唯一的。這在神經網絡中并不重要,因為所有參數都被調整為減少損失。這里的最終解決方案將取決于 a 和 b 的初始值。如果這些是隨機初始化的,而不是值 1,我們會看到每次迭代的模型變量的不同結束值。 ## 工作原理 我們通過 TensorFlow 的隱式反向傳播實現了計算門的優化。 TensorFlow 跟蹤我們的模型的操作和變量值,并根據我們的優化算法規范和損失函數的輸出進行調整。 我們可以繼續擴展操作門,同時跟蹤哪些輸入是變量,哪些輸入是數據。這對于跟蹤是很重要的,因為 TensorFlow 將更改所有變量以最小化損失而不是數據,這被聲明為占位符。 每個訓練步驟自動跟蹤計算圖并自動更新模型變量的隱式能力是 TensorFlow 的強大功能之一,也是它如此強大的原因之一。
                  <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>

                              哎呀哎呀视频在线观看