我們將在Python中創(chuàng)建一個(gè)NeuralNetwork類(lèi),以訓(xùn)練神經(jīng)元以給出準(zhǔn)確的預(yù)測(cè)。該課程還將具有其他幫助程序功能。
我們擁有十年網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)站建設(shè)經(jīng)驗(yàn),從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁(yè)設(shè)計(jì)師為您提供的解決方案。為企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、微信開(kāi)發(fā)、重慶小程序開(kāi)發(fā)公司、手機(jī)網(wǎng)站制作設(shè)計(jì)、HTML5建站、等業(yè)務(wù)。無(wú)論您有什么樣的網(wǎng)站設(shè)計(jì)或者設(shè)計(jì)方案要求,我們都將富于創(chuàng)造性的提供專(zhuān)業(yè)設(shè)計(jì)服務(wù)并滿(mǎn)足您的需求。
1. 應(yīng)用Sigmoid函數(shù)
我們將使用 Sigmoid函數(shù) (它繪制一條“ S”形曲線)作為神經(jīng)網(wǎng)絡(luò)的激活函數(shù)。
2. 訓(xùn)練模型
這是我們將教神經(jīng)網(wǎng)絡(luò)做出準(zhǔn)確預(yù)測(cè)的階段。每個(gè)輸入將具有權(quán)重(正或負(fù))。
這意味著具有大量正權(quán)重或大量負(fù)權(quán)重的輸入將對(duì)結(jié)果輸出產(chǎn)生更大的影響。
我們最初是將每個(gè)權(quán)重分配給一個(gè)隨機(jī)數(shù)。
本文參考翻譯于此網(wǎng)站 —— 原文
File "C:\Python33\lib\trml2pdf.py", line 319
raise ValueError, "Not enough space"
錯(cuò)誤在這里,值錯(cuò)誤,返回原因空間不夠
因?yàn)閟igmoid就是預(yù)測(cè)0到1之間的連續(xù)值。通常當(dāng)二分類(lèi)預(yù)測(cè)使用,你的問(wèn)題是否復(fù)合二分類(lèi)如果可以就把類(lèi)別換成0和1就可以了,如果是做回歸那就不行了,要換其他損失函數(shù)
在神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)負(fù)責(zé)將來(lái)自節(jié)點(diǎn)的加權(quán)輸入轉(zhuǎn)換為該輸入的節(jié)點(diǎn)或輸出的激活。ReLU 是一個(gè)分段線性函數(shù),如果輸入為正,它將直接輸出,否則,它將輸出為零。它已經(jīng)成為許多類(lèi)型神經(jīng)網(wǎng)絡(luò)的默認(rèn)激活函數(shù),因?yàn)槭褂盟哪P透菀子?xùn)練,并且通常能夠獲得更好的性能。在本文中,我們來(lái)詳細(xì)介紹一下ReLU,主要分成以下幾個(gè)部分:
1、Sigmoid 和 Tanh 激活函數(shù)的局限性
2、ReLU(Rectified Linear Activation Function)
3、如何實(shí)現(xiàn)ReLU
4、ReLU的優(yōu)點(diǎn)
5、使用ReLU的技巧
一個(gè)神經(jīng)網(wǎng)絡(luò)由層節(jié)點(diǎn)組成,并學(xué)習(xí)將輸入的樣本映射到輸出。對(duì)于給定的節(jié)點(diǎn),將輸入乘以節(jié)點(diǎn)中的權(quán)重,并將其相加。此值稱(chēng)為節(jié)點(diǎn)的summed activation。然后,經(jīng)過(guò)求和的激活通過(guò)一個(gè)激活函數(shù)轉(zhuǎn)換并定義特定的輸出或節(jié)點(diǎn)的“activation”。
最簡(jiǎn)單的激活函數(shù)被稱(chēng)為線性激活,其中根本沒(méi)有應(yīng)用任何轉(zhuǎn)換。 一個(gè)僅由線性激活函數(shù)組成的網(wǎng)絡(luò)很容易訓(xùn)練,但不能學(xué)習(xí)復(fù)雜的映射函數(shù)。線性激活函數(shù)仍然用于預(yù)測(cè)一個(gè)數(shù)量的網(wǎng)絡(luò)的輸出層(例如回歸問(wèn)題)。
非線性激活函數(shù)是更好的,因?yàn)樗鼈冊(cè)试S節(jié)點(diǎn)在數(shù)據(jù)中學(xué)習(xí)更復(fù)雜的結(jié)構(gòu) 。兩個(gè)廣泛使用的非線性激活函數(shù)是 sigmoid 函數(shù)和 雙曲正切 激活函數(shù)。
Sigmoid 激活函數(shù) ,也被稱(chēng)為 Logistic函數(shù)神經(jīng)網(wǎng)絡(luò),傳統(tǒng)上是一個(gè)非常受歡迎的神經(jīng)網(wǎng)絡(luò)激活函數(shù)。函數(shù)的輸入被轉(zhuǎn)換成介于0.0和1.0之間的值。大于1.0的輸入被轉(zhuǎn)換為值1.0,同樣,小于0.0的值被折斷為0.0。所有可能的輸入函數(shù)的形狀都是從0到0.5到1.0的 s 形。在很長(zhǎng)一段時(shí)間里,直到20世紀(jì)90年代早期,這是神經(jīng)網(wǎng)絡(luò)的默認(rèn)激活方式。
雙曲正切函數(shù) ,簡(jiǎn)稱(chēng) tanh,是一個(gè)形狀類(lèi)似的非線性激活函數(shù),輸出值介于-1.0和1.0之間。在20世紀(jì)90年代后期和21世紀(jì)初期,由于使用 tanh 函數(shù)的模型更容易訓(xùn)練,而且往往具有更好的預(yù)測(cè)性能,因此 tanh 函數(shù)比 Sigmoid激活函數(shù)更受青睞。
Sigmoid和 tanh 函數(shù)的一個(gè)普遍問(wèn)題是它們值域飽和了 。這意味著,大值突然變?yōu)?.0,小值突然變?yōu)?-1或0。此外,函數(shù)只對(duì)其輸入中間點(diǎn)周?chē)淖兓浅C舾小?/p>
無(wú)論作為輸入的節(jié)點(diǎn)所提供的求和激活是否包含有用信息,函數(shù)的靈敏度和飽和度都是有限的。一旦達(dá)到飽和狀態(tài),學(xué)習(xí)算法就需要不斷調(diào)整權(quán)值以提高模型的性能。
最后,隨著硬件能力的提高,通過(guò) gpu 的非常深的神經(jīng)網(wǎng)絡(luò)使用Sigmoid 和 tanh 激活函數(shù)不容易訓(xùn)練。在大型網(wǎng)絡(luò)深層使用這些非線性激活函數(shù)不能接收有用的梯度信息。錯(cuò)誤通過(guò)網(wǎng)絡(luò)傳播回來(lái),并用于更新權(quán)重。每增加一層,錯(cuò)誤數(shù)量就會(huì)大大減少。這就是所謂的 消失梯度 問(wèn)題,它能有效地阻止深層(多層)網(wǎng)絡(luò)的學(xué)習(xí)。
雖然非線性激活函數(shù)的使用允許神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)復(fù)雜的映射函數(shù),但它們有效地阻止了學(xué)習(xí)算法與深度網(wǎng)絡(luò)的工作。在2000年代后期和2010年代初期,通過(guò)使用諸如波爾茲曼機(jī)器和分層訓(xùn)練或無(wú)監(jiān)督的預(yù)訓(xùn)練等替代網(wǎng)絡(luò)類(lèi)型,這才找到了解決辦法。
為了訓(xùn)練深層神經(jīng)網(wǎng)絡(luò), 需要一個(gè)激活函數(shù)神經(jīng)網(wǎng)絡(luò),它看起來(lái)和行為都像一個(gè)線性函數(shù),但實(shí)際上是一個(gè)非線性函數(shù),允許學(xué)習(xí)數(shù)據(jù)中的復(fù)雜關(guān)系 。該函數(shù)還必須提供更靈敏的激活和輸入,避免飽和。
因此,ReLU出現(xiàn)了, 采用 ReLU 可以是深度學(xué)習(xí)革命中為數(shù)不多的里程碑之一 。ReLU激活函數(shù)是一個(gè)簡(jiǎn)單的計(jì)算,如果輸入大于0,直接返回作為輸入提供的值;如果輸入是0或更小,返回值0。
我們可以用一個(gè)簡(jiǎn)單的 if-statement 來(lái)描述這個(gè)問(wèn)題,如下所示:
對(duì)于大于零的值,這個(gè)函數(shù)是線性的,這意味著當(dāng)使用反向傳播訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),它具有很多線性激活函數(shù)的理想特性。然而,它是一個(gè)非線性函數(shù),因?yàn)樨?fù)值總是作為零輸出。由于矯正函數(shù)在輸入域的一半是線性的,另一半是非線性的,所以它被稱(chēng)為 分段線性函數(shù)(piecewise linear function ) 。
我們可以很容易地在 Python 中實(shí)現(xiàn)ReLU激活函數(shù)。
我們希望任何正值都能不變地返回,而0.0或負(fù)值的輸入值將作為0.0返回。
下面是一些修正的線性激活函數(shù)的輸入和輸出的例子:
輸出如下:
我們可以通過(guò)繪制一系列的輸入和計(jì)算出的輸出,得到函數(shù)的輸入和輸出之間的關(guān)系。下面的示例生成一系列從 -10到10的整數(shù),并計(jì)算每個(gè)輸入的校正線性激活,然后繪制結(jié)果。
運(yùn)行這個(gè)例子會(huì)創(chuàng)建一個(gè)圖,顯示所有負(fù)值和零輸入都突變?yōu)?.0,而正輸出則返回原樣:
ReLU函數(shù)的導(dǎo)數(shù)是斜率。負(fù)值的斜率為0.0,正值的斜率為1.0。
傳統(tǒng)上,神經(jīng)網(wǎng)絡(luò)領(lǐng)域已經(jīng)不能是任何不完全可微的激活函數(shù),而ReLU是一個(gè)分段函數(shù)。從技術(shù)上講,當(dāng)輸入為0.0時(shí),我們不能計(jì)算ReLU的導(dǎo)數(shù),但是,我們可以假設(shè)它為0。
tanh 和 sigmoid 激活函數(shù)需要使用指數(shù)計(jì)算, 而ReLU只需要max(),因此他 計(jì)算上更簡(jiǎn)單,計(jì)算成本也更低 。
ReLU的一個(gè)重要好處是,它能夠輸出一個(gè)真正的零值 。這與 tanh 和 sigmoid 激活函數(shù)不同,后者學(xué)習(xí)近似于零輸出,例如一個(gè)非常接近于零的值,但不是真正的零值。這意味著負(fù)輸入可以輸出真零值,允許神經(jīng)網(wǎng)絡(luò)中的隱層激活包含一個(gè)或多個(gè)真零值。這就是所謂的稀疏表示,是一個(gè)理想的性質(zhì),在表示學(xué)習(xí),因?yàn)樗梢约铀賹W(xué)習(xí)和簡(jiǎn)化模型。
ReLU看起來(lái)更像一個(gè)線性函數(shù),一般來(lái)說(shuō),當(dāng)神經(jīng)網(wǎng)絡(luò)的行為是線性或接近線性時(shí),它更容易優(yōu)化 。
這個(gè)特性的關(guān)鍵在于,使用這個(gè)激活函數(shù)進(jìn)行訓(xùn)練的網(wǎng)絡(luò)幾乎完全避免了梯度消失的問(wèn)題,因?yàn)樘荻热匀慌c節(jié)點(diǎn)激活成正比。
ReLU的出現(xiàn)使得利用硬件的提升和使用反向傳播成功訓(xùn)練具有非線性激活函數(shù)的深層多層網(wǎng)絡(luò)成為可能 。
很長(zhǎng)一段時(shí)間,默認(rèn)的激活方式是Sigmoid激活函數(shù)。后來(lái),Tanh成了激活函數(shù)。 對(duì)于現(xiàn)代的深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),默認(rèn)的激活函數(shù)是ReLU激活函數(shù) 。
ReLU 可以用于大多數(shù)類(lèi)型的神經(jīng)網(wǎng)絡(luò), 它通常作為多層感知機(jī)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的激活函數(shù) ,并且也得到了許多論文的證實(shí)。傳統(tǒng)上,LSTMs 使用 tanh 激活函數(shù)來(lái)激活cell狀態(tài),使用 Sigmoid激活函數(shù)作為node輸出。 而ReLU通常不適合RNN類(lèi)型網(wǎng)絡(luò)的使用。
偏置是節(jié)點(diǎn)上具有固定值的輸入,這種偏置會(huì)影響激活函數(shù)的偏移,傳統(tǒng)的做法是將偏置輸入值設(shè)置為1.0。當(dāng)在網(wǎng)絡(luò)中使用 ReLU 時(shí), 可以將偏差設(shè)置為一個(gè)小值,例如0.1 。
在訓(xùn)練神經(jīng)網(wǎng)絡(luò)之前,網(wǎng)絡(luò)的權(quán)值必須初始化為小的隨機(jī)值。當(dāng)在網(wǎng)絡(luò)中使用 ReLU 并將權(quán)重初始化為以零為中心的小型隨機(jī)值時(shí),默認(rèn)情況下,網(wǎng)絡(luò)中一半的單元將輸出零值。有許多啟發(fā)式方法來(lái)初始化神經(jīng)網(wǎng)絡(luò)的權(quán)值,但是沒(méi)有最佳權(quán)值初始化方案。 何愷明的文章指出Xavier 初始化和其他方案不適合于 ReLU ,對(duì) Xavier 初始化進(jìn)行一個(gè)小的修改,使其適合于 ReLU,提出He Weight Initialization,這個(gè)方法更適用于ReLU 。
在使用神經(jīng)網(wǎng)絡(luò)之前對(duì)輸入數(shù)據(jù)進(jìn)行縮放是一個(gè)很好的做法。這可能涉及標(biāo)準(zhǔn)化變量,使其具有零均值和單位方差,或者將每個(gè)值歸一化為0到1。如果不對(duì)許多問(wèn)題進(jìn)行數(shù)據(jù)縮放,神經(jīng)網(wǎng)絡(luò)的權(quán)重可能會(huì)增大,從而使網(wǎng)絡(luò)不穩(wěn)定并增加泛化誤差。 無(wú)論是否在網(wǎng)絡(luò)中使用 ReLU,這種縮放輸入的良好實(shí)踐都適用。
ReLU 的輸出在正域上是無(wú)界的。這意味著在某些情況下,輸出可以繼續(xù)增長(zhǎng)。因此,使用某種形式的權(quán)重正則化可能是一個(gè)比較好的方法,比如 l1或 l2向量范數(shù)。 這對(duì)于提高模型的稀疏表示(例如使用 l 1正則化)和降低泛化誤差都是一個(gè)很好的方法 。
.
作者 | Vihar Kurama
編譯 | 荷葉
來(lái)源 | 云棲社區(qū)
摘要:深度學(xué)習(xí)背后的主要原因是人工智能應(yīng)該從人腦中汲取靈感。本文就用一個(gè)小例子無(wú)死角的介紹一下深度學(xué)習(xí)!
人腦模擬
深度學(xué)習(xí)背后的主要原因是人工智能應(yīng)該從人腦中汲取靈感。此觀點(diǎn)引出了“神經(jīng)網(wǎng)絡(luò)”這一術(shù)語(yǔ)。人腦中包含數(shù)十億個(gè)神經(jīng)元,它們之間有數(shù)萬(wàn)個(gè)連接。很多情況下,深度學(xué)習(xí)算法和人腦相似,因?yàn)槿四X和深度學(xué)習(xí)模型都擁有大量的編譯單元(神經(jīng)元),這些編譯單元(神經(jīng)元)在獨(dú)立的情況下都不太智能,但是當(dāng)他們相互作用時(shí)就會(huì)變得智能。
我認(rèn)為人們需要了解到深度學(xué)習(xí)正在使得很多幕后的事物變得更好。深度學(xué)習(xí)已經(jīng)應(yīng)用于谷歌搜索和圖像搜索,你可以通過(guò)它搜索像“擁抱”這樣的詞語(yǔ)以獲得相應(yīng)的圖像。-杰弗里·辛頓
神經(jīng)元
神經(jīng)網(wǎng)絡(luò)的基本構(gòu)建模塊是人工神經(jīng)元,它模仿了人類(lèi)大腦的神經(jīng)元。這些神經(jīng)元是簡(jiǎn)單、強(qiáng)大的計(jì)算單元,擁有加權(quán)輸入信號(hào)并且使用激活函數(shù)產(chǎn)生輸出信號(hào)。這些神經(jīng)元分布在神經(jīng)網(wǎng)絡(luò)的幾個(gè)層中。
inputs 輸入 outputs 輸出 weights 權(quán)值 activation 激活
人工神經(jīng)網(wǎng)絡(luò)的工作原理是什么?
深度學(xué)習(xí)由人工神經(jīng)網(wǎng)絡(luò)構(gòu)成,該網(wǎng)絡(luò)模擬了人腦中類(lèi)似的網(wǎng)絡(luò)。當(dāng)數(shù)據(jù)穿過(guò)這個(gè)人工網(wǎng)絡(luò)時(shí),每一層都會(huì)處理這個(gè)數(shù)據(jù)的一方面,過(guò)濾掉異常值,辨認(rèn)出熟悉的實(shí)體,并產(chǎn)生最終輸出。
輸入層:該層由神經(jīng)元組成,這些神經(jīng)元只接收輸入信息并將它傳遞到其他層。輸入層的圖層數(shù)應(yīng)等于數(shù)據(jù)集里的屬性或要素的數(shù)量。輸出層:輸出層具有預(yù)測(cè)性,其主要取決于你所構(gòu)建的模型類(lèi)型。隱含層:隱含層處于輸入層和輸出層之間,以模型類(lèi)型為基礎(chǔ)。隱含層包含大量的神經(jīng)元。處于隱含層的神經(jīng)元會(huì)先轉(zhuǎn)化輸入信息,再將它們傳遞出去。隨著網(wǎng)絡(luò)受訓(xùn)練,權(quán)重得到更新,從而使其更具前瞻性。
神經(jīng)元的權(quán)重
權(quán)重是指兩個(gè)神經(jīng)元之間的連接的強(qiáng)度或幅度。你如果熟悉線性回歸的話,可以將輸入的權(quán)重類(lèi)比為我們?cè)诨貧w方程中用的系數(shù)。權(quán)重通常被初始化為小的隨機(jī)數(shù)值,比如數(shù)值0-1。
前饋深度網(wǎng)絡(luò)
前饋監(jiān)督神經(jīng)網(wǎng)絡(luò)曾是第一個(gè)也是最成功的學(xué)習(xí)算法。該網(wǎng)絡(luò)也可被稱(chēng)為深度網(wǎng)絡(luò)、多層感知機(jī)(MLP)或簡(jiǎn)單神經(jīng)網(wǎng)絡(luò),并且闡明了具有單一隱含層的原始架構(gòu)。每個(gè)神經(jīng)元通過(guò)某個(gè)權(quán)重和另一個(gè)神經(jīng)元相關(guān)聯(lián)。
該網(wǎng)絡(luò)處理向前處理輸入信息,激活神經(jīng)元,最終產(chǎn)生輸出值。在此網(wǎng)絡(luò)中,這稱(chēng)為前向傳遞。
inputlayer 輸入層 hidden layer 輸出層 output layer 輸出層
激活函數(shù)
激活函數(shù)就是求和加權(quán)的輸入到神經(jīng)元的輸出的映射。之所以稱(chēng)之為激活函數(shù)或傳遞函數(shù)是因?yàn)樗刂浦せ钌窠?jīng)元的初始值和輸出信號(hào)的強(qiáng)度。
用數(shù)學(xué)表示為:
我們有許多激活函數(shù),其中使用最多的是整流線性單元函數(shù)、雙曲正切函數(shù)和solfPlus函數(shù)。
激活函數(shù)的速查表如下:
反向傳播
在網(wǎng)絡(luò)中,我們將預(yù)測(cè)值與預(yù)期輸出值相比較,并使用函數(shù)計(jì)算其誤差。然后,這個(gè)誤差會(huì)傳回這個(gè)網(wǎng)絡(luò),每次傳回一個(gè)層,權(quán)重也會(huì)根絕其導(dǎo)致的誤差值進(jìn)行更新。這個(gè)聰明的數(shù)學(xué)法是反向傳播算法。這個(gè)步驟會(huì)在訓(xùn)練數(shù)據(jù)的所有樣本中反復(fù)進(jìn)行,整個(gè)訓(xùn)練數(shù)據(jù)集的網(wǎng)絡(luò)更新一輪稱(chēng)為一個(gè)時(shí)期。一個(gè)網(wǎng)絡(luò)可受訓(xùn)練數(shù)十、數(shù)百或數(shù)千個(gè)時(shí)期。
prediction error 預(yù)測(cè)誤差
代價(jià)函數(shù)和梯度下降
代價(jià)函數(shù)度量了神經(jīng)網(wǎng)絡(luò)對(duì)給定的訓(xùn)練輸入和預(yù)期輸出“有多好”。該函數(shù)可能取決于權(quán)重、偏差等屬性。
代價(jià)函數(shù)是單值的,并不是一個(gè)向量,因?yàn)樗鼜恼w上評(píng)估神經(jīng)網(wǎng)絡(luò)的性能。在運(yùn)用梯度下降最優(yōu)算法時(shí),權(quán)重在每個(gè)時(shí)期后都會(huì)得到增量式地更新。
兼容代價(jià)函數(shù)
用數(shù)學(xué)表述為差值平方和:
target 目標(biāo)值 output 輸出值
權(quán)重更新的大小和方向是由在代價(jià)梯度的反向上采取步驟計(jì)算出的。
其中η 是學(xué)習(xí)率
其中Δw是包含每個(gè)權(quán)重系數(shù)w的權(quán)重更新的向量,其計(jì)算方式如下:
target 目標(biāo)值 output 輸出值
圖表中會(huì)考慮到單系數(shù)的代價(jià)函數(shù)
initial weight 初始權(quán)重 gradient 梯度 global cost minimum 代價(jià)極小值
在導(dǎo)數(shù)達(dá)到最小誤差值之前,我們會(huì)一直計(jì)算梯度下降,并且每個(gè)步驟都會(huì)取決于斜率(梯度)的陡度。
多層感知器(前向傳播)
這類(lèi)網(wǎng)絡(luò)由多層神經(jīng)元組成,通常這些神經(jīng)元以前饋方式(向前傳播)相互連接。一層中的每個(gè)神經(jīng)元可以直接連接后續(xù)層的神經(jīng)元。在許多應(yīng)用中,這些網(wǎng)絡(luò)的單元會(huì)采用S型函數(shù)或整流線性單元(整流線性激活)函數(shù)作為激活函數(shù)。
現(xiàn)在想想看要找出處理次數(shù)這個(gè)問(wèn)題,給定的賬戶(hù)和家庭成員作為輸入
要解決這個(gè)問(wèn)題,首先,我們需要先創(chuàng)建一個(gè)前向傳播神經(jīng)網(wǎng)絡(luò)。我們的輸入層將是家庭成員和賬戶(hù)的數(shù)量,隱含層數(shù)為1, 輸出層將是處理次數(shù)。
將圖中輸入層到輸出層的給定權(quán)重作為輸入:家庭成員數(shù)為2、賬戶(hù)數(shù)為3。
現(xiàn)在將通過(guò)以下步驟使用前向傳播來(lái)計(jì)算隱含層(i,j)和輸出層(k)的值。
步驟:
1, 乘法-添加方法。
2, 點(diǎn)積(輸入*權(quán)重)。
3,一次一個(gè)數(shù)據(jù)點(diǎn)的前向傳播。
4, 輸出是該數(shù)據(jù)點(diǎn)的預(yù)測(cè)。
i的值將從相連接的神經(jīng)元所對(duì)應(yīng)的輸入值和權(quán)重中計(jì)算出來(lái)。
i = (2 * 1) + (3* 1) → i = 5
同樣地,j = (2 * -1) + (3 * 1) → j =1
K = (5 * 2) + (1* -1) → k = 9
Python中的多層感知器問(wèn)題的解決
激活函數(shù)的使用
為了使神經(jīng)網(wǎng)絡(luò)達(dá)到其最大預(yù)測(cè)能力,我們需要在隱含層應(yīng)用一個(gè)激活函數(shù),以捕捉非線性。我們通過(guò)將值代入方程式的方式來(lái)在輸入層和輸出層應(yīng)用激活函數(shù)。
這里我們使用整流線性激活(ReLU):
用Keras開(kāi)發(fā)第一個(gè)神經(jīng)網(wǎng)絡(luò)
關(guān)于Keras:
Keras是一個(gè)高級(jí)神經(jīng)網(wǎng)絡(luò)的應(yīng)用程序編程接口,由Python編寫(xiě),能夠搭建在TensorFlow,CNTK,或Theano上。
使用PIP在設(shè)備上安裝Keras,并且運(yùn)行下列指令。
在keras執(zhí)行深度學(xué)習(xí)程序的步驟
1,加載數(shù)據(jù);
2,創(chuàng)建模型;
3,編譯模型;
4,擬合模型;
5,評(píng)估模型。
開(kāi)發(fā)Keras模型
全連接層用Dense表示。我們可以指定層中神經(jīng)元的數(shù)量作為第一參數(shù),指定初始化方法為第二參數(shù),即初始化參數(shù),并且用激活參數(shù)確定激活函數(shù)。既然模型已經(jīng)創(chuàng)建,我們就可以編譯它。我們?cè)诘讓訋?kù)(也稱(chēng)為后端)用高效數(shù)字庫(kù)編譯模型,底層庫(kù)可以用Theano或TensorFlow。目前為止,我們已經(jīng)完成了創(chuàng)建模型和編譯模型,為進(jìn)行有效計(jì)算做好了準(zhǔn)備?,F(xiàn)在可以在PIMA數(shù)據(jù)上運(yùn)行模型了。我們可以在模型上調(diào)用擬合函數(shù)f(),以在數(shù)據(jù)上訓(xùn)練或擬合模型。
我們先從KERAS中的程序開(kāi)始,
神經(jīng)網(wǎng)絡(luò)一直訓(xùn)練到150個(gè)時(shí)期,并返回精確值。
新聞名稱(chēng):python更改激活函數(shù) python 激活函數(shù)
文章位置:http://chinadenli.net/article4/dodsooe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、動(dòng)態(tài)網(wǎng)站、網(wǎng)站策劃、微信小程序、網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)