Untitled12

'''
尝试下写注释的感觉

'''

import numpy as np
import math
import random

'''
#生成随机函数
def random_number(a,b):
    return (b-a)*random.random+a
    
'''
#生成矩阵
def makwmatrix(m,n,fill =0.0):
    a =[]
    for i in range(20):
        a.append([fill]*n)
    return a

#生成激活函数
def sigmod(x):
    return 1/(1+np.esp(-x))

#构造神经网络架构,分别用num_in,num_hidden,num_out指代输入层、隐藏层、输出层
class BPNN:
    def __init__(self,num_in,num_hidden,num_out):
        
        #设置节点数
        self.num_in=num_in+1
        self.num_hidden=num_hidden+1
        self.num_out=num_out
        
        #激活节点
        self.active_in=[1.0]*self.num_in
        self.active_hidden=[1.0]*self.num_hidden
        self.active_out=[1.0]*self.num_out
        
        #创建权重矩阵,分别用weight_in,weight_out指代num_in→num_hidden,num_hidden→num_out两个过程
        self.weight_in=makematrix(self.num_in,self.num_hidden)
        self.weight_out=makematrix(self.num_hidden,num_out)
        
        #为矩阵赋初值
        for i in range(self.num_in):
            for j in range(self.num_hidden):
                self.weight_in[i][j]=random_number(-1.0,1.0)
        for i in range(self.num_hidden):
            for j in range(self.num_out):
                self.weight_out[i][j]=random_number(-1.0,1.0)
            
    def update(self,outs):
        
        #输入层直接传递数据,不做处理
        for i in range(self.num_in-1):
            self.active[i]=input[i]
            
        #数据在隐藏层求和、激活处理
        for j in range(self.num_hidden-1):
            sum=0.0
            for i in range(self.num_in):
                sum=sum+self.active_in[j]*self.weight_in[j][i]
            self.active_hidden[i]=sigmod(sum)
        
        #数据在隐藏层求和、激活处理
        for i in range(self.num_out):
            sum=0.0
            for j in range(self.hidden):
                sum=sum+self.active_hidden[j]*self.weight_out[j][i]
            self.active_out[i]=sigmod(sum)
        
        return self.active_out[i]
    def errorbackupropagate(self,targets,lr,m):
        
        #计算输出层误差
        out_deltas=[0.0]*self.num_out
        for i in range(self.num_out):
            error=targets[i]-self.active_out[i]
            out_deltas[i]=derived_sigmod(self.active_out[i])*errror
            
        #计算隐藏层误差
        hidden_deltas=[0.0]*self.num_hidden
        for i in range(self.num_hidden):
            error=0.0
            for j in range(self.num_out):
                error=error+out_deltas[j]*self.wight_out[i][j]
            hidden_deltas[i]=derived_sigmod(self.active_hidden[i])*error
        
        #更新输出层权值
        for i in range(self.num_hidden):
            for j in range(self.num_out):
                change=out_deltas[j]*self.active_hidden[i]
                self.wight_out[i][j]=self.wight_out[i][j]+lr*change+m*self.co[i][j]
                self.co[i][j]=change
        
        #更新输入层权值
        for i in range(self.num_in):
            for i in range(self.num_hidden):
                change=hidden_deltas[j]*self.active_in[i]
                self.wight_in[i][j]=self.wight_in[i][j]+lr*change+lr*change+m*self.co[i][j]
                self.co[i][j]=change
        #计算总误差
        error=0.0
        for i in range(len(targets)):
            error=error+0.5*(targets[i]-self.active_out[i])**2
        return error
'''
太麻烦了不写了

'''
    def train(self,pattern,itera=1000,lr=0.1,m=0.1):
        for i in range(itera):
            error = 0.0
            for j in pattern:
                inputs=j[0]
                targets=j[1]
                self.update(inputs)
                error=error+self.errorbackpropagate(targets,lr,m)
def demo():
    patt=[
            [[1,2,5],[0]],
            [[1,3,4],[0]],
            [[1,6,2],[1]],
            [[1,5,1],[0]],
            [[1,8,4],[0]],
                            ]
    
    n = BPNN(3,3,1)
    
    n.train(patt)
'''
尝试下写注释的感觉

'''

import numpy as np
import math
import random


