91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

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

如何使用Numpy搭建神經(jīng)網(wǎng)絡

電子工程師 ? 來源:未知 ? 2019-05-18 11:02 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

很多同學入門機器學習之后,直接用TensorFlow調(diào)包實現(xiàn)神經(jīng)網(wǎng)絡,對于神經(jīng)網(wǎng)絡內(nèi)在機理知之甚少。

編程語言與技術(shù)框架變化更新非常之快,理解背后的原理才是王道。下面文摘菌和大家一起用Numpy實現(xiàn)一步一步實現(xiàn)神經(jīng)網(wǎng)絡。

此篇文章旨在幫大家梳理神經(jīng)網(wǎng)絡知識點,且此篇文章是第一部分,只是簡單搭一個簡單的框架。暫時不涉及梯度下降、學習率調(diào)參等知識點。

最簡單的神經(jīng)網(wǎng)絡包含三個要素,輸入層,隱藏層以及輸出層。關(guān)于其工作機理其完全可以類比成一個元函數(shù):Y=W*X+b。

一個簡單的神經(jīng)網(wǎng)絡可以理解為兩次一元函數(shù)的輸入和輸出。

第一次:Y1=A1(W1*X+b1) ,其中X是原始數(shù)據(jù)的輸入,A1代表激活函數(shù)。

第二次:Y2=A2(W2*Y1+b2),其中Y1是第一次的輸出,A2是激活函數(shù)。參數(shù)W1、W2、b1、b2原則上各不相同。

本篇文章我們用到的激活函數(shù)有兩個,一個是tan(x),另一個是softmax。兩者的函數(shù)曲線如下。

兩個函數(shù)都有相同的特點,即函數(shù)值在零點左右變化較大,當輸入值遠離零點,其輸出較穩(wěn)定。

首先導入相關(guān)的庫,需要兩個庫,一個用于科學計算的Numpy,另一個是math。

importnumpyasnpimport math

然后定義激活函數(shù),

def tanh(x): return np.tanh(x)def softmax(x): exp=np.exp(x-x.max()) return exp/exp.sum()

這兩個激活函數(shù),其中tanh函數(shù),Numpy直接內(nèi)嵌。softmax根據(jù)數(shù)學定義進行設置。第二個激活函數(shù)因為是指數(shù)函數(shù),其值會變化較大,所以我們用x-x.max 縮小其變化范圍,這對結(jié)果不影響。

我們使用的圖片大小是 28*28像素。以后會用手寫數(shù)字數(shù)據(jù)集訓練網(wǎng)絡,所以會有10個數(shù)字輸入,分別是[1,2,3,4,5,6,7,8,9,10]。所以要先定義三個列表。

dinensions=[28*28,10]activation=[tanh,softmax]distribution=[{'b':[0,0]},{'b':[0,0],'w':[-math.sqrt(6/(dinensions[0]+dinensions[1])),math.sqrt(6/(dinensions[0]+dinensions[1]))]}]

dinensions列表里面包含兩個數(shù),第一個是圖片的像素大小,第二個是數(shù)字的輸入變化量。

activation列表包含兩個激活函數(shù),分別為tanh,softmax。

distribution 列表里面對應的是字典格式的數(shù)據(jù),分別對應神經(jīng)網(wǎng)絡參數(shù)取值范圍。

其中第一層不包含參數(shù)W。

definit_parameters_b(layer):dist=distribution[layer]['b'] return np.random.rand(dinensions[layer])*(dist[1]-dist[0])+dist[0] #使得生成的隨機數(shù)在 b 的區(qū)間內(nèi)definit_parameters_w(layer):dist=distribution[layer]['w'] return np.random.rand(dinensions[layer-1],dinensions[layer])*(dist[1]-dist[0])+dist[0] #使得生成的隨機數(shù)在 b 的區(qū)間內(nèi)

上面代碼是對b和w這兩個參數(shù)初始化,因為我們輸入的是28*28個數(shù)字,輸出的是10個數(shù)字。所以第一層的 b 也有28*28個數(shù)字組成。根據(jù)矩陣的乘法規(guī)則,第二層的時候,w的維度只有是28*28行,10列才能滿足輸出的10個數(shù)字。因此第二層的b是10個數(shù)字。

