最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Tensorflow輕松實(shí)現(xiàn)XOR運(yùn)算的方式

 更新時(shí)間:2020年02月03日 17:55:23   作者:beyond_LH  
今天小編就為大家分享一篇Tensorflow輕松實(shí)現(xiàn)XOR運(yùn)算的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

對(duì)于“XOR”大家應(yīng)該都不陌生,我們?cè)诟鞣N課程中都會(huì)遇到,它是一個(gè)數(shù)學(xué)邏輯運(yùn)算符號(hào),在計(jì)算機(jī)中表示為“XOR”,在數(shù)學(xué)中表示為“”,學(xué)名為“異或”,其來(lái)源細(xì)節(jié)就不詳細(xì)表明了,說(shuō)白了就是兩個(gè)a、b兩個(gè)值做異或運(yùn)算,若a=b則結(jié)果為0,反之為1,即“相同為0,不同為1”.

在計(jì)算機(jī)早期發(fā)展中,邏輯運(yùn)算廣泛應(yīng)用于電子管中,這一點(diǎn)如果大家學(xué)習(xí)過(guò)微機(jī)原理應(yīng)該會(huì)比較熟悉,那么在神經(jīng)網(wǎng)絡(luò)中如何實(shí)現(xiàn)它呢,早先我們使用的是感知機(jī),可理解為單層神經(jīng)網(wǎng)絡(luò),只有輸入層和輸出層(在吳恩達(dá)老師的系列教程中曾提到過(guò)這一點(diǎn),關(guān)于神經(jīng)網(wǎng)絡(luò)的層數(shù),至今仍有異議,就是說(shuō)神經(jīng)網(wǎng)絡(luò)的層數(shù)到底包不包括輸入層,現(xiàn)今多數(shù)認(rèn)定是不包括的,我們常說(shuō)的N層神經(jīng)網(wǎng)絡(luò)指的是隱藏層+輸出層),但是感知機(jī)是無(wú)法實(shí)現(xiàn)XOR運(yùn)算的,簡(jiǎn)單來(lái)說(shuō)就是XOR是線性不可分的,由于感知機(jī)是有輸入輸出層,無(wú)法線性劃分XOR區(qū)域,于是后來(lái)就有了使用多層神經(jīng)網(wǎng)絡(luò)來(lái)解決這一問(wèn)題的想法~~

關(guān)于多層神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)XOR運(yùn)算可大致這么理解:

兩個(gè)輸入均有兩個(gè)取值0和1,那么組合起來(lái)就有四種可能,即[0,0]、[0,1]、[1,0]、[1,1],這樣就可以通過(guò)中間的隱藏層進(jìn)行異或運(yùn)算了~

咱們直接步入正題吧,對(duì)于此次試驗(yàn)我們只需要一個(gè)隱藏層即可,關(guān)于神經(jīng)網(wǎng)絡(luò) 的基礎(chǔ)知識(shí)建議大家去看一下吳恩達(dá)大佬的課程,真的很棒,百看不厭,真正的大佬是在認(rèn)定學(xué)生是絕對(duì)小白的前提下去講解的,所以一般人都能聽(tīng)懂~~接下來(lái)的圖純手工操作,可能不是那么準(zhǔn)確,但中心思想是沒(méi)有問(wèn)題的,我們開(kāi)始吧:

上圖是最基本的神經(jīng)網(wǎng)絡(luò)示意圖,有兩個(gè)輸入x1、x2,一個(gè)隱藏層,只有一個(gè)神經(jīng)元,然后有個(gè)輸出層,這就是最典型的“輸入層+隱藏層+輸出層”的架構(gòu),對(duì)于本題目,我們的輸入和輸出以及整體架構(gòu)如下圖所示:

輸入量為一個(gè)矩陣,0和0異或結(jié)果為0,0和1異或結(jié)果為1,依次類推,對(duì)應(yīng)我們的目標(biāo)值為[0,1,1,0],最后之所以用約等號(hào)是因?yàn)槲覀兊念A(yù)測(cè)值與目標(biāo)值之間會(huì)有一定的偏差,如果訓(xùn)練的好那么這二者之間是無(wú)限接近的。

