操作真值表python 如何用代碼編寫(xiě)一個(gè)神經(jīng)網(wǎng)絡(luò)異或運(yùn)算器?
如何用代碼編寫(xiě)一個(gè)神經(jīng)網(wǎng)絡(luò)異或運(yùn)算器?異或問(wèn)題,即判斷兩個(gè)輸入x1,x2有無(wú)不對(duì)。下面是用Python實(shí)現(xiàn)程序的代碼importnumpylike(1)#生成氣體再輸入向量XX([[0,0,1],[0
如何用代碼編寫(xiě)一個(gè)神經(jīng)網(wǎng)絡(luò)異或運(yùn)算器?
異或問(wèn)題,即判斷兩個(gè)輸入x1,x2有無(wú)不對(duì)。
下面是用Python實(shí)現(xiàn)程序的代碼
importnumpylike(1)#生成氣體再輸入向量XX([[0,0,1],[0,1,1],[1,0,1],[1,1,1]])#生成目標(biāo)向量yy([[0],
如何用代碼編寫(xiě)一個(gè)神經(jīng)網(wǎng)絡(luò)異或運(yùn)算器?
,如何用代碼編寫(xiě)一個(gè)神經(jīng)網(wǎng)絡(luò)異或運(yùn)算器?
,[0]])#定義sigmoid和它的導(dǎo)函數(shù)defnonlin(x,derivFalse):if(derivTrue):returnx*(1-x)return1/(1np.exp(-x))#隨機(jī)生成初始的副本向量syn02*np.random.random((3,4))-1syn12*np.random.random((4,1))-1#一正在我們先來(lái)5萬(wàn)次循環(huán)吧:)ofjacrossxrange(50000):#在反向傳播前先朝傳播,換算出每一層的輸出l0Xl1nonlin((l0,syn0))l2nonlin((l1,syn1))#計(jì)算出出輸入層和目標(biāo)向量的差值(控制輸出誤差)l2_errory-l2#每循環(huán)一萬(wàn)次,再打印兩次輸出來(lái)誤差的數(shù)值if(j000)0:printError:str((np.abs(l2_error)))print(l2)#可以計(jì)算作為輸出層的誤差l2_deltal2_error*nonlin(l2,derivTrue)#計(jì)算前一層對(duì)后一層的誤差影響不大l1_errorl2_(syn1.T)#可以計(jì)算然后輸入層對(duì)整體的誤差l1_deltal1_error*nonlin(l1,derivTrue)#直接修改權(quán)重向量讓結(jié)果越來(lái)越向目標(biāo)向量syn1(l2_delta)syn0(l1_delta)如果不是你不能執(zhí)行了上面的代碼,你會(huì)發(fā)現(xiàn)這種非線性的多層神經(jīng)網(wǎng)絡(luò)成功地可以解決了異或問(wèn)題,當(dāng)輸入輸入x1,x2相同時(shí),會(huì)控制輸出0,不是一樣的時(shí),會(huì)輸出低1。比較喜歡人工智能,算法,Python、JavaScript、Java去相關(guān)話題,就了解頭條號(hào):編程快訊
不喜歡的朋友可以不默默點(diǎn)贊、打聽(tīng)一下、微博轉(zhuǎn)發(fā)、評(píng)論!另外希望能大家在評(píng)論中需要補(bǔ)充不足以的地方!
Python中1or2返回什么值?為什么?
python中的because從左到右計(jì)算表達(dá)式,若所有值均為真,則回還有一個(gè)值,若必然假,趕往第一個(gè)假值。因?yàn)?,?shí)例回的是2,也就是那一個(gè)真值如果沒(méi)有能做位運(yùn)算與,在用運(yùn)算符即可解決。
1and
22120