dinensions[X] 意思是取切片,dinensions[1] 取得是10,dinensions[0],取得是28*28。

又因為np.random.rand()這一函數(shù)輸出值的范圍在[0,1],括號里面的參數(shù)(即dinensions[layer]只是確保輸出的數(shù)字個數(shù)滿足要求),所以為了讓輸出的值在一開始設置的 b 的區(qū)間內(nèi),我們設置先乘(dist[1]-dist[0])然后加上dist[0]。dist[1]和dist[0]分別對應參數(shù)的上下限。

definit_parameters():parameters=[]foriinrange(len(distribution)):layer_parameters={}forjindistribution[i].keys():ifj=='b':layer_parameters['b']=init_parameters_b(i)continueifj=='w':layer_parameters['w']=init_parameters_w(i)continueparameters.append(layer_parameters) return parameters

上面代碼是將三個參數(shù)的初始化集成達到一個函數(shù)里面。

先定義一個空列表(不要寫錯成空字典)是為了將三個參數(shù)統(tǒng)一輸出。

注:字典類型不能用append,列表可以用,列表.append(字典) 也是可以的。

然后從零開始遍歷distribution。用if循環(huán)語句,目的是把參數(shù)全部包含進來。

第二層for循環(huán)和if語句是判斷,并正確添加參數(shù)。

parameters=init_parameters() #將參數(shù)賦值給新的變量。defpredict(img,parameters):I0_in=img+parameters[0]['b']I0_out=activation[0](I0_in)I1_in=np.dot(I0_out,parameters[1]['w']+parameters[1]['b'])I1_out=activation[1](I1_in) return I1_out

定義輸出函數(shù),思路是這樣的:輸入數(shù)據(jù)后,根據(jù)函數(shù):y=wx+b,進行變換,第一層w全為1。然后經(jīng)過激活函數(shù)(第一個激活函數(shù)是tanh,所以用activation[0]),得出第一層的輸入I0_out。 然后進入第二層,第一層的輸出作為輸入,根據(jù)函數(shù):y=wx+b,進行變換,第二層的w為parameters[1]['w'],第二層的b為parameters[1]['b']。然后再經(jīng)過激活函數(shù)softmax,得到輸出。

predict(np.random.rand(784),parameters).argmax()

最后,隨便輸入一個784維數(shù)據(jù)(像素),都可以輸出一個圖片標簽

預測圖片中的數(shù)字

好了,我們第一個簡單的神經(jīng)網(wǎng)絡就搭建好了,關(guān)于如何使用梯度下降和學習率,如何訓練網(wǎng)絡以及如何加載圖片數(shù)據(jù),我們在以后的文章中會介紹。

注:此篇文章受B站up主大野喵渣的啟發(fā),并參考了其代碼,感興趣的同學可以去B站觀看他關(guān)于神經(jīng)網(wǎng)絡的教學視頻

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

    關(guān)注

    42

    文章

    4814

    瀏覽量

    103670
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4381

    瀏覽量

    64918
  • 機器學習
    +關(guān)注

    關(guān)注

    66

    文章

    8503

    瀏覽量

    134644

原文標題:TensorFlow什么的都弱爆了,強者只用Numpy搭建神經(jīng)網(wǎng)絡

