99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀如何通過Python進行深度學習?
如何通過Python進行深度學習?
2019-11-22
收藏
如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

作者 | Vihar Kurama

編譯 | 荷葉

來源 | 云棲社區(qū)

摘要深度學習背后的主要原因是人工智能應(yīng)該從人腦中汲取靈感。本文就用一個小例子無死角的介紹一下深度學習

人腦模擬

深度學習背后的主要原因是人工智能應(yīng)該從人腦中汲取靈感。此觀點引出了“神經(jīng)網(wǎng)絡(luò)”這一術(shù)語。人腦中包含數(shù)十億個神經(jīng)元,它們之間有數(shù)萬個連接。很多情況下,深度學習算法和人腦相似,因為人腦和深度學習模型都擁有大量的編譯單元(神經(jīng)元),這些編譯單元(神經(jīng)元)在獨立的情況下都不太智能,但是當他們相互作用時就會變得智能。

我認為人們需要了解到深度學習正在使得很多幕后的事物變得更好。深度學習已經(jīng)應(yīng)用于谷歌搜索和圖像搜索,你可以通過它搜索像“擁抱”這樣的詞語以獲得相應(yīng)的圖像。-杰弗里·辛頓

神經(jīng)元

神經(jīng)網(wǎng)絡(luò)的基本構(gòu)建模塊是人工神經(jīng)元,它模仿了人類大腦的神經(jīng)元。這些神經(jīng)元是簡單、強大的計算單元,擁有加權(quán)輸入信號并且使用激活函數(shù)產(chǎn)生輸出信號。這些神經(jīng)元分布在神經(jīng)網(wǎng)絡(luò)的幾個層中。

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

inputs 輸入 outputs 輸出 weights 權(quán)值 activation 激活

人工神經(jīng)網(wǎng)絡(luò)的工作原理是什么?

深度學習由人工神經(jīng)網(wǎng)絡(luò)構(gòu)成,該網(wǎng)絡(luò)模擬了人腦中類似的網(wǎng)絡(luò)。當數(shù)據(jù)穿過這個人工網(wǎng)絡(luò)時,每一層都會處理這個數(shù)據(jù)的一方面,過濾掉異常值,辨認出熟悉的實體,并產(chǎn)生最終輸出。

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

輸入層:該層由神經(jīng)元組成,這些神經(jīng)元只接收輸入信息并將它傳遞到其他層。輸入層的圖層數(shù)應(yīng)等于數(shù)據(jù)集里的屬性或要素的數(shù)量。輸出層:輸出層具有預(yù)測性,其主要取決于你所構(gòu)建的模型類型。隱含層:隱含層處于輸入層和輸出層之間,以模型類型為基礎(chǔ)。隱含層包含大量的神經(jīng)元。處于隱含層的神經(jīng)元會先轉(zhuǎn)化輸入信息,再將它們傳遞出去。隨著網(wǎng)絡(luò)受訓練,權(quán)重得到更新,從而使其更具前瞻性。

神經(jīng)元的權(quán)重

權(quán)重是指兩個神經(jīng)元之間的連接的強度或幅度。你如果熟悉線性回歸的話,可以將輸入的權(quán)重類比為我們在回歸方程中用的系數(shù)。權(quán)重通常被初始化為小的隨機數(shù)值,比如數(shù)值0-1。

前饋深度網(wǎng)絡(luò)

前饋監(jiān)督神經(jīng)網(wǎng)絡(luò)曾是第一個也是最成功的學習算法。該網(wǎng)絡(luò)也可被稱為深度網(wǎng)絡(luò)、多層感知機(MLP)或簡單神經(jīng)網(wǎng)絡(luò),并且闡明了具有單一隱含層的原始架構(gòu)。每個神經(jīng)元通過某個權(quán)重和另一個神經(jīng)元相關(guān)聯(lián)。

該網(wǎng)絡(luò)處理向前處理輸入信息,激活神經(jīng)元,最終產(chǎn)生輸出值。在此網(wǎng)絡(luò)中,這稱為前向傳遞。

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

inputlayer 輸入層 hidden layer 輸出層 output layer 輸出層

激活函數(shù)

激活函數(shù)就是求和加權(quán)的輸入到神經(jīng)元的輸出的映射。之所以稱之為激活函數(shù)或傳遞函數(shù)是因為它控制著激活神經(jīng)元的初始值和輸出信號的強度。

用數(shù)學表示為:

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

我們有許多激活函數(shù),其中使用最多的是整流線性單元函數(shù)、雙曲正切函數(shù)和solfPlus函數(shù)。

激活函數(shù)的速查表如下:

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

反向傳播

在網(wǎng)絡(luò)中,我們將預(yù)測值與預(yù)期輸出值相比較,并使用函數(shù)計算其誤差。然后,這個誤差會傳回這個網(wǎng)絡(luò),每次傳回一個層,權(quán)重也會根絕其導致的誤差值進行更新。這個聰明的數(shù)學法是反向傳播算法。這個步驟會在訓練數(shù)據(jù)的所有樣本中反復進行,整個訓練數(shù)據(jù)集的網(wǎng)絡(luò)更新一輪稱為一個時期。一個網(wǎng)絡(luò)可受訓練數(shù)十、數(shù)百或數(shù)千個時期。

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