#生成随机函数
def random_number(a,b):
    return (b-a)*random.random+a
    

#生成矩阵
def makwmatrix(m,n,fill =0.0):
    a =[]
    for i in range(20):
        a.append([fill]*n)
    return a

#生成激活函数
def sigmod(x):
    return 1/(1+np.esp(-x))

#构造神经网络架构,分别用num_in,num_hidden,num_out指代输入层、隐藏层、输出层
class BPNN:
    def __init__(self,num_in,num_hidden,num_out):
        
        #设置节点数
        self.num_in=num_in+1
        self.num_hidden=num_hidden+1
        self.num_out=num_out
        
        #激活节点
        self.active_in=[1.0]*self.num_in
        self.active_hidden=[1.0]*self.num_hidden
        self.active_out=[1.0]*self.num_out
        
        #创建权重矩阵,分别用weight_in,weight_out指代num_in→num_hidden,num_hidden→num_out两个过程
        self.weight_in=makematrix(self.num_in,self.num_hidden)
        self.weight_out=makematrix(self.num_hidden,num_out)
        
        #为矩阵赋初值
        for i in range(self.num_in):
            for j in range(self.num_hidden):
                self.weight_in[i][j]=random_number(-1.0,1.0)
        for i in range(self.num_hidden):
            for j in range(self.num_out):
                self.weight_out[i][j]=random_number(-1.0,1.0)
        
        
    def update(self,outs):
        
        #输入层直接传递数据,不做处理
        for i in range(self.num_in-1):
            self.active[i]=input[i]
            
        #数据在隐藏层求和、激活处理
        for j in range(self.num_hidden-1):
            sum=0.0
            for i in range(self.num_in):
                sum=sum+self.active_in[j]*self.weight_in[j][i]
            self.active_hidden[i]=sigmod(sum)
        
        #数据在隐藏层求和、激活处理
        for i in range(self.num_out):
            sum=0.0
            for j in range(self.hidden):
                sum=sum+self.active_hidden[j]*self.weight_out[j][i]
            self.active_out[i]=sigmod(sum)
        
        return self.active_out[i]      
    
    
    def evaluate(self,targets,lr,m):
        
        #计算输出层误差
        out_deltas=[0.0]*self.num_out
        for i in range(self.num_out):
            error=targets[i]-self.active_out[i]
            out_deltas[i]=derived_sigmod(self.active_out[i])*errror
            
        #计算隐藏层误差
        hidden_deltas=[0.0]*self.num_hidden
        for i in range(self.num_hidden):
            error=0.0
            for j in range(self.num_out):
                error=error+out_deltas[j]*self.wight_out[i][j]
            hidden_deltas[i]=derived_sigmod(self.active_hidden[i])*error
        
        #更新输出层权值
        for i in range(self.num_hidden):
            for j in range(self.num_out):
                change=out_deltas[j]*self.active_hidden[i]
                self.wight_out[i][j]=self.wight_out[i][j]+lr*change+m*self.co[i][j]
                self.co[i][j]=change
        
        #更新输入层权值
        for i in range(self.num_in):
            for i in range(self.num_hidden):
                change=hidden_deltas[j]*self.active_in[i]
                self.wight_in[i][j]=self.wight_in[i][j]+lr*change+lr*change+m*self.co[i][j]
                self.co[i][j]=change
        #计算总误差
        error=0.0
        for i in range(len(targets)):
            error=error+0.5*(targets[i]-self.active_out[i])**2
        return error
'''
太麻烦了不写了

'''

def train(self,pattern,itera=1000,lr=0.1,m=0.1):
        for i in range(itera):
            error = 0.0
            for j in pattern:
                inputs=j[0]
                targets=j[1]
                self.update(inputs)
                error=error+self.evaluate(targets,lr,m)

def demo():
    patt=[
            [[1,2,5],[0]],
            [[1,3,4],[0]],
            [[1,6,2],[1]],
            [[1,5,1],[0]],
            [[1,8,4],[0]],
                            ]
    
    n = BPNN(3,3,1)
    
    n.train(patt)

if __name__ == '__main__':
    demo()
