<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 使用占位符和變量 占位符和變量是在 TensorFlow 中使用計算圖的關鍵工具。我們必須了解它們之間的區別以及何時最好地利用它們對我們有利。 ## 做好準備 與數據最重要的區別之一是它是占位符還是變量。變量是算法的模型參數,TensorFlow 跟蹤如何更改這些參數以優化算法。占位符是允許您提供特定類型和形狀的數據的對象,或者取決于計算圖的結果,例如計算的預期結果。 ## 操作步驟 創建變量的主要方法是使用`Variable()`函數,該函數將張量作為輸入并輸出變量。這只是聲明,我們仍然需要初始化變量。初始化是將變量與相應方法放在計算圖上的內容。以下是創建和初始化變量的示例: ```py my_var = tf.Variable(tf.zeros([2,3])) sess = tf.Session() initialize_op = tf.global_variables_initializer() sess.run(initialize_op) ``` 要在創建和初始化變量后查看計算圖是什么樣的,請參閱此秘籍的以下部分。占位符只是保持數據的位置以輸入圖。占位符從會話中的`feed_dict`參數獲取數據。要將占位符放入圖中,我們必須對占位符執行至少一個操作。在下面的代碼片段中,我們初始化圖,將`x`聲明為占位符(預定義大小),并將`y`定義為`x`上的標識操作,它只返回`x`。然后,我們創建數據以提供給`x`占位符并運行身份操作。代碼如下所示,結果圖如下: ```py sess = tf.Session() x = tf.placeholder(tf.float32, shape=[2,2]) y = tf.identity(x) x_vals = np.random.rand(2,2) sess.run(y, feed_dict={x: x_vals}) # Note that sess.run(x, feed_dict={x: x_vals}) will result in a self-referencing error. ``` > 值得注意的是,TensorFlow 不會在 Feed 字典中返回自引用占位符。換句話說,在下圖中運行`sess.run(x, feed_dict={x: x_vals})`將返回錯誤。 ## 工作原理 將變量初始化為零張量的計算圖如下圖所示: ![](https://img.kancloud.cn/f6/41/f64186742e74c3d7deda7e4373cb3871_1191x401.png) 圖 1:變量 在這里,我們只用一個變量就可以看到計算圖的詳細信息,并將其全部初始化為零。灰色陰影區域是對所涉及的操作和常數的非常詳細的視圖。細節較少的主要計算圖是右上角灰色區域之外的較小圖。有關創建和可視化圖的更多詳細信息,請參閱[第 10 章](http://Taking%20TensorFlow%20to%20Production)的第一部分,將 TensorFlow 轉換為生產。類似地,可以在下圖中看到將 NumPy 數組送入占位符的計算圖: ![](https://img.kancloud.cn/80/3b/803b2d4c9350383092b985d1aecdd5fa_160x195.png) 圖 2:初始化占位符的計算圖 灰色陰影區域是對所涉及的操作和常數的非常詳細的視圖。細節較少的主要計算圖是右上角灰色區域之外的較小圖。 ## 更多 在計算圖運行期間,我們必須告訴 TensorFlow 何時初始化我們創建的變量。雖然每個變量都有一個`initializer`方法,但最常用的方法是使用輔助函數,即`global_variables_initializer()`。此函數在圖中創建一個初始化我們創建的所有變量的操作,如下所示: ```py initializer_op = tf.global_variables_initializer() ``` 但是如果我們想根據初始化另一個變量的結果來初始化變量,我們必須按照我們想要的順序初始化變量,如下所示: ```py sess = tf.Session() first_var = tf.Variable(tf.zeros([2,3])) sess.run(first_var.initializer) second_var = tf.Variable(tf.zeros_like(first_var)) # 'second_var' depends on the 'first_var' sess.run(second_var.initializer) ```
                  <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>

                              哎呀哎呀视频在线观看