0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Keras搭建的深度學(xué)習(xí)網(wǎng)絡(luò)示例

zhKF_jqr_AI ? 來源:未知 ? 作者:胡薇 ? 2018-06-06 11:21 ? 次閱讀

Python軟件基金會(huì)成員(Contibuting Member)Vihar Kurama簡明扼要地介紹了深度學(xué)習(xí)的基本概念,同時(shí)提供了一個(gè)基于Keras搭建的深度學(xué)習(xí)網(wǎng)絡(luò)示例。

深度學(xué)習(xí)背后的主要想法是,人工智能應(yīng)該借鑒人腦。這一觀點(diǎn)帶來了“神經(jīng)網(wǎng)絡(luò)”這一術(shù)語的興起。大腦包含數(shù)十億神經(jīng)元,這些神經(jīng)元之間有數(shù)萬連接。深度學(xué)習(xí)算法在很多情況下復(fù)現(xiàn)了大腦,大腦和深度學(xué)習(xí)模型都牽涉大量計(jì)算單元(神經(jīng)元),這些神經(jīng)元自身并不如何智能,但當(dāng)它們互相交互時(shí),變得智能起來。

我覺得人們需要了解深度學(xué)習(xí)在幕后讓很多事情變得更好。Google搜索和圖像搜索已經(jīng)使用了深度學(xué)習(xí)技術(shù);它允許你使用“擁抱”之類的詞搜索圖像。

—— Geoffrey Hinton

神經(jīng)元

神經(jīng)網(wǎng)絡(luò)的基本構(gòu)件是人工神經(jīng)元,人工神經(jīng)元模擬人腦神經(jīng)元。它們是簡單而強(qiáng)大的計(jì)算單元,基于加權(quán)的輸入信號(hào),使用激活函數(shù)產(chǎn)出輸出信號(hào)。神經(jīng)元遍布神經(jīng)網(wǎng)絡(luò)的各層。

人工神經(jīng)網(wǎng)絡(luò)如何工作?

深度學(xué)習(xí)包含建模人腦中的神經(jīng)網(wǎng)絡(luò)的人工神經(jīng)網(wǎng)絡(luò)。當(dāng)數(shù)據(jù)流經(jīng)這一人工網(wǎng)絡(luò)時(shí),每層處理數(shù)據(jù)的一個(gè)方面,過濾離散值,識(shí)別類似實(shí)體,并產(chǎn)生最終輸出。

輸入層(Input Layer)這一層包含的神經(jīng)元僅僅接受輸入并將其傳給其他層。輸入層中的神經(jīng)元數(shù)目應(yīng)當(dāng)?shù)扔跀?shù)據(jù)集的屬性數(shù)或特征數(shù)。

輸出層(Output Layer)輸出層輸出預(yù)測的特征,基本上,它取決于構(gòu)建的具體模型類別。

隱藏層(Hidden Layer)在輸入層和輸出層之間的是隱藏層。在訓(xùn)練網(wǎng)絡(luò)的過程中,隱藏層的權(quán)重得到更新,以提升其預(yù)測能力。

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

權(quán)重指兩個(gè)神經(jīng)元之間的連接的強(qiáng)度,如果你熟悉線性回歸,你可以將輸入的權(quán)重想象成回歸公式中的系數(shù)。權(quán)重通常使用較小的隨機(jī)值初始化,例如0到1之間的值。

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

前饋監(jiān)督神經(jīng)網(wǎng)絡(luò)是最早也是最成功的神經(jīng)網(wǎng)絡(luò)模型之一。它們有時(shí)也稱為多層感知器(Multi-Layer Perceptron,MLP),或者簡單地直接稱為神經(jīng)網(wǎng)絡(luò)。

輸入沿著激活神經(jīng)元流經(jīng)整個(gè)網(wǎng)絡(luò)直至生成輸出值。這稱為網(wǎng)絡(luò)的前向傳播(forward pass)。

激活函數(shù)

激活函數(shù)將輸入的加權(quán)和映射至神經(jīng)元的輸出。之所以被稱為激活函數(shù),是因?yàn)樗刂萍せ钅男┥窠?jīng)元,以及輸出信號(hào)的強(qiáng)度。

有許多激活函數(shù),其中最常用的是ReLU、tanh、SoftPlus。

圖片來源:ml-cheatsheet

反向傳播

比較網(wǎng)絡(luò)的預(yù)測值和期望輸出,通過一個(gè)函數(shù)計(jì)算誤差。接著在整個(gè)網(wǎng)絡(luò)上反向傳播誤差,每次一層,權(quán)重根據(jù)其對(duì)誤差的貢獻(xiàn)作相應(yīng)程度的更新。這稱為反向傳播(Back-Propagation)算法。在訓(xùn)練集的所有樣本上重復(fù)這一過程。為整個(gè)訓(xùn)練數(shù)據(jù)集更新網(wǎng)絡(luò)稱為epoch。網(wǎng)絡(luò)可能需要訓(xùn)練幾十個(gè)、幾百個(gè)、幾千個(gè)epoch。

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

代價(jià)函數(shù)衡量神經(jīng)網(wǎng)絡(luò)在給定的訓(xùn)練輸入和期望輸出上“有多好”。它也可能取決于權(quán)重或偏置等參數(shù)

代價(jià)函數(shù)通常是標(biāo)量,而不是向量,因?yàn)樗u(píng)價(jià)的是網(wǎng)絡(luò)的整體表現(xiàn)。使用梯度下降(Gradient Descent)優(yōu)化算法,權(quán)重在每個(gè)epoch后增量更新。

比如,誤差平方和(Sum of Squared Errors,SSE)就是一種常用的代價(jià)函數(shù)。

權(quán)重更新的幅度和方向通過計(jì)算代價(jià)梯度得出:

η為學(xué)習(xí)率

下為單個(gè)系數(shù)的代價(jià)函數(shù)梯度下降示意圖:

多層感知器(前向傳播)

多層感知器包含多層神經(jīng)元,經(jīng)常以前饋方式互相連接。每層中的每個(gè)神經(jīng)元和下一層的神經(jīng)元直接相連。在許多應(yīng)用中,多層感知器使用sigmoid或ReLU激活函數(shù)。

現(xiàn)在讓我們來看一個(gè)例子。給定賬戶和家庭成員作為輸入,預(yù)測交易數(shù)。

首先我們需要?jiǎng)?chuàng)建一個(gè)多層感知器或者前饋神經(jīng)網(wǎng)絡(luò)。我們的多層感知器將有一個(gè)輸入層、一個(gè)隱藏層、一個(gè)輸出層,其中,家庭成員數(shù)為2,賬戶數(shù)為3,如下圖所示:

隱藏層(i、j)和輸出層(k)的值將使用如下的前向傳播過程計(jì)算:

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

j = (2 * -1) + (3 * 1) = 1

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

上面的計(jì)算過程沒有涉及激活函數(shù),實(shí)際上,為了充分發(fā)揮神經(jīng)網(wǎng)絡(luò)的預(yù)測能力,我們還需要使用激活函數(shù),以引入非線性。

比如,使用ReLU激活函數(shù):

這一次,我們的輸入為[3, 4],權(quán)重分別為[2, 4], [4, -5], [2, 7]。

i = (3 * 2) + (4 * 4) = 22

i = relu(22) = 22

j = (3 * 4) + (4 * -5) = -8

j = relu(-8) = 0

k = (22 * 2) + (0 * 7) = 44

k = relu(44) = 44

基于Keras開發(fā)神經(jīng)網(wǎng)絡(luò)

關(guān)于Keras

Keras是一個(gè)高層神經(jīng)網(wǎng)絡(luò)API,基于Python,可以在TensorFlow、CNTK、Theano上運(yùn)行。(譯者注:Theano已停止維護(hù)。)

運(yùn)行以下命令可以使用pip安裝keras:

sudo pip install keras

在Keras中實(shí)現(xiàn)深度學(xué)習(xí)程序的步驟

加載數(shù)據(jù)

定義模型

編譯模型

訓(xùn)練模型

評(píng)估模型

整合

開發(fā)Keras模型

keras使用Dense類描述全連接層。我們可以通過相應(yīng)的參數(shù)指定層中的神經(jīng)元數(shù)目,初始化方法,以及激活函數(shù)。定義模型之后,我們可以編譯(compile)模型。編譯過程將調(diào)用后端框架,比如TensorFlow。之后我們將在數(shù)據(jù)上運(yùn)行模型。我們通過調(diào)用模型的fit()方法在數(shù)據(jù)上訓(xùn)練模型。

from keras.models importSequential

from keras.layers importDense

import numpy

# 初始化隨機(jī)數(shù)值