prediction error 預(yù)測誤差

代價函數(shù)和梯度下降

代價函數(shù)度量了神經(jīng)網(wǎng)絡(luò)對給定的訓練輸入和預(yù)期輸出“有多好”。該函數(shù)可能取決于權(quán)重、偏差等屬性。

代價函數(shù)是單值的,并不是一個向量,因為它從整體上評估神經(jīng)網(wǎng)絡(luò)的性能。在運用梯度下降最優(yōu)算法時,權(quán)重在每個時期后都會得到增量式地更新。

兼容代價函數(shù)

用數(shù)學表述為差值平方和:

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

target 目標值 output 輸出值

權(quán)重更新的大小和方向是由在代價梯度的反向上采取步驟計算出的。

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

其中η 是學習率

其中Δw是包含每個權(quán)重系數(shù)w的權(quán)重更新的向量,其計算方式如下:

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

target 目標值 output 輸出值

圖表中會考慮到單系數(shù)的代價函數(shù)

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

initial weight 初始權(quán)重 gradient 梯度 global cost minimum 代價極小值

在導數(shù)達到最小誤差值之前,我們會一直計算梯度下降,并且每個步驟都會取決于斜率(梯度)的陡度。

多層感知器(前向傳播)

這類網(wǎng)絡(luò)由多層神經(jīng)元組成,通常這些神經(jīng)元以前饋方式(向前傳播)相互連接。一層中的每個神經(jīng)元可以直接連接后續(xù)層的神經(jīng)元。在許多應(yīng)用中,這些網(wǎng)絡(luò)的單元會采用S型函數(shù)或整流線性單元(整流線性激活)函數(shù)作為激活函數(shù)。

現(xiàn)在想想看要找出處理次數(shù)這個問題,給定的賬戶和家庭成員作為輸入

要解決這個問題,首先,我們需要先創(chuàng)建一個前向傳播神經(jīng)網(wǎng)絡(luò)。我們的輸入層將是家庭成員和賬戶的數(shù)量,隱含層數(shù)為1, 輸出層將是處理次數(shù)。

將圖中輸入層到輸出層的給定權(quán)重作為輸入:家庭成員數(shù)為2、賬戶數(shù)為3。

現(xiàn)在將通過以下步驟使用前向傳播來計算隱含層(i,j)和輸出層(k)的值。

步驟:

1, 乘法-添加方法。

2, 點積(輸入*權(quán)重)。

3,一次一個數(shù)據(jù)點的前向傳播。

4, 輸出是該數(shù)據(jù)點的預(yù)測。

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

i的值將從相連接的神經(jīng)元所對應(yīng)的輸入值和權(quán)重中計算出來。

i = (2 * 1) + (3* 1) → i = 5

同樣地,j = (2 * -1) + (3 * 1) → j =1

K = (5 * 2) + (1* -1) → k = 9

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

Python中的多層感知器問題的解決

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?
如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

激活函數(shù)的使用

為了使神經(jīng)網(wǎng)絡(luò)達到其最大預(yù)測能力,我們需要在隱含層應(yīng)用一個激活函數(shù),以捕捉非線性。我們通過將值代入方程式的方式來在輸入層和輸出層應(yīng)用激活函數(shù)。

這里我們使用整流線性激活(ReLU):

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?
如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?
如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

Keras開發(fā)第一個神經(jīng)網(wǎng)絡(luò)

關(guān)于Keras

Keras是一個高級神經(jīng)網(wǎng)絡(luò)的應(yīng)用程序編程接口,由Python編寫,能夠搭建在TensorFlow,CNTK,或Theano上。

使用PIP在設(shè)備上安裝Keras,并且運行下列指令。

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

在keras執(zhí)行深度學習程序的步驟

1,加載數(shù)據(jù);

2,創(chuàng)建模型;

3,編譯模型;

4,擬合模型;

5,評估模型。

開發(fā)Keras模型

全連接層用Dense表示。我們可以指定層中神經(jīng)元的數(shù)量作為第一參數(shù),指定初始化方法為第二參數(shù),即初始化參數(shù),并且用激活參數(shù)確定激活函數(shù)。既然模型已經(jīng)創(chuàng)建,我們就可以編譯它。我們在底層庫(也稱為后端)用高效數(shù)字庫編譯模型,底層庫可以用Theano或TensorFlow。目前為止,我們已經(jīng)完成了創(chuàng)建模型和編譯模型,為進行有效計算做好了準備?,F(xiàn)在可以在PIMA數(shù)據(jù)上運行模型了。我們可以在模型上調(diào)用擬合函數(shù)f(),以在數(shù)據(jù)上訓練或擬合模型。

我們先從KERAS中的程序開始,

如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?
如何通過Python進行<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>?

神經(jīng)網(wǎng)絡(luò)一直訓練到150個時期,并返回精確值。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }