国产一区二区三区四区在线观看 _欧美日韩国产高清一区_精品成人佐山爱一区二区_国产精品一卡二

二維碼
企資網

掃一掃關注

當前位置: 首頁 » 企資快報 » 精準 » 正文

一個神經網絡有多少個神經元?

放大字體  縮小字體 發布日期:2021-08-16 07:32:11    作者:本站原創    瀏覽次數:18
導讀

引言神經網絡是機器學習的一個迷人的領域,但是她們有時很難優化和解釋。事實上,她們有幾個超參數。要優化的最常見的超參數是隱藏層中的神經元數量。讓我們看看如何為我們的數據集找到一個神經網絡的最佳神經元數量

引言

神經網絡是機器學習的一個迷人的領域,但是她們有時很難優化和解釋。事實上,她們有幾個超參數。要優化的最常見的超參數是隱藏層中的神經元數量。讓我們看看如何為我們的數據集找到一個神經網絡的最佳神經元數量。

什么是神經網絡?

神經網絡是一種特定模型,她可以根據一層神經元來捕捉特征與目標之間的相關性,從而轉換數據集。一個神經網絡是由幾層神經元組成的。每個神經元獲取一些輸入,轉換她們并返回輸出。一個神經元的輸出可以成為下一層神經元的輸入等等,構建越來越復雜的架構。

第一層稱為輸入層,由返回特征值本身的神經元構成。然后,第一層的每個神經元連接到隱藏層的所有神經元,負責網絡的學習能力。隱藏層后面可以跟幾個其他隱藏層,這是深度學習網絡的典型特征。最后,將最后一個隱藏層的輸出提供給給出結果(即目標變量的值)的輸出層。

在最簡單的形式中,神經網絡只有一個隱藏層,如下圖所示。

輸入層的神經元數目等于特征數目。根據目標變量定義輸出層的神經元數。接下來的問題是如何為隱藏層找到正確的神經元數量。

數量太少可能會產生欠擬合,因為網絡可能無法正確學習。但是數量太多有可能產生過擬合,因為從網絡中學習了太多從而無法泛化。因此必須有合適數量的神經元來確保良好的訓練。

如何優化神經元的數量

