<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 評估 Keras 中深度學習模型的性能 > 原文: [https://machinelearningmastery.com/evaluate-performance-deep-learning-models-keras/](https://machinelearningmastery.com/evaluate-performance-deep-learning-models-keras/) Keras 是一個易于使用且功能強大被用于深度學習的 Python 庫。 在設計和配置深度學習模型時,需要做出許多決策,這些決策大多必須通過反復試驗和根據真實數據進行評估,以經驗方式解決。 因此,有一種強大的方法來評估神經網絡和深度學習模型的性能至關重要。 在這篇文章中,您將發現使用 Keras 評估模型性能的幾種方法。 讓我們開始吧。 * **2016 年 10 月更新**:更新了 Keras 1.1.0 和 scikit-learn v0.18 的示例。 * **2017 年 3 月更新**:更新了 Keras 2.0.2,TensorFlow 1.0.1 和 Theano 0.9.0 的示例。 * **更新 March / 2018** :添加了備用鏈接以下載數據集,因為原始圖像已被刪除。 ![Evaluate the Performance Of Deep Learning Models in Keras](https://img.kancloud.cn/9e/fd/9efdddd920bdc8b61ab69e665bee6b02_640x481.png) 照片由 [Thomas Leuthard](https://www.flickr.com/photos/thomasleuthard/7273077758/) 拍攝,保留所屬權利 ## 根據經驗評估網絡配置 在設計和配置深度學習模型時,必須做出很多決策。 其中許多決策可以通過復制其他人的網絡結構并使用啟發式方法來解。最終,最好的技術是根據實際設計小型實驗并使用實際數據憑經驗評估相關選項。 這包括高級決策,例如網絡中層的數量,大小和類型,它還包括較低級別的決策,如損失函數的選擇,激活函數,優化過程和迭代次數。 深度學習通常用于具有非常大的數據集的問題,例如有數萬或數十萬個實例。 因此,您需要擁有一個強大的測試工具,可以讓您評估給定配置在不可見的數據上的性能,并將較為可靠的性能表現與其他配置進行比較。 ## 數據拆分 大量數據和復雜的模型需要非常長的訓練時間。 因此,通常將數據分為測試數據集和驗證數據集。 Keras 提供了兩種方便的方式來評估您的深度學習算法: 1. 使用自動驗證數據集。 2. 使用手動驗證數據集。 ### 使用自動驗證數據集 Keras 可以將訓練數據的一部分劃分為為驗證數據集,并在每個迭代中評估模型在該驗證數據集上的性能。 您可以通過將`fit()`函數上的 **validation_split** 參數設置為訓練數據集大小的百分比來完成此操作。 例如,20%的合理值可能是 0.2 或 0.33,或者為了驗證而將驗證數據集的數量選擇的訓練數據集的 33%。 下面的示例演示了如何在小二元分類問題上使用自動驗證數據集。本文中的所有實例均使用[皮馬印第安人糖尿病數據集](http://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes)。您可以[從 UCI 機器學習庫下載](http://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data),并使用文件名 **pima-indians-diabetes.csv** 將數據文件保存到當前工作目錄中(更新:[從這里](https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv))。 ```py # 使用自動驗證集的MLP from keras.models import Sequential from keras.layers import Dense import numpy #固定隨機種子再現性 numpy.random.seed(7) # 加載數據集 dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",") # 將數據集劃分為輸入變量和輸出變量 X = dataset[:,0:8] Y = dataset[:,8] # 創建模型 model = Sequential() model.add(Dense(12, input_dim=8, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(1, activation='sigmoid')) # 編譯模型 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # 擬合模型 model.fit(X, Y, validation_split=0.33, epochs=150, batch_size=10) ``` 運行該示例,您可以看到每個時期的詳細輸出顯示了訓練數據集和驗證數據集的損失和準確性。 ```py ... Epoch 145/150 514/514 [==============================] - 0s - loss: 0.5252 - acc: 0.7335 - val_loss: 0.5489 - val_acc: 0.7244 Epoch 146/150 514/514 [==============================] - 0s - loss: 0.5198 - acc: 0.7296 - val_loss: 0.5918 - val_acc: 0.7244 Epoch 147/150 514/514 [==============================] - 0s - loss: 0.5175 - acc: 0.7335 - val_loss: 0.5365 - val_acc: 0.7441 Epoch 148/150 514/514 [==============================] - 0s - loss: 0.5219 - acc: 0.7354 - val_loss: 0.5414 - val_acc: 0.7520 Epoch 149/150 514/514 [==============================] - 0s - loss: 0.5089 - acc: 0.7432 - val_loss: 0.5417 - val_acc: 0.7520 Epoch 150/150 514/514 [==============================] - 0s - loss: 0.5148 - acc: 0.7490 - val_loss: 0.5549 - val_acc: 0.7520 ``` ### 使用手動驗證數據集 Keras 還允許您手動指定在訓練期間用于驗證的數據集。 在這個例子中,我們使用 Python [scikit-learn](http://scikit-learn.org/stable/index.html) 機器學習庫中方便的 [train_test_split](http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.train_test_split.html)()函數將我們的數據分成訓練和測試數據集。我們使用 67%用于訓練,剩余 33%用于驗證。 可以通過 **validation_data** 參數將驗證數據集指定給 Keras 中的`fit()`函數,該函數輸出和輸入的數據類型是數據集中的元組類型。 ```py # 使用手動驗證集的MLP from keras.models import Sequential from keras.layers import Dense from sklearn.model_selection import train_test_split import numpy #固定隨機種子再現性 seed = 7 numpy.random.seed(seed) # 加載數據集 dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",") # 將數據集劃分為輸入變量X和輸出變量Y X = dataset[:,0:8] Y = dataset[:,8] # 將數據集劃分為67%的訓練集和33%的測試集 X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=seed) # 創建模型 model = Sequential() model.add(Dense(12, input_dim=8, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(1, activation='sigmoid')) # 編譯模型 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # 擬合模型 model.fit(X_train, y_train, validation_data=(X_test,y_test), epochs=150, batch_size=10) ``` 與之前一樣,運行該示例提供了詳細的訓練輸出數據,其中包括模型在每個迭代期間在訓練集和驗證數據集上的損失和精確度。 ```py ... Epoch 145/150 514/514 [==============================] - 0s - loss: 0.4847 - acc: 0.7704 - val_loss: 0.5668 - val_acc: 0.7323 Epoch 146/150 514/514 [==============================] - 0s - loss: 0.4853 - acc: 0.7549 - val_loss: 0.5768 - val_acc: 0.7087 Epoch 147/150 514/514 [==============================] - 0s - loss: 0.4864 - acc: 0.7743 - val_loss: 0.5604 - val_acc: 0.7244 Epoch 148/150 514/514 [==============================] - 0s - loss: 0.4831 - acc: 0.7665 - val_loss: 0.5589 - val_acc: 0.7126 Epoch 149/150 514/514 [==============================] - 0s - loss: 0.4961 - acc: 0.7782 - val_loss: 0.5663 - val_acc: 0.7126 Epoch 150/150 514/514 [==============================] - 0s - loss: 0.4967 - acc: 0.7588 - val_loss: 0.5810 - val_acc: 0.6929 ``` ## 手動 k-fold 交叉驗證 機器學習模型評估的黃金標準是 [k 折交叉驗證](https://en.wikipedia.org/wiki/Cross-validation_(statistics)。 它提供了模型對不可見數據的性能的可靠估計,它通過將訓練數據集拆分為 k 子集來實現此,并對所有子集(除保留的子集外)輪流訓練模型,并評估已保留驗證數據集上的模型性能,該過程將重復,直到所有子集都有機會成為已執行的驗證集。然后,在創建的所有模型中對性能度量值進行平均。 交叉驗證通常不用于評估深度學習模型,因為計算的花費會更高。例如,k 折交叉驗證通常用于 5 或 10 折,因此,必須構造和評估 5 或 10 個模型,從而大大增加了模型的評估時間。 然而,當問題足夠小或者你有足夠的計算資源時,k-fold 交叉驗證可以讓你對模型的表現進行較少的偏差估計。 在下面的例子中,我們使用來自 [scikit-learn](http://scikit-learn.org/stable/index.html) Python 機器學習庫的方便的 [StratifiedKFold](http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.StratifiedKFold.html) 類將訓練數據集分成 10 折,折疊是分層的,這意味著算法試圖平衡每個折疊中每個類的實例數。 該示例使用數據的 10 個拆分創建評估 10 個模型,并收集所有的性能分數,并通過將`verbose=0`傳遞給模型上的`fit()`函數和`evaluate()`函數,并將每個迭代期間的詳細輸出關閉。 為每個模型存儲和打印相關的性能數據,然后,在運行結束時打印模型性能的平均差和標準差,以提供對模型精度的可靠估計。 ```py # 為Pima Indians 數據集使用10折交叉驗證的MLP from keras.models import Sequential from keras.layers import Dense from sklearn.model_selection import StratifiedKFold import numpy # 固定隨機種子再現性 seed = 7 numpy.random.seed(seed) # 加載數據集 dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",") # 將數據集劃分為輸入數據X和輸出數據Y X = dataset[:,0:8] Y = dataset[:,8] # 定義10折交叉驗證測試線束 kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed) cvscores = [] for train, test in kfold.split(X, Y): # 創建模型 model = Sequential() model.add(Dense(12, input_dim=8, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(1, activation='sigmoid')) # 編譯模型 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # 擬合模型 model.fit(X[train], Y[train], epochs=150, batch_size=10, verbose=0) # 評估模型 scores = model.evaluate(X[test], Y[test], verbose=0) print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100)) cvscores.append(scores[1] * 100) print("%.2f%% (+/- %.2f%%)" % (numpy.mean(cvscores), numpy.std(cvscores))) ``` 運行該示例將花費不到一分鐘,并將產生以下輸出: ```py acc: 77.92% acc: 68.83% acc: 72.73% acc: 64.94% acc: 77.92% acc: 35.06% acc: 74.03% acc: 68.83% acc: 34.21% acc: 72.37% 64.68% (+/- 15.50%) ``` ## 摘要 在這篇文章中,您發現了使用一種強大的方法來估計深度學習模型在不可見數據集上的模型性能的重要性。 您發現了三種使用 Keras 庫在 Python 中估計深度學習模型性能的方法: * 使用自動驗證數據集。 * 使用手動驗證數據集。 * 使用手動 k-fold 交叉驗證。 您對 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>

                              哎呀哎呀视频在线观看