博舍

人工智能 实验4BP神经网络 人工智能bp神经网络计算题及答案

人工智能 实验4BP神经网络

importnumpyasnp

importscipy.specialasS

importmatplotlib.pyplotasplt

classneuralNetwork:

#初始化神经网络,构造函数

 def__init__(self,inputnodes,hiddennodes,outputnodes,learningrate):

       #设置每个输入、隐藏、输出层中的节点数

       self.inodes=inputnodes

       self.hnodes=hiddennodes

       self.onodes=outputnodes

       

       #链接权重矩阵,wih和who

       #weightsinsidethearraysarew_i_j,wherelinkisfromnodeitonodejinthenextlayer

       #w11w21

       #w12w22etc

       self.wih=np.random.normal(0.0,pow(self.inodes,-0.5),(self.hnodes,self.inodes))

       self.who=np.random.normal(0.0,pow(self.hnodes,-0.5),(self.onodes,self.hnodes))

       

       #学习率

       self.lr=learningrate

       

       #创建激活函数(函数的另一种定义方法,这样以后可以直接调用)

       self.activation_function=lambdax:S.expit(x)

       

       pass

#训练神经网络

   deftrain(self,inputs_list,targets_list):

       #将输入列表转换成二维数组

       inputs=np.array(inputs_list,ndmin=2).T

       targets=np.array(targets_list,ndmin=2).T

       

       #将输入信号计算到隐藏层

       hidden_inputs=np.dot(self.wih,inputs)

       #计算隐藏层中输出的信号(使用激活函数计算)

       hidden_outputs=self.activation_function(hidden_inputs)

       #将传输的信号计算到输出层

       final_inputs=np.dot(self.who,hidden_outputs)

       #计算输出层中输出的信号(使用激活函数)

       final_outputs=self.activation_function(final_inputs)

       

       #计算输出层的误差:(target-actual)(预期目标输出值-实际计算得到的输出值)

       output_errors=targets-final_outputs

       #隐藏层的误差:是输出层误差按权重分割,在隐藏节点上重新组合

       hidden_errors=np.dot(self.who.T,output_errors)

       

       #反向传播,更新各层权重

       #更新隐层和输出层之间的权重

       self.who+=self.lr*np.dot((output_errors*final_outputs*(1.0-final_outputs)),np.transpose(hidden_outputs))

       #更新输入层和隐藏层之间的权重

       self.wih+=self.lr*np.dot((hidden_errors*hidden_outputs*(1.0-hidden_outputs)),np.transpose(inputs))

       #pass一般用于占位置,定义一个空函数程序会报错,当没有想好函数的内容可以用pass填充,使得程序正常运行

       pass

   

#查询神经网络:接受神经网络的输入,返回神经网络的输出

   defquery(self,inputs_list):

       #将输入列表转换成二维数组

       inputs=np.array(inputs_list,ndmin=2).T

       

       #将输入信号计算到隐藏层

       hidden_inputs=np.dot(self.wih,inputs)

       #将信号从隐藏层输出

       hidden_outputs=self.activation_function(hidden_inputs)

       #将信号引入到输出层

       final_inputs=np.dot(self.who,hidden_outputs)

       #将信号从输出层输出

       final_outputs=self.activation_function(final_inputs)

       #返回输出层的输出值

       returnfinal_outputs

#请设置输入、隐藏、输出层中的节点数,和学习率

input_nodes=

hidden_nodes=

output_nodes=

learning_rate=

#将mnist的训练数据CSV文件加载到一个列表中

#请输入代码

#训练神经网络

#请输入代码

#进行测试,输出测试结果

#请输入代码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