'''
不行,还是写了好找错

'''
[1, 2, 5]
[0.0016446197577276102]
[1, 3, 4]
[0.9678687857403386]
[1, 6, 2]
[0.9701885603161033]
[1, 5, 1]
[0.0017425892683211733]
[1, 8, 4]
[0.9999684148747167]
[-0.21217500874980652, 0.142394795791502, -0.16732006197940957, -0.1286197596463873]
[0.6161530502332568, -0.022786031903600623, -0.013301719056046435, 0.09719084845422127]
[-0.44625646714156747, 0.1953459757523177, 0.06977140444057772, -0.07628595739325306]
[0.0422784256581239, 0.07684226384187931, 0.01834112977026109, -0.1500636164822291]
[-1.7057296873437396e-14]
[20.3879191063329]
[-18.36849604581326]
[-21.2857234397511]






pip install matplotlib

Requirement already satisfied: matplotlib in d:\programdata\anaconda3\lib\site-packages (3.2.2)
Requirement already satisfied: kiwisolver>=1.0.1 in d:\programdata\anaconda3\lib\site-packages (from matplotlib) (1.2.0)
Requirement already satisfied: numpy>=1.11 in d:\programdata\anaconda3\lib\site-packages (from matplotlib) (1.18.5)
Requirement already satisfied: cycler>=0.10 in d:\programdata\anaconda3\lib\site-packages (from matplotlib) (0.10.0)
Requirement already satisfied: python-dateutil>=2.1 in d:\programdata\anaconda3\lib\site-packages (from matplotlib) (2.8.1)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in d:\programdata\anaconda3\lib\site-packages (from matplotlib) (2.4.7)
Requirement already satisfied: six in d:\programdata\anaconda3\lib\site-packages (from cycler>=0.10->matplotlib) (1.15.0)
Note: you may need to restart the kernel to use updated packages.
pip install math
Note: you may need to restart the kernel to use updated packages.


ERROR: Could not find a version that satisfies the requirement math (from versions: none)
ERROR: No matching distribution found for math
pip install pandas

Requirement already satisfied: pandas in d:\programdata\anaconda3\lib\site-packages (1.0.5)
Requirement already satisfied: python-dateutil>=2.6.1 in d:\programdata\anaconda3\lib\site-packages (from pandas) (2.8.1)
Requirement already satisfied: numpy>=1.13.3 in d:\programdata\anaconda3\lib\site-packages (from pandas) (1.18.5)
Requirement already satisfied: pytz>=2017.2 in d:\programdata\anaconda3\lib\site-packages (from pandas) (2020.1)
Requirement already satisfied: six>=1.5 in d:\programdata\anaconda3\lib\site-packages (from python-dateutil>=2.6.1->pandas) (1.15.0)
Note: you may need to restart the kernel to use updated packages.
pip install pybrain
Collecting pybrain
  Downloading PyBrain-0.3.tar.gz (262 kB)
Building wheels for collected packages: pybrain
  Building wheel for pybrain (setup.py): started
  Building wheel for pybrain (setup.py): finished with status 'done'
  Created wheel for pybrain: filename=PyBrain-0.3-py3-none-any.whl size=399047 sha256=5bf8f095e2ac3854ba71fbe14c5c7191ef7cdcbc8d4a40142090b12576173c97
  Stored in directory: c:\users\administrator\appdata\local\pip\cache\wheels\b4\e5\c5\db4542d9f7f2d982b1a6165de1d8c6ce2b8de267e9e21bc16a
Successfully built pybrain
Installing collected packages: pybrain
Successfully installed pybrain-0.3
Note: you may need to restart the kernel to use updated packages.
pip install theano
Collecting theano
  Downloading Theano-1.0.5.tar.gz (2.8 MB)
Requirement already satisfied: numpy>=1.9.1 in d:\programdata\anaconda3\lib\site-packages (from theano) (1.18.5)
Requirement already satisfied: scipy>=0.14 in d:\programdata\anaconda3\lib\site-packages (from theano) (1.5.0)
Requirement already satisfied: six>=1.9.0 in d:\programdata\anaconda3\lib\site-packages (from theano) (1.15.0)
Building wheels for collected packages: theano
  Building wheel for theano (setup.py): started
  Building wheel for theano (setup.py): finished with status 'done'
  Created wheel for theano: filename=Theano-1.0.5-py3-none-any.whl size=2668111 sha256=a130614a0e49ddc54c21463502163b1d087e8ff6fce7af3d85265a23a089e5ca
  Stored in directory: c:\users\administrator\appdata\local\pip\cache\wheels\84\cb\19\235b5b10d89b4621f685112f8762681570a9fa14dc1ce904d9
Successfully built theano
Installing collected packages: theano
Successfully installed theano-1.0.5
Note: you may need to restart the kernel to use updated packages.
pip install pylearn2
Note: you may need to restart the kernel to use updated packages.


ERROR: Could not find a version that satisfies the requirement pylearn2 (from versions: none)
ERROR: No matching distribution found for pylearn2
pip install scrapy
Collecting scrapy
  Downloading Scrapy-2.5.0-py2.py3-none-any.whl (254 kB)
Collecting protego>=0.1.15
  Downloading Protego-0.1.16.tar.gz (3.2 MB)
Collecting queuelib>=1.4.2
  Downloading queuelib-1.6.2-py2.py3-none-any.whl (13 kB)
Collecting w3lib>=1.17.0
  Downloading w3lib-1.22.0-py2.py3-none-any.whl (20 kB)
Requirement already satisfied: zope.interface>=4.1.3 in d:\programdata\anaconda3\lib\site-packages (from scrapy) (4.7.1)
Collecting h2<4.0,>=3.0
  Downloading h2-3.2.0-py2.py3-none-any.whl (65 kB)
Collecting Twisted[http2]>=17.9.0
  Downloading Twisted-21.7.0-py3-none-any.whl (3.1 MB)
Requirement already satisfied: pyOpenSSL>=16.2.0 in d:\programdata\anaconda3\lib\site-packages (from scrapy) (19.1.0)
Collecting itemloaders>=1.0.1
  Downloading itemloaders-1.0.4-py3-none-any.whl (11 kB)
Collecting itemadapter>=0.1.0
  Downloading itemadapter-0.4.0-py3-none-any.whl (10 kB)
Requirement already satisfied: cryptography>=2.0 in d:\programdata\anaconda3\lib\site-packages (from scrapy) (2.9.2)
Collecting parsel>=1.5.0
  Downloading parsel-1.6.0-py2.py3-none-any.whl (13 kB)
Collecting PyDispatcher>=2.0.5; platform_python_implementation == "CPython"
  Downloading PyDispatcher-2.0.5.tar.gz (34 kB)
Requirement already satisfied: lxml>=3.5.0; platform_python_implementation == "CPython" in d:\programdata\anaconda3\lib\site-packages (from scrapy) (4.5.2)
Collecting service-identity>=16.0.0
  Downloading service_identity-21.1.0-py2.py3-none-any.whl (12 kB)
Collecting cssselect>=0.9.1
  Downloading cssselect-1.1.0-py2.py3-none-any.whl (16 kB)
Requirement already satisfied: six in d:\programdata\anaconda3\lib\site-packages (from protego>=0.1.15->scrapy) (1.15.0)
Requirement already satisfied: setuptools in d:\programdata\anaconda3\lib\site-packages (from zope.interface>=4.1.3->scrapy) (49.2.0.post20200714)
Collecting hpack<4,>=3.0
  Downloading hpack-3.0.0-py2.py3-none-any.whl (38 kB)
Collecting hyperframe<6,>=5.2.0
  Downloading hyperframe-5.2.0-py2.py3-none-any.whl (12 kB)
Collecting twisted-iocpsupport~=1.0.0; platform_system == "Windows"
  Downloading twisted_iocpsupport-1.0.2-cp38-cp38-win_amd64.whl (45 kB)
Collecting constantly>=15.1
  Downloading constantly-15.1.0-py2.py3-none-any.whl (7.9 kB)
Collecting Automat>=0.8.0
  Downloading Automat-20.2.0-py2.py3-none-any.whl (31 kB)
Requirement already satisfied: attrs>=19.2.0 in d:\programdata\anaconda3\lib\site-packages (from Twisted[http2]>=17.9.0->scrapy) (19.3.0)
Requirement already satisfied: typing-extensions>=3.6.5 in d:\programdata\anaconda3\lib\site-packages (from Twisted[http2]>=17.9.0->scrapy) (3.7.4.2)
Collecting incremental>=21.3.0
  Downloading incremental-21.3.0-py2.py3-none-any.whl (15 kB)
