<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 Eager 構建簡單的神經網絡 大家好! 在本教程中,我們將使用 TensorFlow 的命令模式構建一個簡單的前饋神經網絡。 希望你會發現它很有用! 如果你對如何改進代碼有任何建議,請告訴我。 教程步驟: ![](https://img.kancloud.cn/86/e1/86e1a28ce30d917cd72d07d45efe8f21_1248x576.png) 使用的版本:TensorFlow 1.7 ## 第一步:導入有用的庫并啟用 Eager 模式 ```py # 導入 TensorFlow 和 TensorFlow Eager import tensorflow as tf import tensorflow.contrib.eager as tfe # 導入函數來生成玩具分類問題 from sklearn.datasets import make_moons import numpy as np # 導入繪圖庫 import matplotlib.pyplot as plt %matplotlib inline # 開啟 Eager 模式。一旦開啟不能撤銷!只執行一次。 tfe.enable_eager_execution() ``` ## 第二步:為二分類生成玩具數據集 我們將生成一個玩具數據集,來訓練我們的網絡。 我從`sklearn`中選擇了`make_moons`函數。 我相信它對我們的任務來說是完美的,因為類不是線性可分的,因此神經網絡將非常有用。 ```py # 為分類生成玩具數據集 # X 是 n_samples x n_features 的矩陣,表示輸入特征 # y 是 長度為 n_samples 的向量,表示我們的標簽 X, y = make_moons(n_samples=100, noise=0.1, random_state=2018) ``` ## 第三步:展示生成的數據集 ```py plt.scatter(X[:,0], X[:,1], c=y, cmap=plt.cm.autumn) plt.xlabel('First feature') plt.ylabel('Second feature') plt.title('Toy classification problem') plt.show() ``` ![](https://img.kancloud.cn/ff/ee/ffeef2cb0bf7c88e3b6195ebdbd66bde_404x278.png) ## 第四步:構建單隱層神經網絡(線性 -> ReLU -> 線性輸出) 我們的第一個試驗是一個簡單的神經網絡,只有一個隱層。 使用 TensorFlow Eager 構建神經網絡模型的最簡單方法是使用類。 在初始化期間,你可以定義執行模型正向傳播所需的層。 由于這是一個分類問題,我們將使用`softmax`交叉熵損失。 通常,我們必須對標簽進行單熱編碼。 為避免這種情況,我們將使用稀疏`softmax`損失,它以原始標簽作為輸入。 無需進一步處理! ```py class simple_nn(tf.keras.Model): def __init__(self): super(simple_nn, self).__init__() """ 在這里定義正向傳播期間 使用的神經網絡層 """ # 隱層 self.dense_layer = tf.layers.Dense(10, activation=tf.nn.relu) # 輸出層,無激活函數 self.output_layer = tf.layers.Dense(2, activation=None) def predict(self, input_data): """ 在神經網絡上執行正向傳播 Args: input_data: 2D tensor of shape (n_samples, n_features). Returns: logits: unnormalized predictions. """ hidden_activations = self.dense_layer(input_data) logits = self.output_layer(hidden_activations) return logits def loss_fn(self, input_data, target): """ 定義訓練期間使用的損失函數 """ logits = self.predict(input_data) loss = tf.losses.sparse_softmax_cross_entropy(labels=target, logits=logits) return loss def grads_fn(self, input_data, target): """ 在每個正向步驟中, 動態計算損失值對模型參數的梯度 """ with tfe.GradientTape() as tape: loss = self.loss_fn(input_data, target) return tape.gradient(loss, self.variables) def fit(self, input_data, target, optimizer, num_epochs=500, verbose=50): """ 用于訓練模型的函數, 使用所選的優化器,執行所需數量的迭代 """ for i in range(num_epochs): grads = self.grads_fn(input_data, target) ``` ## 第五步:使用梯度下降訓練模型 使用反向傳播來訓練我們模型的變量。 隨意玩玩學習率和迭代數。 ```py X_tensor = tf.constant(X) y_tensor = tf.constant(y) optimizer = tf.train.GradientDescentOptimizer(5e-1) model = simple_nn() model.fit(X_tensor, y_tensor, optimizer, num_epochs=500, verbose=50) optimizer.apply_gradients(zip(grads, self.variables)) if (i==0) | ((i+1)%verbose==0): print('Loss at epoch %d: %f' %(i+1, self.loss_fn(input_data, target).numpy())) ''' Loss at epoch 1: 0.653288 Loss at epoch 50: 0.283921 Loss at epoch 100: 0.260529 Loss at epoch 150: 0.244092 Loss at epoch 200: 0.221653 Loss at epoch 250: 0.186211 Loss at epoch 300: 0.139418 Loss at epoch 350: 0.103654 Loss at epoch 400: 0.078874 Loss at epoch 450: 0.062550 Loss at epoch 500: 0.051096 ''' ``` ## 第六步:繪制決策邊界 用于繪制模型決策邊界的代碼受到[本教程](http://scikit-learn.org/stable/auto_examples/svm/plot_iris.html#sphx-glr-auto-examples-svm-plot-iris-py)的啟發。 ```py # 創建 mesh ,在其中繪制 x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01), np.arange(y_min, y_max, 0.01)) # 為每個樣本 xx, yy 預測標簽 Z = np.argmax(model.predict(tf.constant(np.c_[xx.ravel(), yy.ravel()])).numpy(), axis=1) # 將結果放進彩色繪圖 Z = Z.reshape(xx.shape) fig = plt.figure() plt.contourf(xx, yy, Z, cmap=plt.cm.autumn, alpha=0.8) # 繪制我們的訓練樣本 plt.scatter(X[:, 0], X[:, 1], c=y, s=40, cmap=plt.cm.autumn, edgecolors='k') plt.xlim(xx.min(), xx.max()) plt.ylim(yy.min(), yy.max()) plt.xlabel('First feature', fontsize=15) plt.ylabel('Second feature', fontsize=15) plt.title('Toy classification problem', fontsize=15) ``` ![](https://img.kancloud.cn/a6/5a/a65ac7c7de602e75cc7c3e03df06aede_403x285.png)
                  <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>

                              哎呀哎呀视频在线观看