文章出處:【微信號:BigDataDigest,微信公眾號:大數(shù)據(jù)文摘】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    神經(jīng)網(wǎng)絡教程(李亞非)

      第1章 概述  1.1 人工神經(jīng)網(wǎng)絡研究與發(fā)展  1.2 生物神經(jīng)元  1.3 人工神經(jīng)網(wǎng)絡的構(gòu)成  第2章人工神經(jīng)網(wǎng)絡基本模型  2.1 MP模型  2.2 感知器模型  2.3
    發(fā)表于 03-20 11:32

    【PYNQ-Z2試用體驗】神經(jīng)網(wǎng)絡基礎知識

    語言,使用numpy.dot方法即可計算矩陣乘法。 以上便是一個簡單神經(jīng)網(wǎng)絡的基本原理,對神經(jīng)網(wǎng)絡有了基本的認識之后,我們才能進行復雜的神經(jīng)網(wǎng)絡設計。總結(jié)本文講解了
    發(fā)表于 03-03 22:10

    【PYNQ-Z2試用體驗】基于PYNQ-Z2的神經(jīng)網(wǎng)絡圖形識別[結(jié)項]

    前言前面我們簡單講解了神經(jīng)網(wǎng)絡的基本概念和工作原理,接下來,將通過具體的python代碼來完成基于神經(jīng)網(wǎng)絡的圖形識別。這里使用手寫的數(shù)字圖像作為輸入,神經(jīng)網(wǎng)絡將輸出圖像所對應的數(shù)字。獲取神經(jīng)網(wǎng)
    發(fā)表于 03-18 21:51

    卷積神經(jīng)網(wǎng)絡如何使用

    卷積神經(jīng)網(wǎng)絡(CNN)究竟是什么,鑒于神經(jīng)網(wǎng)絡在工程上經(jīng)歷了曲折的歷史,您為什么還會在意它呢? 對于這些非常中肯的問題,我們似乎可以給出相對簡明的答案。
    發(fā)表于 07-17 07:21

    【案例分享】ART神經(jīng)網(wǎng)絡與SOM神經(jīng)網(wǎng)絡

    今天學習了兩個神經(jīng)網(wǎng)絡,分別是自適應諧振(ART)神經(jīng)網(wǎng)絡與自組織映射(SOM)神經(jīng)網(wǎng)絡。整體感覺不是很難,只不過一些最基礎的概念容易理解不清。首先ART神經(jīng)網(wǎng)絡是競爭學習的一個代表,
    發(fā)表于 07-21 04:30

    如何構(gòu)建神經(jīng)網(wǎng)絡

    原文鏈接:http://tecdat.cn/?p=5725 神經(jīng)網(wǎng)絡是一種基于現(xiàn)有數(shù)據(jù)創(chuàng)建預測的計算系統(tǒng)。如何構(gòu)建神經(jīng)網(wǎng)絡神經(jīng)網(wǎng)絡包括:輸入層:根據(jù)現(xiàn)有數(shù)據(jù)獲取輸入的層隱藏層:使用反向傳播優(yōu)化輸入變量權(quán)重的層,以提高模型的預測
    發(fā)表于 07-12 08:02

    基于BP神經(jīng)網(wǎng)絡的PID控制

    最近在學習電機的智能控制,上周學習了基于單神經(jīng)元的PID控制,這周研究基于BP神經(jīng)網(wǎng)絡的PID控制。神經(jīng)網(wǎng)絡具有任意非線性表達能力,可以通過對系統(tǒng)性能的學習來實現(xiàn)具有最佳組合的PID控制。利用BP
    發(fā)表于 09-07 07:43

    輕量化神經(jīng)網(wǎng)絡的相關(guān)資料下載

    視覺任務中,并取得了巨大成功。然而,由于存儲空間和功耗的限制,神經(jīng)網(wǎng)絡模型在嵌入式設備上的存儲與計算仍然是一個巨大的挑戰(zhàn)。前面幾篇介紹了如何在嵌入式AI芯片上部署神經(jīng)網(wǎng)絡:【嵌入式AI開發(fā)】篇五|實戰(zhàn)篇一:STM32cubeIDE上部署
    發(fā)表于 12-14 07:35

    使用keras搭建神經(jīng)網(wǎng)絡實現(xiàn)基于深度學習算法的股票價格預測

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

    基于Numpy實現(xiàn)同態(tài)加密神經(jīng)網(wǎng)絡

    在分布式AI環(huán)境下,同態(tài)加密神經(jīng)網(wǎng)絡有助于保護商業(yè)公司知識產(chǎn)權(quán)和消費者隱私。本文介紹了如何基于Numpy實現(xiàn)同態(tài)加密神經(jīng)網(wǎng)絡
    的頭像 發(fā)表于 03-27 14:52 ?8296次閱讀
    基于<b class='flag-5'>Numpy</b>實現(xiàn)同態(tài)加密<b class='flag-5'>神經(jīng)網(wǎng)絡</b>

    基于Numpy實現(xiàn)神經(jīng)網(wǎng)絡:反向傳播

    和DeepMind數(shù)據(jù)科學家、Udacity深度學習導師Andrew Trask一起,基于Numpy手寫神經(jīng)網(wǎng)絡,更深刻地理解反向傳播這一概念。
    的頭像 發(fā)表于 04-01 09:29 ?5402次閱讀
    基于<b class='flag-5'>Numpy</b>實現(xiàn)<b class='flag-5'>神經(jīng)網(wǎng)絡</b>:反向傳播

    【連載】深度學習筆記7:Tensorflow入門

    從前面的學習筆記中,和大家一起使用了 numpy 一步一步從感知機開始到兩層網(wǎng)絡以及最后實現(xiàn)了深度神經(jīng)網(wǎng)絡的算法搭建。而后我們又討論了改善深度神經(jīng)網(wǎng)
    的頭像 發(fā)表于 08-20 12:47 ?3510次閱讀

    如何使用numpy搭建一個卷積神經(jīng)網(wǎng)絡詳細方法和程序概述

    內(nèi)容將繼續(xù)秉承之前 DNN 的學習路線,在利用Tensorflow搭建神經(jīng)網(wǎng)絡之前,先嘗試利用numpy手動搭建卷積神經(jīng)網(wǎng)絡,以期對卷積
    的頭像 發(fā)表于 10-20 10:55 ?6312次閱讀

    卷積神經(jīng)網(wǎng)絡模型搭建

    卷積神經(jīng)網(wǎng)絡模型搭建 卷積神經(jīng)網(wǎng)絡模型是一種深度學習算法。它已經(jīng)成為了計算機視覺和自然語言處理等各種領(lǐng)域的主流算法,具有很大的應用前景。本篇文章將詳細介紹卷積神經(jīng)網(wǎng)絡模型的
    的頭像 發(fā)表于 08-21 17:11 ?1290次閱讀

    使用NumPy實現(xiàn)前饋神經(jīng)網(wǎng)絡

    要使用NumPy實現(xiàn)一個前饋神經(jīng)網(wǎng)絡(Feedforward Neural Network),我們需要從基礎開始構(gòu)建,包括初始化網(wǎng)絡參數(shù)、定義激活函數(shù)及其導數(shù)、實現(xiàn)前向傳播、計算損失函數(shù)、以及實現(xiàn)
    的頭像 發(fā)表于 07-11 16:30 ?4251次閱讀
    主站蜘蛛池模板: 一区二区三区四区在线不卡高清 | 日本三级香港三级人妇99 | 欧美一级欧美三级在线 | 欲妇放荡叫床很浪的小说 | 国色天香精品亚洲精品 | 亚洲第一页国产 | 在线观看日本免费不卡 | 网站色| xx毛片| 亚洲三级黄 | 日韩一级欧美一级 | 男女在线免费视频 | 欧美就是色 | 四虎最新网址入口 | 一级做a爰片久久毛片看看 一级做a爰片久久毛片毛片 | 华人黄网站大全 | 国产无圣光高清一区二区 | 天天综合网天天综合色不卡 | 欧美另类xx| 人人插人人爱 | 黄网在线观看免费 | 国产伦精品一区二区三区在线观看 | 久久手机免费视频 | 香港日本三级在线播放 | 国产性大片黄在线观看在线放 | 亚洲wuma| 午夜精品国产 | 色综合天天干 | 操碰视频在线 | 亚洲3级| 午夜高清在线观看免费6 | 天天搞天天干 | 久久这里只有精品免费播放 | 丁香六月在线 | 成人国产一区二区 | 丁香啪啪天堂激情婷婷 | 前后灌满白浆护士 | 国产成人精品高清在线 | 性生生活三级视频在线观看 | 亚洲天堂视频一区 | 狠狠操操 |