Collecting hyperlink>=17.1.1
  Downloading hyperlink-21.0.0-py2.py3-none-any.whl (74 kB)
Collecting priority<2.0,>=1.1.0; extra == "http2"
  Downloading priority-1.3.0-py2.py3-none-any.whl (11 kB)
Collecting jmespath>=0.9.5
  Downloading jmespath-0.10.0-py2.py3-none-any.whl (24 kB)
Requirement already satisfied: cffi!=1.11.3,>=1.8 in d:\programdata\anaconda3\lib\site-packages (from cryptography>=2.0->scrapy) (1.14.0)
Collecting pyasn1-modules
  Downloading pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB)
Collecting pyasn1
  Downloading pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
Requirement already satisfied: idna>=2.5 in d:\programdata\anaconda3\lib\site-packages (from hyperlink>=17.1.1->Twisted[http2]>=17.9.0->scrapy) (2.10)
Requirement already satisfied: pycparser in d:\programdata\anaconda3\lib\site-packages (from cffi!=1.11.3,>=1.8->cryptography>=2.0->scrapy) (2.20)
Building wheels for collected packages: protego, PyDispatcher
  Building wheel for protego (setup.py): started
  Building wheel for protego (setup.py): finished with status 'done'
  Created wheel for protego: filename=Protego-0.1.16-py3-none-any.whl size=7769 sha256=09862b6d4cc8f606915c984c6e3e588797c7fd88025a407dac533b94a3cec19f
  Stored in directory: c:\users\administrator\appdata\local\pip\cache\wheels\91\64\36\bd0d11306cb22a78c7f53d603c7eb74ebb6c211703bc40b686
  Building wheel for PyDispatcher (setup.py): started
  Building wheel for PyDispatcher (setup.py): finished with status 'done'
  Created wheel for PyDispatcher: filename=PyDispatcher-2.0.5-py3-none-any.whl size=12552 sha256=b879c08525849a891960f42485ebc24dc75acb3961375350dbaabe0cdc46f259
  Stored in directory: c:\users\administrator\appdata\local\pip\cache\wheels\d1\d7\61\11b5b370ee487d38b5408ecb7e0257db9107fa622412cbe2ff
Successfully built protego PyDispatcher
Installing collected packages: protego, queuelib, w3lib, hpack, hyperframe, h2, twisted-iocpsupport, constantly, Automat, incremental, hyperlink, priority, Twisted, jmespath, cssselect, parsel, itemadapter, itemloaders, PyDispatcher, pyasn1, pyasn1-modules, service-identity, scrapy
Successfully installed Automat-20.2.0 PyDispatcher-2.0.5 Twisted-21.7.0 constantly-15.1.0 cssselect-1.1.0 h2-3.2.0 hpack-3.0.0 hyperframe-5.2.0 hyperlink-21.0.0 incremental-21.3.0 itemadapter-0.4.0 itemloaders-1.0.4 jmespath-0.10.0 parsel-1.6.0 priority-1.3.0 protego-0.1.16 pyasn1-0.4.8 pyasn1-modules-0.2.8 queuelib-1.6.2 scrapy-2.5.0 service-identity-21.1.0 twisted-iocpsupport-1.0.2 w3lib-1.22.0
Note: you may need to restart the kernel to use updated packages.
pip install jieba
Collecting jieba
  Downloading jieba-0.42.1.tar.gz (19.2 MB)
Building wheels for collected packages: jieba
  Building wheel for jieba (setup.py): started
  Building wheel for jieba (setup.py): finished with status 'done'
  Created wheel for jieba: filename=jieba-0.42.1-py3-none-any.whl size=19314481 sha256=75f6fc7ea135b0897716ac7e54557e833819ce500e3ea11e8ab8267795b0532b
  Stored in directory: c:\users\administrator\appdata\local\pip\cache\wheels\ca\38\d8\dfdfe73bec1d12026b30cb7ce8da650f3f0ea2cf155ea018ae
Successfully built jieba
Installing collected packages: jieba
Successfully installed jieba-0.42.1
Note: you may need to restart the kernel to use updated packages.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值