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

基于python的BP神經(jīng)網(wǎng)絡(luò)及異或?qū)崿F(xiàn)過程解析

 更新時(shí)間:2019年09月30日 10:05:32   作者:沙克的世界  
這篇文章主要介紹了基于python的BP神經(jīng)網(wǎng)絡(luò)及異或?qū)崿F(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

BP神經(jīng)網(wǎng)絡(luò)是最簡單的神經(jīng)網(wǎng)絡(luò)模型了,三層能夠模擬非線性函數(shù)效果。

難點(diǎn):

  • 如何確定初始化參數(shù)?
  • 如何確定隱含層節(jié)點(diǎn)數(shù)量?
  • 迭代多少次?如何更快收斂?
  • 如何獲得全局最優(yōu)解?
'''
neural networks 

created on 2019.9.24
author: vince
'''
import math
import logging
import numpy 
import random
import matplotlib.pyplot as plt

'''
neural network 
'''
class NeuralNetwork:

 def __init__(self, layer_nums, iter_num = 10000, batch_size = 1):
  self.__ILI = 0;
  self.__HLI = 1;
  self.__OLI = 2;
  self.__TLN = 3;

  if len(layer_nums) != self.__TLN:
   raise Exception("layer_nums length must be 3");

  self.__layer_nums = layer_nums; #array [layer0_num, layer1_num ...layerN_num]
  self.__iter_num = iter_num;
  self.__batch_size = batch_size;
 
 def train(self, X, Y):
  X = numpy.array(X);
  Y = numpy.array(Y);

  self.L = [];
  #initialize parameters
  self.__weight = [];
  self.__bias = [];
  self.__step_len = [];
  for layer_index in range(1, self.__TLN):
   self.__weight.append(numpy.random.rand(self.__layer_nums[layer_index - 1], self.__layer_nums[layer_index]) * 2 - 1.0);
   self.__bias.append(numpy.random.rand(self.__layer_nums[layer_index]) * 2 - 1.0);
   self.__step_len.append(0.3);

  logging.info("bias:%s" % (self.__bias));
  logging.info("weight:%s" % (self.__weight));

  for iter_index in range(self.__iter_num):
   sample_index = random.randint(0, len(X) - 1);
   logging.debug("-----round:%s, select sample %s-----" % (iter_index, sample_index));
   output = self.forward_pass(X[sample_index]);
   g = (-output[2] + Y[sample_index]) * self.activation_drive(output[2]);
   logging.debug("g:%s" % (g));
   for j in range(len(output[1])):
    self.__weight[1][j] += self.__step_len[1] * g * output[1][j];
   self.__bias[1] -= self.__step_len[1] * g;

   e = [];
   for i in range(self.__layer_nums[self.__HLI]):
    e.append(numpy.dot(g, self.__weight[1][i]) * self.activation_drive(output[1][i]));
   e = numpy.array(e);
   logging.debug("e:%s" % (e));
   for j in range(len(output[0])):
    self.__weight[0][j] += self.__step_len[0] * e * output[0][j];
   self.__bias[0] -= self.__step_len[0] * e;

   l = 0;
   for i in range(len(X)):
    predictions = self.forward_pass(X[i])[2];
    l += 0.5 * numpy.sum((predictions - Y[i]) ** 2);
   l /= len(X);
   self.L.append(l);

   logging.debug("bias:%s" % (self.__bias));
   logging.debug("weight:%s" % (self.__weight));
   logging.debug("loss:%s" % (l));
  logging.info("bias:%s" % (self.__bias));
  logging.info("weight:%s" % (self.__weight));
  logging.info("L:%s" % (self.L));
 
 def activation(self, z):
  return (1.0 / (1.0 + numpy.exp(-z)));

 def activation_drive(self, y):
  return y * (1.0 - y);

 def forward_pass(self, x):
  data = numpy.copy(x);
  result = [];
  result.append(data);
  for layer_index in range(self.__TLN - 1):
   data = self.activation(numpy.dot(data, self.__weight[layer_index]) - self.__bias[layer_index]);
   result.append(data);
  return numpy.array(result);

 def predict(self, x):
  return self.forward_pass(x)[self.__OLI];


def main():
 logging.basicConfig(level = logging.INFO,
   format = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
   datefmt = '%a, %d %b %Y %H:%M:%S');
   
 logging.info("trainning begin.");
 nn = NeuralNetwork([2, 2, 1]);
 X = numpy.array([[0, 0], [1, 0], [1, 1], [0, 1]]);
 Y = numpy.array([0, 1, 0, 1]);
 nn.train(X, Y);

 logging.info("trainning end. predict begin.");
 for x in X:
  print(x, nn.predict(x));

 plt.plot(nn.L)
 plt.show();

if __name__ == "__main__":
 main();

具體收斂效果

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中格式化format()方法詳解

    Python中格式化format()方法詳解

    這篇文章主要介紹了 Python中格式化format()方法詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Python數(shù)學(xué)建模StatsModels統(tǒng)計(jì)回歸之線性回歸示例詳解

    Python數(shù)學(xué)建模StatsModels統(tǒng)計(jì)回歸之線性回歸示例詳解

    這篇文章主要為大家介紹了Python數(shù)學(xué)建模中StatsModels統(tǒng)計(jì)回歸之線性回歸的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • python GUI庫圖形界面開發(fā)之PyQt5拖放控件實(shí)例詳解

    python GUI庫圖形界面開發(fā)之PyQt5拖放控件實(shí)例詳解

    這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5使用拖放控件實(shí)例詳解,需要的朋友可以參考下
    2020-02-02
  • 在python 不同時(shí)區(qū)之間的差值與轉(zhuǎn)換方法

    在python 不同時(shí)區(qū)之間的差值與轉(zhuǎn)換方法

    今天小編就為大家分享一篇在python 不同時(shí)區(qū)之間的差值與轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 如何配置關(guān)聯(lián)Python 解釋器 Anaconda的教程(圖解)

    如何配置關(guān)聯(lián)Python 解釋器 Anaconda的教程(圖解)

    這篇文章主要介紹了如何配置關(guān)聯(lián)Python 解釋器 Anaconda的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)火鍋工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python優(yōu)化技巧之利用ctypes提高執(zhí)行速度

    Python優(yōu)化技巧之利用ctypes提高執(zhí)行速度

    ctypes是Python的一個(gè)外部庫,提供和C語言兼容的數(shù)據(jù)類型,可以很方便地調(diào)用C DLL中的函數(shù)。今天我們就來詳細(xì)探討下ctypes庫的使用技巧
    2016-09-09
  • Python FtpLib模塊應(yīng)用操作詳解

    Python FtpLib模塊應(yīng)用操作詳解

    這篇文章主要介紹了Python FtpLib模塊應(yīng)用操作,結(jié)合實(shí)例形式詳細(xì)分析了FtpLib模塊的功能、配置、應(yīng)用相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • 詳解Python讀取yaml文件多層菜單

    詳解Python讀取yaml文件多層菜單

    這篇文章主要介紹了Python讀取yaml文件多層菜單,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Python設(shè)計(jì)模式行為型責(zé)任鏈模式

    Python設(shè)計(jì)模式行為型責(zé)任鏈模式

    這篇文章主要介紹了Python設(shè)計(jì)模式行為型責(zé)任鏈模式,責(zé)任鏈模式將能處理請(qǐng)求的對(duì)象連成一條鏈,并沿著這條鏈傳遞該請(qǐng)求,直到有一個(gè)對(duì)象處理請(qǐng)求為止,避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系,下圍繞改內(nèi)容介紹具有一點(diǎn)的參考價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Python實(shí)現(xiàn)端口檢測的方法

    Python實(shí)現(xiàn)端口檢測的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)端口檢測的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07

最新評(píng)論

武功县| 禹城市| 恩施市| 汉阴县| 靖州| 视频| 永登县| 开鲁县| 芜湖市| 阳朔县| 大洼县| 苏尼特左旗| 德兴市| 长泰县| 洛隆县| 永福县| 英山县| 文山县| 印江| 汉阴县| 津市市| 海晏县| 平昌县| 股票| 四子王旗| 福安市| 博爱县| 古蔺县| 九龙城区| 拜泉县| 潞城市| 怀化市| 临湘市| 松原市| 玛多县| 丰顺县| 远安县| 监利县| 离岛区| 孟州市| 合阳县|