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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # TensorFlow 中的簡單 RNN 在 TensorFlow 中定義和訓練簡單 RNN 的工作流程如下: 1. 定義模型的超參數: ```py state_size = 4 n_epochs = 100 n_timesteps = n_x learning_rate = 0.1 ``` 這里新的超參數是`state_size`。 `state_size`表示 RNN 小區的權重向量的數量。 1. 為模型定義`X`和`Y`參數的占位符。`X`占位符的形狀為 `(batch_size, number_of_input_timesteps, number_of_inputs)`,`Y`占位符的形狀為`(batch_size, number_of_output_timesteps, number_of_outputs)`。對于`batch_size`,我們使用`None`,以便我們以后可以輸入任意大小的批次。 ```py X_p = tf.placeholder(tf.float32, [None, n_timesteps, n_x_vars], name='X_p') Y_p = tf.placeholder(tf.float32, [None, n_timesteps, n_y_vars], name='Y_p') ``` 1. 將輸入占位符`X_p`轉換為長度等于時間步數的張量列表,在此示例中為`n_x`或 1: ```py # make a list of tensors of length n_timesteps rnn_inputs = tf.unstack(X_p,axis=1) ``` 1. 使用`tf.nn.rnn_cell.BasicRNNCell`創建一個簡單的 RNN 單元: ```py cell = tf.nn.rnn_cell.BasicRNNCell(state_size) ``` 1. TensorFlow 提供`static_rnn`和`dynamic_rnn`便利方法(以及其他方法)分別創建靜態和動態 RNN。創建靜態 RNN: ```py rnn_outputs, final_state = tf.nn.static_rnn(cell, rnn_inputs, dtype=tf.float32 ) ``` 靜態 RNN 在編譯時創建單元,即展開循環。動態 RNN 創建單元,即在運行時展開循環 。在本章中,我們僅展示了 `static_rnn` 的示例,但是一旦獲得靜態 RNN 的專業知識,就應該探索 `dynamic_rnn` 。 `static_rnn`方法采用以下參數: * `cell`:我們之前定義的基本 RNN 單元對象。它可能是另一種單元,我們將在本章中進一步看到。 * `rnn_inputs`:形狀`(batch_size, number_of_inputs)`的張量列表。 * `dtype`:初始狀態和預期輸出的數據類型。 1. 定義預測層的權重和偏差參數: ```py W = tf.get_variable('W', [state_size, n_y_vars]) b = tf.get_variable('b', [n_y_vars], initializer=tf.constant_initializer(0.0)) ``` 1. 將預測層定義為密集線性層: ```py predictions = [tf.matmul(rnn_output, W) + b \ for rnn_output in rnn_outputs] ``` 1. 輸出 Y 是 Tensors 的形狀;將其轉換為張量列表: ```py y_as_list = tf.unstack(Y_p, num=n_timesteps, axis=1) ``` 1. 將損失函數定義為預測標簽和實際標簽之間的均方誤差: ```py mse = tf.losses.mean_squared_error losses = [mse(labels=label, predictions=prediction) for prediction, label in zip(predictions, y_as_list) ] ``` 1. 將總損失定義為所有預測時間步長的平均損失: ```py total_loss = tf.reduce_mean(losses) ``` 1. 定義優化器以最小化`total_loss`: ```py optimizer = tf.train.AdagradOptimizer(learning_rate).minimize(total_loss) ``` 1. 現在我們已經定義了模型,損耗和優化器函數,讓我們訓練模型并計算訓練損失: ```py with tf.Session() as tfs: tfs.run(tf.global_variables_initializer()) epoch_loss = 0.0 for epoch in range(n_epochs): feed_dict={X_p: X_train.reshape(-1, n_timesteps, n_x_vars), Y_p: Y_train.reshape(-1, n_timesteps, n_x_vars) } epoch_loss,y_train_pred,_=tfs.run([total_loss,predictions, optimizer], feed_dict=feed_dict) print("train mse = {}".format(epoch_loss)) ``` 我們得到以下值: ```py train mse = 0.0019413739209994674 ``` 1. 讓我們在測試數據上測試模型: ```py feed_dict={X_p: X_test.reshape(-1, n_timesteps,n_x_vars), Y_p: Y_test.reshape(-1, n_timesteps,n_y_vars) } test_loss, y_test_pred = tfs.run([total_loss,predictions], feed_dict=feed_dict ) print('test mse = {}'.format(test_loss)) print('test rmse = {}'.format(math.sqrt(test_loss))) ``` 我們在測試數據上得到以下 mse 和 rmse(均方根誤差): ```py test mse = 0.008790395222604275 test rmse = 0.09375710758446143 ``` 這非常令人印象深刻。 這是一個非常簡單的例子,只用一個變量值預測一個時間步。在現實生活中,輸出受到多個特征的影響,并且需要預測不止一個時間步。后一類問題被稱為多變量多時間步進預測問題。這些問題是使用遞歸神經網絡進行更好預測的積極研究領域。 現在讓我們重新調整預測和原始值并繪制原始值(請在筆記本中查找代碼)。 我們得到以下繪圖: ![](https://img.kancloud.cn/68/ed/68eda0faf0b9085c6ca1a412061aa36c_923x610.png) 令人印象深刻的是,在我們的簡單示例中,預測數據幾乎與原始數據相匹配。對這種準確預測的一種可能解釋是,單個時間步的預測基于來自最后一個時間步的單個變量的預測,因此它們總是在先前值的附近。 盡管如此,前面示例的目的是展示在 TensorFlow 中創建 RNN 的方法。現在讓我們使用 RNN 變體重新創建相同的示例。
                  <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>

                              哎呀哎呀视频在线观看