我們直接上全部代碼吧,就不分步進(jìn)行了,以為這個(gè)實(shí)驗(yàn)本身難度較低,且代碼注釋很清楚,每一步都很明確,如果大家有什么不理解的可以留言給我,看到必回:

#!/usr/bin/env python 
# -*- coding:utf-8 -*-
 
import numpy as np
import tensorflow as tf
 
#定義輸入值與目標(biāo)值
X=np.array([[0,0],[0,1],[1,0],[1,1]])
Y=np.array([[0],[1],[1],[0]])
 
#定義占位符,從輸入或目標(biāo)中按行取數(shù)據(jù)
x=tf.placeholder(tf.float32,[None,2])
y=tf.placeholder(tf.float32,[None,1])
 
#初始化權(quán)重,使其滿足正態(tài)分布,w1和w2分別為輸入層到隱藏層和隱藏層到輸出層的權(quán)重矩陣
w1=tf.Variable(tf.random_normal([2,2]))
w2=tf.Variable(tf.random_normal([2,1]))
 
#定義b1和b2,分別為隱藏層和輸出層的偏移量
b1=tf.Variable([0.1,0.1])
b2=tf.Variable([0.1])
 
#使用Relu激活函數(shù)得到隱藏層的輸出值
a=tf.nn.relu(tf.matmul(x,w1)+b1)
 
#輸出層不用激活函數(shù),直接獲得其值
out=tf.matmul(a,w2)+b2
 
#定義損失函數(shù)MSE
loss=tf.reduce_mean(tf.square(out-y))
 
#優(yōu)化器選擇Adam
train=tf.train.AdamOptimizer(0.01).minimize(loss)
 
#開(kāi)始訓(xùn)練,迭代1001次(方便后邊的整數(shù)步數(shù)顯示)
with tf.Session() as session:
  session.run(tf.global_variables_initializer()) #初始化變量
  for i in range(1001):
    session.run(train,feed_dict={x:X,y:Y}) #訓(xùn)練模型
    loss_final=session.run(loss,feed_dict={x:X,y:Y}) #獲取損失
    if i%100==0:
      print("step:%d   loss:%2f" % (i,loss_final))
  print("X: %r" % X)
  print("pred_out: %r" % session.run(out,feed_dict={x:X}))

對(duì)照第三張圖片理解代碼更加直觀,我們的隱藏層神經(jīng)元功能就是將輸入值和相應(yīng)權(quán)重做矩陣乘法,然后加上偏移量,最后使用激活函數(shù)進(jìn)行非線性轉(zhuǎn)換;而輸出層沒(méi)有用到激活函數(shù),因?yàn)楸敬挝覀儾皇沁M(jìn)行分類或者其他操作,一般情況下隱藏層使用激活函數(shù)Relu,輸出層若是分類則用sigmode,當(dāng)然你也可以不用,本次實(shí)驗(yàn)只是單純地做異或運(yùn)算,那輸出層就不勞駕激活函數(shù)了~

對(duì)于標(biāo)準(zhǔn)神經(jīng)元內(nèi)部的操作可理解為下圖:

這里的x和w一般寫成矩陣形式,因?yàn)榇蠖鄶?shù)都是多個(gè)輸入,而矩陣的乘積要滿足一定的條件,這一點(diǎn)屬于線代中最基礎(chǔ)的部分,大家可以稍微了解一下,這里對(duì)設(shè)定權(quán)重的形狀還是很重要的;

看下效果吧:

這是我們?cè)?span style="color: #ff0000">學(xué)習(xí)率為0.1,迭代1001次的條件下得到的結(jié)果

然后我們學(xué)習(xí)率不變,迭代2001次,看效果:

沒(méi)有改進(jìn),這就說(shuō)明不是迭代次數(shù)的問(wèn)題,我們還是保持2001的迭代數(shù),將學(xué)習(xí)率改為0.01,看效果:

