<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之旅 廣告
                # Keras 中神經網絡模型的 5 步生命周期 > 原文: [https://machinelearningmastery.com/5-step-life-cycle-neural-network-models-keras/](https://machinelearningmastery.com/5-step-life-cycle-neural-network-models-keras/) 使用 Keras 在 Python 中創建和評估深度學習神經網絡非常容易,但您必須遵循嚴格的模型生命周期。 在這篇文章中,您將了解在 Keras 中創建,訓練和評估深度學習神經網絡的逐步生命周期,以及如何使用訓練好的模型進行預測。 閱讀這篇文章后你會知道: * 如何在 Keras 中定義,編譯,擬合和評估深度學習神經網絡。 * 如何為回歸和分類預測建模問題選擇標準默認值。 * 如何將它們結合在一起,在 Keras 開發和運行您的第一個多層感知器網絡。 讓我們現在開始吧。 * **2017 年 3 月更新**:更新了 Keras 2.0.2,TensorFlow 1.0.1 和 Theano 0.9.0 的示例。 * **更新 March / 2018** :添加了備用鏈接以下載數據集,因為原始圖像已被刪除。 ![Deep Learning Neural Network Life-Cycle in Keras](https://img.kancloud.cn/1e/a6/1ea6e3bffb343c4d89f152a82969aa8f_640x460.png) 圖片[Martin Stitchener](https://www.flickr.com/photos/dxhawk/6842278135/) 提供,并保留所屬權利。 ## 概述 下面概述了我們將要研究的 Keras 神經網絡模型生命周期的 5 個步驟。 1. 定義網絡 2. 編譯網絡 3. 擬合網絡 4. 評估網絡 5. 做出預測 ![5 Step Life-Cycle for Neural Network Models in Keras](https://img.kancloud.cn/52/34/523415ca2417a7f965c2301b990ae26e_212x415.png) Keras 中神經網絡模型的 5 步生命周期 ## 步驟 1. 定義網絡 第一步是定義您的神經網絡。 神經網絡在 Keras 中定義為層序列,這些層的容器是 Sequential 類。 第一步是創建 Sequential 類的實例,然后,您可以創建層并按照它們應當連接的順序添加它們。 例如,我們可以分兩步完成: ```py model = Sequential() model.add(Dense(2)) ``` 但是我們也可以通過創建一個層數組并將其傳遞給 Sequential 的構造函數來一步完成。 ```py layers = [Dense(2)] model = Sequential(layers) ``` 網絡中的第一層必須定義預期的輸入數量,指定它的方式可能因網絡類型而異,但對于 Multilayer Perceptron 模型,這由`input_dim`屬性指定。 例如,一個較小的多層感知器模型,在可見層中有 2 個輸入,隱藏層中有 5 個神經元,輸出層中有一個神經元,可以定義為: ```py model = Sequential() model.add(Dense(5, input_dim=2)) model.add(Dense(1)) ``` 可以將將序列模型視為管道,將原始數據輸入底部,并將預測輸出到頂部。 這在 Keras 中是一個容易理解的概念,因為傳統上與層相關的關注點也可以拆分并作為單獨的層添加,清楚地顯示它們在從輸入到預測的數據轉換中的作用。例如,可以提取轉換來自層中每個神經元的求和信號的激活函數,并將其作為激活函數的層狀對象添加到 Sequential 中。 ```py model = Sequential() model.add(Dense(5, input_dim=2)) model.add(Activation('relu')) model.add(Dense(1)) model.add(Activation('sigmoid')) ``` 激活函數的選擇對于輸出層是最重要的,因為它將定義預測將采用的格式。 例如,下面是一些常見的預測建模問題類型以及可以在輸出層中使用的結構和標準激活函數: * **回歸**:線性激活函數或和與輸出數線性匹配的神經元數。 * **二元分類(2 級)**:`Logistic` 激活函數或`sigmoid`激活函數和一個神經元輸出層。 * **多元分類(>2 類)**:假設單熱編碼輸出模式,`Softmax` 激活函數或`softmax`和每個神經元代表一個輸出。 ## 步驟2. 編譯網絡 一旦我們定義了網絡,我們就必須編譯它。 編譯是一個提升效率的步驟,它將我們定義的簡單層序列轉換為高效的矩陣變換系列,其格式應在 GPU 或 CPU 上執行,而這具體取決于 Keras 的配置方式。 可以將編譯視為網絡的預計算步驟。 定義模型后始終需要編譯,這包括在使用優化方案訓練之前以及從保存文件加載一組預先訓練的權重的步驟之前,原因是編譯過程處理了網絡的有效表示,這也是利用硬件進行預測所必需的步驟。 編譯需要指定許多參數,專門用于訓練您的網絡,具體地,用于訓練網絡的優化算法和用于評估由優化算法最小化的網絡的損失函數。 例如,下面是編譯定義模型并指定隨機梯度下降(sgd)優化算法和均方誤差(mse)損失函數的情況,通常用于回歸類型的問題。 ```py model.compile(optimizer='sgd', loss='mse') ``` 預測模型問題的類型可以對使用的損失函數的類型施加約束。 例如,下面是不同預測模型類型的一些標準損失函數: * **回歸**:均值平方誤差或` _mse_ `. * **二元分類(2 類)**:對數損失,也稱為交叉熵或` _binary_crossentropy_ `. * **多元分類(> 2 類)**:多類對數損失或`categorical_crossentropy `. 您可以查看 Keras 支持的[損失函數套件。](http://keras.io/objectives/) 最常見的優化算法是隨機梯度下降,但 Keras 還支持其他最先進的優化算法的[套件。](http://keras.io/optimizers/) 使用最常用的優化算法可能是因為它們通常具有更好的性能: * **隨機梯度下降**或` _sgd_ `,需要調整學習速度和動量。 * **ADAM** 或` _adam_ `需要調整學習率。 * **RMSprop** 或` _rmsprop_ `需要調整學習率。 最后,除了損失函數之外,您還可以指定在擬合模型時收集的度量標準,通常,要收集的最有用的附加度量標準是分類問題的精確度,要收集的度量標準由可以由數組中的名稱指定。 例如: ```py model.compile(optimizer='sgd', loss='mse', metrics=['accuracy']) ``` ## 步驟 3. 擬合網絡 一旦網絡被編譯完成之后,它就可以被擬合,這意味著需要在訓練數據集上調整權重參數。 擬合網絡需要指定訓練數據,輸入模式矩陣 X 和匹配輸出模式數組Y。 使用反向傳播算法訓練網絡,并根據編譯模型時指定的優化算法和損失函數進行優化。 反向傳播算法要求神經網絡訓練指定的迭代次數或訓練數據集的曝光。 每個迭代可以被劃分為稱為批次的輸入-輸出模式對的組,這定義了在一個迭代內更新權重之前網絡所暴露的模式數。它也是一種效率優化方式,確保一次不會將太多輸入模式加載到內存中。 擬合網絡的最小例子如下: ```py history = model.fit(X, y, batch_size=10, epochs=100) ``` 擬合后,將返回歷史對象,該對象提供訓練期間模型表現的摘要,這包括損失和編譯模型過程中每個迭代所記錄的的任何其他指標。 ## 步驟4. 評估網絡 一旦網絡被訓練完成,就可以對其進行評估。 可以在訓練數據上評估網絡,但是這不會提供作為預測模型的網絡性能的有效指標,因為訓練網絡時已經使用過這些數據。 我們可以在測試期間不可見的單獨數據集上評估網絡的性能。這將提供對整個網絡性能的估計參數,以便對未來不可見的數據進行預測。 該模型評估所有測試模式的損失,以及編譯模型時指定的任何其他指標,如分類的精確度,返回評估指標的列表。 例如,對于使用精度度量制的模型,我們可以在新數據集上對其進行評估,如下所示: ```py loss, accuracy = model.evaluate(X, y) ``` ## 步驟5. 做出預測 最后,一旦我們對擬合模型的性能感到滿意,我們就可以用它來預測新的數據。 這就像使用新輸入模式數組調用模型上的 `predict()`函數一樣簡單。 例如: ```py predictions = model.predict(x) ``` 預測將以網絡輸出層提供的數據格式返回。 在回歸問題的情況下,這些預測可以是直接問題的形式,該形式由線性激活函數提供。 對于二元分類問題,預測可以是第一類的概率數組,其可以通過舍入轉換為 1 或 0 的整形數表示。 對于多元分類問題,結果可以是概率數組的形式(假設一個熱編碼輸出變量),可能需要使用 [argmax 函數](http://docs.scipy.org/doc/numpy/reference/generated/numpy.argmax.html)將其轉換為單個類輸出預測。 ## 端到端工作示例 讓我們將所有這些與一個小例子結合起來。 這個例子將使用皮馬印第安人發病的糖尿病二元分類問題,即可以從 UCI 機器學習庫下載[(更新:](https://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes)[從這里下載](https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv))。 該問題有 8 個輸入變量和一個輸出類變量,其輸出整數值為 0 和 1。 我們將構建一個多層感知器神經網絡,在可見層中有 8 個輸入,隱藏層中有 12 個神經元,具有整流器激活函數,輸出層中有 1 個神經元具有`sigmod()`激活函數。 我們將使用 ADAM 優化算法和對數損失函數對批量大小為 10 的 100 個迭代次數進行網絡訓練。 一旦擬合完成,我們將評估訓練數據的模型性能,然后對訓練數據進行單獨預測,這是為了簡潔起見,通常我們會在單獨的測試數據集上評估模型性能并對新數據進行預測。 完整的代碼清單如下。 ```py # Sample Multilayer Perceptron Neural Network in Keras from keras.models import Sequential from keras.layers import Dense import numpy # 加載和預處理數據集 dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",") X = dataset[:,0:8] Y = dataset[:,8] # 1. 定義網絡 model = Sequential() model.add(Dense(12, input_dim=8, activation='relu')) model.add(Dense(1, activation='sigmoid')) # 2. 編譯網絡 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # 3. 擬合網絡 history = model.fit(X, Y, epochs=100, batch_size=10) # 4. 評估網絡 loss, accuracy = model.evaluate(X, Y) print("\nLoss: %.2f, Accuracy: %.2f%%" % (loss, accuracy*100)) # 5. 做出預測 probabilities = model.predict(X) predictions = [float(round(x)) for x in probabilities] accuracy = numpy.mean(predictions == Y) print("Prediction Accuracy: %.2f%%" % (accuracy*100)) ``` 運行此示例將生成以下輸出: ```py ... 768/768 [==============================] - 0s - loss: 0.5219 - acc: 0.7591 Epoch 99/100 768/768 [==============================] - 0s - loss: 0.5250 - acc: 0.7474 Epoch 100/100 768/768 [==============================] - 0s - loss: 0.5416 - acc: 0.7331 32/768 [>.............................] - ETA: 0s Loss: 0.51, Accuracy: 74.87% Prediction Accuracy: 74.87% ``` ## 摘要 在這篇文章中,您使用 Keras 庫發現了深度學習神經網絡的 5 步生命周期。 具體來說,你學到了: * 如何在 Keras 中為神經網絡定義,編譯,擬合,評估和預測。 * 如何為分類和回歸問題選擇激活函數和輸出層配置。 * 如何在 Keras 開發和運行您的第一個多層感知器模型。 您對 Keras 中的神經網絡模型有任何疑問嗎?在評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看