seed = 7

numpy.random.seed(seed)

# 加載數(shù)據(jù)集(PIMA糖尿病數(shù)據(jù)集)

dataset = numpy.loadtxt('datasets/pima-indians-diabetes.csv', delimiter=",")

X = dataset[:, 0:8]

Y = dataset[:, 8]

# 定義模型

model = Sequential()

model.add(Dense(16, input_dim=8, init='uniform', activation='relu'))

model.add(Dense(8, init='uniform', activation='relu'))

model.add(Dense(1, init='uniform', activation='sigmoid'))

# 編譯模型

model.compile(loss='binary_crossentropy',

optimizer='adam', metrics=['accuracy'])

# 擬合模型

model.fit(X, Y, nb_epoch=150, batch_size=10)

# 評(píng)估

scores = model.evaluate(X, Y)

print("%s: %.2f%%" % (model.metrics_names[1], scores[1] * 100))

輸出:

$python keras_pima.py

768/768 [==============================] - 0s - loss: 0.6776 - acc: 0.6510

Epoch2/150

768/768 [==============================] - 0s - loss: 0.6535 - acc: 0.6510

Epoch3/150

768/768 [==============================] - 0s - loss: 0.6378 - acc: 0.6510

.

.

.

.

.

Epoch149/150

768/768 [==============================] - 0s - loss: 0.4666 - acc: 0.7786

Epoch150/150

768/768 [==============================] - 0s - loss: 0.4634 - acc: 0.773432/768

[>.............................] - ETA: 0sacc: 77.73%

我們訓(xùn)練了150個(gè)epoch,最終達(dá)到了77.73%的精確度。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4801

    瀏覽量

    84863
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5510

    瀏覽量

    121338

原文標(biāo)題:基于Python入門深度學(xué)習(xí)

