初识这个领域,由于之前有python基础,根据本人习惯,直接从简单的入手。
神经网络需要至少三个部分:
初始化函数 | 设定输入层节点,隐藏层节点和输出层节点 |
---|---|
训练函数 | 学习给定训练集样本后,优化权重 |
查询 | 给定输入。从输出节点返回答案 |
框架如下:
#神经网络框架
class neuraNetwork:
def __init__():
def train():
def query():
初始化网络
现在我们讨论最简单的神经网络。
在初始化网络这一部分。我们需要设置输入层节点,隐藏层节点和输出层节点的数量。
我们要尽量的构建一般代码,以便于适用于不同的场景。
def __init__(self,inputnodes,hiddennodes,outputnodes,learningrate):
self.inodes=inputnodes
self.hnodes=hiddennodes
self.onodes=outputnodes
self.lr=learningrate
pass
权重
网络中最重要的部分是链接权重,我们要使用这些权重来计算前馈信号,反向传播误差。
输入——隐藏:权重矩阵Wih=inputnodes*hiddennodes
隐藏——输出:权重矩阵Who=hiddennodes*outputnodes
生成权重矩阵我们还可以使用numpy.random.rand(row,columns)
此函数能生成0~1之间的随机值矩阵。那么,现在有一个问题,我们没有负值的权重,那么,我们将结果减去0.5.获得的矩阵就是-0.5到0.5的随机值了。
self.wih=(numpy.random.rand(self.hnodes,self.inodes)