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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 使用 TensorFlow 和 Keras TensorFlow 非常適合為程序員提供的靈活性和強大功能。這樣做的一個缺點是原型模型和迭代各種測試對程序員來說可能很麻煩。 Keras 是深度學習庫的包裝器,可以更輕松地處理模型的各個方面并使編程更容易。在這里,我們選擇在 TensorFlow 之上使用 Keras。事實上,使用帶有 TensorFlow 后端的 Keras 非常受歡迎,TensorFlow 中有一個 Keras 庫。對于這個秘籍,我們將使用該 TensorFlow 庫在 MNIST 數據集上進行完全連接的神經網絡和簡單的 CNN 圖像網絡。 ## 做好準備 對于這個秘籍,我們將使用駐留在 TensorFlow 內部的 Keras 函數。 Keras( [https://keras.io/](https://keras.io/) )已經是一個可以安裝的獨立 python 庫了。如果您選擇使用純 Keras 路線,則必須為 Keras 選擇后端(如 TensorFlow)。 在本文中,我們將在 MNIST 圖像識別數據集上執行兩個單獨的模型。第一個是直接完全連接的神經網絡,而第二個是從第 8 章第 2 節“實現簡單的 CNN”復制我們的 CNN 網絡。 ## 操作步驟 1. 我們將首先為腳本加載必要的庫。 ```py import tensorflow as tf from sklearn.preprocessing import MultiLabelBinarizer from keras.utils import to_categorical from tensorflow import keras from tensorflow.python.framework import ops ops.reset_default_graph() # Load MNIST data from tensorflow.examples.tutorials.mnist import input_data ``` 1. 我們可以在 TensorFlow 中使用提供的 MNIST 數據導入函數加載庫。雖然原始 MNIST 圖像是 28 像素乘 28 像素,但導入的數據是它們的扁平版本,其中每個觀察是 0 到 1 之間的 784 個灰度點的行.y 標簽作為 0 到 9 之間的整數導入。 ```py mnist = input_data.read_data_sets("MNIST_data/") x_train = mnist.train.images x_test = mnist.test.images y_train = mnist.train.labels y_test = mnist.test.labels y_train = [[i] for i in y_train] y_test = [[i] for i in y_test] ``` 1. 我們現在將使用 scikit-learn 的`MultiLabelBinarizer()`函數將目標整數轉換為單熱編碼向量,如下所示: ```py one_hot = MultiLabelBinarizer() y_train = one_hot.fit_transform(y_train) y_test = one_hot.transform(y_test) ``` 1. 我們將創建一個三層完全連接的神經網絡,其中包含 32,16 和 10 個相應的隱藏節點。然后最終輸出的大小為 10(每個數字一個)。我們使用以下代碼創建此網絡: ```py # We start with a 'sequential' model type (connecting layers together) model = keras.Sequential() # Adds a densely-connected layer with 32 units to the model, followed by an ReLU activation. model.add(keras.layers.Dense(32, activation='relu')) # Adds a densely-connected layer with 16 units to the model, followed by an ReLU activation. model.add(keras.layers.Dense(16, activation='relu')) # Add a softmax layer with 10 output units: model.add(keras.layers.Dense(10, activation='softmax')) ``` 1. 為了訓練模型,我們接下來要做的就是使用適當的參數調用`compile()`方法。我們需要的參數是優化函數和損失類型。但我們也想記錄模型的準確率,因此度量列表包括`accuracy`參數。 ```py model.compile(optimizer=tf.train.AdamOptimizer(0.001), loss='categorical_crossentropy', metrics=['accuracy']) ``` 1. 這將導致輸出應類似于以下內容: ```py Epoch 1/5 64/55000 [..............................] - ETA: 1:44 - loss: 2.3504 - acc: 0.0625 3776/55000 [=>............................] - ETA: 2s - loss: 1.7904 - acc: 0.3676 ... 47104/55000 [========================>.....] - ETA: 0s - loss: 0.1337 - acc: 0.9615 50880/55000 [==========================>...] - ETA: 0s - loss: 0.1336 - acc: 0.9617 55000/55000 [==============================] - 1s 13us/step - loss: 0.1335 - acc: 0.9615 Out[]: <tensorflow.python.keras.callbacks.History at 0x7f5768a40da0> ``` > 要配置均方誤差損失的回歸模型,我們將使用模型編譯,如下所示:`model.compile(optimizer=tf.train.AdamOptimizer(0.01), loss='mse', metrics=['mae'])` 1. 接下來,我們將看到如何實現具有兩個卷積層的 CNN 模型,其具有最大池,全部后面是完全連接的層。首先,我們必須將平面圖像重塑為 2D 圖像,并將 y 目標轉換為 numpy 數組,如下所示:00 ```py x_train = x_tra0in.reshape(x_train.shape[0], 28, 28, 1) x_test = x_test.reshape(x_test.shape[0], 28, 28, 1) input_shape = (28, 28, 1) num_classes = 10 # Categorize y targets y_test = to_categorical(mnist.test.labels) y_train = to_categorical(mnist.train.labels) ``` 1. 我們將像以前一樣以類似的順序層方法創建 CNN。這次我們將使用`Conv2D()`,`MaxPooling2D()`和`Dense()` Keras 函數創建我們的 CNN 模型,如下所示: ```py cnn_model = keras.Sequential() # First convolution layer cnn_model.add(keras.layers.Conv2D(25, kernel_size=(4, 4), strides=(1, 1), activation='relu', input_shape=input_shape)) # Max pooling cnn_model.add(keras.layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2))) # Second convolution layer cnn_model.add(keras.layers.Conv2D(50, kernel_size=(5, 5), strides=(1, 1), activation='relu')) # Max pooling cnn_model.add(keras.layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2))) # Flatten for dense (fully connected) layer cnn_model.add(keras.layers.Flatten()) # Add dense (fully connected) layer cnn_model.add(keras.layers.Dense(num_classes, activation='softmax')) ``` 1. 接下來,我們將通過選擇優化和損失函數來編譯我們的模型。 ```py cnn_model.compile(optimizer=tf.train.AdamOptimizer(0.001), loss='categorical_crossentropy', metrics=['accuracy']) ``` 1. Keras 還允許我們將函數插入到名為 Callbacks 的訓練代碼中。回調是在代碼中的某些時間執行的函數,可用于執行各種函數。有許多預制回調,可以保存模型,在特定標準下停止訓練,記錄值等等。有關各種選項的更多信息,請參閱 [https://keras.io/callbacks/](https://keras.io/callbacks/) 。為了說明如何制作我們自己的自定義回調并顯示它們如何工作,我們將創建一個名為`RecordAccuracy()`的回調,它是一個 Keras Callback 類,并將在每個周期的末尾存儲精度,如下所示: ```py class RecordAccuracy(keras.callbacks.Callback): def on_train_begin(self, logs={}): self.acc = [] def on_epoch_end(self, batch, logs={}): self.acc.append(logs.get('acc')) accuracy = RecordAccuracy() ``` 1. 接下來,我們將使用`fit()`方法訓練我們的 CNN 模型。這里我們將提供`validation_data`和`callbacks`如下: ```py cnn_model.fit(x_train, y_train, batch_size=64, epochs=3, validation_data=(x_test, y_test), callbacks=[accuracy]) print(accuracy.acc) ``` 1. 此訓練將產生類似的輸出,如下所示: ```py Train on 55000 samples, validate on 64 samples Epoch 1/3 64/55000 [..............................] - ETA: 2:59 - loss: 2.2805 - acc: 0.0625 192/55000 [>.............................] - ETA: 1:14 - loss: 2.2729 - acc: 0.1302\ ... 54848/55000 [============================>.] - ETA: 0s - loss: 0.0603 - acc: 0.9816 54976/55000 [============================>.] - ETA: 0s - loss: 0.0603 - acc: 0.9816 55000/55000 [==============================] - 26s 469us/step - loss: 0.0604 - acc: 0.9816 - val_loss: 0.0139 - val_acc: 1.0000 Out[]: <tensorflow.python.keras.callbacks.History at 0x7f69494c7780> [0.9414363636450334, 0.9815818181731484, 0.9998980778226293] ``` ## 工作原理 在這個秘籍中,我們展示了 Keras 的簡潔創建和訓練模型。您可以自動處理變量類型,維度和數據攝取的許多復雜細節。雖然這可以讓人放心,但我們應該意識到,如果我們掩蓋太多模型細節,我們可能無意中實現了錯誤的模型。 ## 另見 有關 Keras 的更多信息,建議讀者查看以下資源: * 官方 Keras 文件: [https://keras.io/](https://keras.io/) * TensorFlow Keras 教程: [https://www.tensorflow.org/guide/keras](https://www.tensorflow.org/guide/keras) * “Keras 簡介”,Francois Chollet 在斯坦福大學的客座講座(幻燈片中的 PDF 格式): [https://web.stanford.edu/class/cs20si/lectures/march9guestlecture.pdf](https://web.stanford.edu/class/cs20si/lectures/march9guestlecture.pdf)
                  <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>

                              哎呀哎呀视频在线观看