文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于 Python 的深度學(xué)習(xí)Keras入門知識(shí)

    (GPU)。大部分后端取決于其他軟件,例如,NVIDIA? CUDA? 工具包和 CUDA 深度神經(jīng)網(wǎng)絡(luò)庫 (cuDNN)。
    的頭像 發(fā)表于 05-14 04:05 ?5846次閱讀

    如何使用tensorflow快速搭建起一個(gè)深度學(xué)習(xí)項(xiàng)目

    我們繼續(xù)以 NG 課題組提供的 sign 手勢數(shù)據(jù)集為例,學(xué)習(xí)如何通過Tensorflow快速搭建起一個(gè)深度學(xué)習(xí)項(xiàng)目。數(shù)據(jù)集標(biāo)簽共有零到五總共 6 類標(biāo)簽,
    的頭像 發(fā)表于 10-25 08:57 ?7717次閱讀

    Nanopi深度學(xué)習(xí)之路(1)深度學(xué)習(xí)框架分析

    的初學(xué)者。日記目標(biāo)是構(gòu)建深度學(xué)習(xí)環(huán)境,使用的是TensorFlow后端的Keras,Keras 是一個(gè)用 Python 編寫的高級(jí)神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 06-04 22:32

    【NanoPi K1 Plus試用體驗(yàn)】搭建深度學(xué)習(xí)框架

    ,非線性回歸,手寫數(shù)字分類模型開始講起。逐步講到一些深度學(xué)習(xí)網(wǎng)絡(luò)的應(yīng)用如CNN,LSTM。最后會(huì)帶著大家完成一些實(shí)際的應(yīng)用案例如圖像識(shí)別,圖片風(fēng)格轉(zhuǎn)換,seq2seq模型的應(yīng)用,情感分類,生成對(duì)抗網(wǎng)絡(luò)等。下面
    發(fā)表于 07-17 11:40

    輕量級(jí)深度學(xué)習(xí)網(wǎng)絡(luò)是什么

    輕量級(jí)深度學(xué)習(xí)網(wǎng)絡(luò)概覽
    發(fā)表于 04-23 14:53

    使用keras搭建神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)基于深度學(xué)習(xí)算法的股票價(jià)格預(yù)測

    本文使用keras搭建神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)基于深度學(xué)習(xí)算法的股票價(jià)格預(yù)測。本文使用的數(shù)據(jù)來源為tushare,一個(gè)免費(fèi)開源接口;且只取開票價(jià)進(jìn)行預(yù)
    發(fā)表于 02-08 06:40

    Keras搭建神經(jīng)網(wǎng)絡(luò)的一般步驟

    參考https://keras.io/zh/ 的安裝指引。 2 使用Keras搭建神經(jīng)網(wǎng)絡(luò)的步驟 2 示例
    發(fā)表于 08-18 07:35

    深度學(xué)習(xí)框架Keras代碼解析

    總體來講keras這個(gè)深度學(xué)習(xí)框架真的很“簡易”,它體現(xiàn)在可參考的文檔寫的比較詳細(xì),不像caffe,裝完以后都得靠技術(shù)博客,keras有它自己的官方文檔(不過是英文的),這給初學(xué)者提供
    發(fā)表于 12-15 08:22 ?4518次閱讀

    深度學(xué)習(xí)在各個(gè)領(lǐng)域有什么樣的作用深度學(xué)習(xí)網(wǎng)絡(luò)的使用示例分析

    深度學(xué)習(xí)網(wǎng)絡(luò)作為一個(gè)功能多樣的工具,雖然最初僅用于圖像分析,但它已逐漸被應(yīng)用到各種不同的任務(wù)和領(lǐng)域中。高準(zhǔn)確性和高處理速度,使得用戶無需成為領(lǐng)域?qū)<壹纯蓪?duì)大型數(shù)據(jù)集執(zhí)行復(fù)雜分析。本文邀請(qǐng) MathWorks 產(chǎn)品經(jīng)理 Johanna 分享一些
    的頭像 發(fā)表于 11-25 11:41 ?7825次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>在各個(gè)領(lǐng)域有什么樣的作用<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)網(wǎng)絡(luò)</b>的使用<b class='flag-5'>示例</b>分析

    深度學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練技巧的詳細(xì)資料匯總

    本文檔的主要內(nèi)容詳細(xì)介紹的是深度學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練技巧匯總,總結(jié)訓(xùn)練網(wǎng)絡(luò)的各種經(jīng)驗(yàn)和技巧
    發(fā)表于 03-07 08:00 ?10次下載
    <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)網(wǎng)絡(luò)</b>訓(xùn)練技巧的詳細(xì)資料匯總

    使用TensorFlow建立深度學(xué)習(xí)和機(jī)器學(xué)習(xí)網(wǎng)絡(luò)

    教你使用TensorFlow建立深度學(xué)習(xí)和機(jī)器學(xué)習(xí)網(wǎng)絡(luò)。
    發(fā)表于 03-26 09:44 ?18次下載

    基于深度遷移學(xué)習(xí)網(wǎng)絡(luò)的肺結(jié)節(jié)輔助CT診斷

    在肺癌早期篩查過程中,人工診斷胸部CT掃描圖像費(fèi)時(shí)費(fèi)力,而深度學(xué)習(xí)網(wǎng)絡(luò)缺乏足夠的醫(yī)學(xué)數(shù)據(jù)進(jìn)行訓(xùn)練。為此,提出一種漸進(jìn)式微調(diào)(PFT)策略,將其應(yīng)用于深度遷移學(xué)習(xí)網(wǎng)絡(luò)以輔助診斷肺結(jié)節(jié)良惡
    發(fā)表于 05-13 16:56 ?8次下載

    深度Q學(xué)習(xí)網(wǎng)絡(luò):彌合從虛擬游戲到實(shí)際應(yīng)用的差距

    解決復(fù)雜、順序決策問題的有力工具。RL 的一個(gè)重大進(jìn)步是深度 Q 學(xué)習(xí)網(wǎng)絡(luò) (DQN) 的出現(xiàn),它將深度學(xué)習(xí)的力量與 Q 學(xué)習(xí)的戰(zhàn)略決策能力
    發(fā)表于 06-15 09:45 ?369次閱讀

    keras的模塊結(jié)構(gòu)介紹

    Keras是一個(gè)高級(jí)深度學(xué)習(xí)庫,它提供了一個(gè)易于使用的接口來構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型。Keras
    的頭像 發(fā)表于 07-05 09:35 ?398次閱讀

    keras模型轉(zhuǎn)tensorflow session

    和訓(xùn)練深度學(xué)習(xí)模型。Keras是基于TensorFlow、Theano或CNTK等底層計(jì)算框架構(gòu)建的。TensorFlow是一個(gè)開源的機(jī)器學(xué)習(xí)框架,由Google Brain團(tuán)隊(duì)開發(fā)。
    的頭像 發(fā)表于 07-05 09:36 ?570次閱讀