該過程非常簡單,她使用交叉驗證:

  • 設置一定數量的神經元
  • 在 k 折交叉驗證中計算某些性能指標的平均值
  • 用不同數量的神經元重復這個過程
  • 選擇神經元的數量,最大化 k 交叉驗證的平均值

    交叉驗證很重要,因為使用她我們可以確保模型不會過擬合或欠擬合。

    這個過程非常類似于超參數調優,因為隱藏層中的神經元數量實際上是一個要調優的超參數。

    現在讓我們看看如何在 Python 中實現這個過程。

    在 Python 中的示例

    在這個例子中,我將展示如何使用 scikit-learn 庫優化 Python 中的神經元數量。事實上,你也可能會使用 Keras 來構建神經網絡,但概念是完全相同的。

    我將使用 scikit-learn 中包含的乳腺癌示例數據集。

    首先,讓我們導入一些有用的庫。

    import numpy as npfrom sklearn.preprocessing import StandardScalerfrom sklearn.neural_network import MLPClassifierfrom sklearn.datasets import load_breast_cancerfrom sklearn.model_selection import train_test_split, GridSearchCVfrom sklearn.pipeline import Pipelinefrom sklearn.metrics import roc_auc_score

    然后,我們可以加載我們的數據集,并將其分成訓練集和測試集。

    X,y = load_breast_cancer(return_X_y=True)X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

    現在,我們必須定義我們的模型。在本例中,我將使用一個簡單的帶有單個隱藏層的多層感知器。為了簡單起見,構造函數的所有參數都保留在她們的標準值中。我只是設置隨機狀態,以確保結果的可重復性。

    在將數據集提供給神經網絡之前,不要忘記縮放特征。為簡單起見,我將在 scikit-learn 中使用 Pipeline 對象,然后應用標準化。

    model = Pipeline([                  ('scaler',StandardScaler()),                  ('model',MLPClassifier(random_state=0))])

    現在,我們必須通過搜索最佳神經元數量來優化我們的網絡。請記住,我們嘗試了幾種可能的數字并計算交叉驗證中性能指標的平均值。最大化這樣一個值的神經元數量就是我們正在尋找的數量。

    為此,我們可以使用 GridSearchCV 對象。由于我們正在處理二元分類問題,因此我們要最大化的指標是 AUROC。我們將以 2 的步長跨越 5 到 100 個神經元。

    search = GridSearchCV(model,   {'model__hidden_layer_sizes':[(x,) for x in np.arange(5,100,2)]},   cv = 5, scoring = "roc_auc", verbose=3, n_jobs = -1                      )

    最后,我們可以尋找最佳的神經元數量。

    search.fit(X_train, y_train)

    搜索結束后,我們會得到最好的平均分,即:

    search.best_score_# 0.9947175348495965

    神經元的最佳數量是:

    search.best_params_# {'model__hidden_layer_sizes': (75,)}

    最后,我們可以在測試數據集上計算這樣一個模型的 AUROC,以確保我們沒有對數據集進行過多的處理。

    roc_auc_score(y_test,search.predict_proba(X_test)[:,1])# 0.9982730973233008

    我們得到的值仍然很高,所以我們很確定優化后的模型已經泛化了訓練數據集,從她攜帶的信息中學習。

    總結

    優化神經網絡可能是一個復雜的任務。在這篇文章中,我已經解釋了一種優化神經元數量的可能方法,但是同樣的概念甚至可以應用到其他超參數(比如激活函數、小批量大小、時代數量、學習速度)。記住,超參數的數量越多,優化的速度就越慢。

  •  
    (文/本站原創)
    免責聲明
    本文僅代表作發布者:本站原創個人觀點,本站未對其內容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內容,一經發現,立即刪除,需自行承擔相應責任。涉及到版權或其他問題,請及時聯系我們刪除處理郵件:weilaitui@qq.com。
     

    Copyright ? 2016 - 2025 - 企資網 48903.COM All Rights Reserved 粵公網安備 44030702000589號

    粵ICP備16078936號

    微信

    關注
    微信

    微信二維碼

    WAP二維碼

    客服

    聯系
    客服

    聯系客服:

    在線QQ: 303377504

    客服電話: 020-82301567

    E_mail郵箱: weilaitui@qq.com

    微信公眾號: weishitui

    客服001 客服002 客服003

    工作時間:

    周一至周五: 09:00 - 18:00

    反饋

    用戶
    反饋

    主站蜘蛛池模板: 日本一区二区在线播放| 国产一区二区视频在线观看| 国产极品在线视频| 久久资源av| 国产精品观看在线亚洲人成网| 国产精品久久久久久免费观看| 日本久久亚洲电影| 日韩一区二区高清视频| 久久国产精品久久久久V| 久久综合九九| 久久视频在线免费观看| 久久久综合免费视频| 精品久久久久久久久久中文字幕| 欧美韩国日本精品一区二区三区| 国产精品日韩一区二区免费视频| 久久riav二区三区| 奇米四色中文综合久久| 日韩中文字幕网站| 久久激情五月丁香伊人| 欧美激情亚洲精品| 国产综合第一页| 精品中文字幕乱| 狠狠干视频网站| 久久久久久香蕉| 一区二区高清视频| 国产欧美日本在线| 欧美激情 国产精品| 欧美精品成人在线| 久久久久久久久久久久久久久久久久av| 欧美亚洲国产另类| 日本一区精品| 国产va免费精品高清在线观看| 国产精品视频区1| 人妻精品无码一区二区三区| 国产精品久久久久久久久免费看 | 国产日韩在线免费v| 国内自拍欧美激情| 日韩中文在线字幕| 亚洲自拍欧美另类| 国产精品久久久久久久久久久久午夜片| 国产福利久久|