首先先定义三个接口:
class NeuralNetWork:
def __init__(self):
#初始化网络接口,设置输入层,中间层,和输出节点数
pass
def train(self):
#根据输入的训练数据更新节点链路权重
pass
def query(self):
#根据输入数据计算并输出答案
pass
class NeuralNetWork:
def __init__(self,inputnodes,hiddennodes,outputnodes,learningrate):
#初始化网络,设置输入层,中间隐藏层,输出层节点数
self.inodes = inputnodes
self.hnodes = hiddennodes
self.onodes = outputnodes
#设置学习率--是用来调节牛顿下山法时所改变的那个值的幅度。
self.lr = learningrate
pass
def train(self):
#根据输入的训练数据更新节点链路权重
pass
def query(self):
#根据输入数据计算并输出答案
pass
创建对象:
input_nodes = 3
hidden_nodes = 3
output_nodes = 3
learning_rate = 0.3
n = NeuralNetWork(input_nodes,hidden_nodes,output_nodes,learning_rate)
import numpy
numpy.random.rand(3,3) - 0.5
#链路上的权重值随机设计到-0.5到+0.5之间
class NeuralNetWork:
def __init__(self,inputnodes,hiddennodes,outputnodes,learningrate):
#初始化网络,设置输入层,中间隐藏层,输出层节点数
self.inodes = inputnodes
self.hnodes = hiddennodes
self.onodes = outputnodes
#设置学习率
self.lr = learningrate
'''
初始化权重矩阵,我们有两个权重矩阵,一个是wih表示输入层和中间层节点链路权重形成的矩阵
一个是who,表示中间层和输出层间链路权重形成的矩阵
'''
self.wih = numpy.random.rand(self.hnodes,self.inodes) - 0.5
self.who = numpy.random.rand(self.onodes,self.inodes) - 0.5
pass
def train(self):
#根据输入的训练数据更新节点链路权重
pass
def query(self,inputs):
#根据输入数据计算并输出答案
hidden_inputs = numpy.dot(self.wih,inputs)
pass
import scipy.special#这个库里包含激活函数
class NeuralNetWork:
def __init__(self,inputnodes,hiddennodes,outputnodes,learningrate):
#初始化网络,设置输入层,中间隐藏层,输出层节点数
self.inodes = inputnodes
self.hnodes = hiddennodes
self.onodes = outputnodes
#设置学习率
self.lr = learningrate
'''
初始化权重矩阵,我们有两个权重矩阵,一个是wih表示输入层和中间层节点链路权重形成的矩阵
一个是who,表示中间层和输出层间链路权重形成的矩阵
'''
#形成input->hiddende的
self.wih = numpy.random.rand(self.hnodes,self.inodes) - 0.5
self.who = numpy.random.rand(self.onodes,self.inodes) - 0.5
self.activation_function = lambda x:scipy.special.expit(x)
#激活函数:expit
#lambda是把expit函数改名为activation_function
pass
def train(self):
#根据输入的训练数据更新节点链路权重
pass
def query(self,inputs):
#根据输入数据计算并输出答案
#计算中间层从输入层接收到的信号量
hidden_inputs = numpy.dot(self.wih,inputs)
#计算中间层经过激活函数以后形成的输出信号量
hidden_outputs = self.activation_function(hidden_inputs)
#计算最外层接收到的信号量
final_inputs = numpy.dot(self.who,hidden_outputs)
#计算最外层神经元经过激活函数后输出的信号量
final_outputs = self.activation_function(final_inputs)
print(final_outputs)
pass
最后开始测试:
input_nodes = 3
hidden_nodes = 3
output_nodes = 3
learning_rate = 0.3
n = NeuralNetWork(input_nodes,hidden_nodes,output_nodes,learning_rate)
n.query([1.0,0.5,-1.5])