结合《python神经网络编程》这本书实现代码,个人认为最近几年出的实战系列书,给出的代码和思路更加贴切现在的技术,吴恩达课程讲解很棒但是很多资料和代码或者思想比较老化,不便于吸收理解。
一:主函数
#一个三层的简单神经网络实现
import numpy as np
import scipy.special
import mnist_train as mtr
import mnist_test as mte
class neuarlNetwork:
#初始化函数--设定输入层节点,隐藏层节点和输出层节点的数量
def __init__(self, inputnodes, hiddennodes, outputnodes, learningrate):
#设定输入层节点,隐藏层节点,输出层节点的数量
self.inodes = inputnodes
self.hnodes = hiddennodes
self.onodes = outputnodes
#学习效率
self.lr = learningrate
#权重矩阵(-0.5,是希望权重的范围可以在-0.5-0.5之间)
self.wih = (np.random.rand(self.hnodes, self.inodes) - 0.5)
self.who = (np.random.rand(self.onodes, self.hnodes) - 0.5)
#定义S函数
self.activation_function = lambda x:scipy.special.expit(x)
pass
#训练--学习给定训练集样本后,优化权重
def train(self,input