完美~~~最后損失降為0了~~一般來(lái)說(shuō),神經(jīng)網(wǎng)絡(luò)中的超參中最重要的就是學(xué)習(xí)率了,如果損失一直降不下來(lái),我們首先要想到修改學(xué)習(xí)率,其他的超參次之……

大家可以觀察一下我們的預(yù)測(cè)值,四項(xiàng)分別對(duì)應(yīng)[0,1,1,0],已經(jīng)是相當(dāng)接近了……

以上這篇Tensorflow輕松實(shí)現(xiàn)XOR運(yùn)算的方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何將tensorflow訓(xùn)練好的模型移植到Android (MNIST手寫數(shù)字識(shí)別)

    如何將tensorflow訓(xùn)練好的模型移植到Android (MNIST手寫數(shù)字識(shí)別)

    這篇文章主要介紹了將tensorflow訓(xùn)練好的模型移植到Android (MNIST手寫數(shù)字識(shí)別),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python針對(duì)給定字符串求解所有子序列是否為回文序列的方法

    Python針對(duì)給定字符串求解所有子序列是否為回文序列的方法

    這篇文章主要介紹了Python針對(duì)給定字符串求解所有子序列是否為回文序列的方法,涉及Python針對(duì)字符串的遍歷、判斷、運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • 淺談python可視化包Bokeh

    淺談python可視化包Bokeh

    這篇文章主要介紹了淺談python可視化包Bokeh,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • react+django清除瀏覽器緩存的幾種方法小結(jié)

    react+django清除瀏覽器緩存的幾種方法小結(jié)

    今天小編就為大家分享一篇react+django清除瀏覽器緩存的幾種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • python?selenium實(shí)現(xiàn)登錄豆瓣示例詳解

    python?selenium實(shí)現(xiàn)登錄豆瓣示例詳解

    大家好,本篇文章主要講的是python?selenium登錄豆瓣示例詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • 徹徹底底地理解Python中的編碼問(wèn)題

    徹徹底底地理解Python中的編碼問(wèn)題

    Python處理文本的功能非常強(qiáng)大,但是如果是初學(xué)者,沒(méi)有搞清楚python中的編碼機(jī)制,也經(jīng)常會(huì)遇到亂碼或者decode error。本文的目的是簡(jiǎn)明扼要地說(shuō)明python的編碼機(jī)制,并給出一些建議,需要的朋友可以參考下
    2018-10-10
  • 使用python telnetlib批量備份交換機(jī)配置的方法

    使用python telnetlib批量備份交換機(jī)配置的方法

    今天小編就為大家分享一篇使用python telnetlib批量備份交換機(jī)配置的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Django批量向admin注冊(cè)模型方法詳解

    Django批量向admin注冊(cè)模型方法詳解

    這篇文章主要為大家介紹了Django批量向admin注冊(cè)模型方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • python如何使用pywebview打造一個(gè)現(xiàn)代化的可視化GUI界面詳解

    python如何使用pywebview打造一個(gè)現(xiàn)代化的可視化GUI界面詳解

    pywebview是一個(gè)輕量級(jí)的跨平臺(tái)庫(kù),它可以讓你在Python程序中嵌入一個(gè)瀏覽器窗口,下面這篇文章主要給大家介紹了關(guān)于python如何使用pywebview打造一個(gè)現(xiàn)代化的可視化GUI界面的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • python如何以表格形式打印輸出的方法示例

    python如何以表格形式打印輸出的方法示例

    這篇文章主要介紹了python如何以表格形式打印輸出的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06

最新評(píng)論

汾西县| 商都县| 茂名市| 顺平县| 宁河县| 绥化市| 武宁县| 樟树市| 和静县| 祁门县| 新宾| 云南省| 汉中市| 石景山区| 孟津县| 威海市| 大渡口区| 新野县| 绥中县| 巨鹿县| 九寨沟县| 宣武区| 赤城县| 荆州市| 舒兰市| 玛纳斯县| 麻江县| 都兰县| 招远市| 浪卡子县| 葫芦岛市| 拉萨市| 德惠市| 沁水县| 青岛市| 图木舒克市| 淮阳县| 波密县| 浦城县| 南城县| 安陆市|