数字识别的神经网络
digit-recognition的Python项目详细描述
一。手动
1.1安装
要安装程序包,请在命令提示符(Windows)或终端(Mac)中运行命令pip install digit_recognition
(可选:下载程序包并使用python setup.py install
运行setup.py脚本)。
该包使用以下依赖项:numpy、urllib3、gzip、tkinter、枕头。如有必要,应在安装过程中自动安装。如果包未按预期运行,请确保此处列出的依赖项已正确安装。
1.2设置nn
该包不包含经过训练的nn,而只包含构建它所必需的函数。因此,在使用接口之前,必须设置nn(这只需要一次)。为此,请在命令提示符/终端中运行命令install_network
(可选:在python中导入“digit_recognition”模块并调用install_network()
函数)。
这将在当前目录(“dr_data”)中创建一个文件夹,并将培训和测试集从mnist数据库下载到此文件夹。它使用这些数据分别训练一个在四层中各有784、200、100和10个节点的nn。训练算法经过三个阶段,每个阶段有60000个训练位数(这可能需要几分钟)。对nn进行评估,并将每个数字的准确度、召回率和准确度打印到控制台(important:准确度应高于95%)。最后,nn被保存到“dr_data”文件夹中。
1.3启动接口
要启动接口,请在命令提示符/终端中运行命令digit_recognition
(可选:在python中导入“digit_recognition”模块并调用run_gui()
函数)。
important:确保“dr_data”文件夹位于当前工作目录中。
1.4使用接口
界面由两个字段组成:黑色边框的绘图字段(左)和显示多个输出的反馈字段(右)。用户可以通过按下鼠标左键并移动鼠标在绘图字段中绘图。在绘图区域下面有两个按钮:“识别!按钮将图形传递给nn并在反馈字段中显示其输出;“重置”按钮删除当前图形和输出。在反馈字段中,显示三个输出:第一,nn在用户图形中识别的数字;第二,该识别的置信度(即识别正确的概率);第三,可能的备选方案(即第二个最可能的识别)。如果置信度高于80%,则不显示备选方案。
important:nn的性能对绘图字段中用户数字的大小和位置高度敏感。绘图区域中的灰色矩形表示最佳性能的位置和大小。
2.文档
2.1神经网络(类)
u init(self,design,weights=none,step_size=0.01,activation_function=sigmoid,bias=false) 建立了神经网络的基本属性。
Attributes ---------- design: list Contains the number of nodes in each layer (length is number of layers) weights: list Contains weight matrices step_size: float Step size for training algorithm activation_function: function Activation function used in neural network bias: boolean Bias nodes on or off activation: list Contains activation of nodes at each layer confusion_matrix: np.array Confusion matrix produced in 'evaluate' method (true labels in rows, predicitons in columns) accuracy, recall, precision: float Accuracy, recall, and precision of neural network produced in 'evaluate' method Methods ------- train(input_data, target_data, epochs=1) Loops of 'one_training' function one_training(input_data, target_data) Computes cost and updates weights accordingly using backpropagation run(input_data) Forward propagation for single input evaluate(input_data, target_data) Assesses performance of neural network and computes performance measures save(file_name) Saves weights of neural network as np.array
train(self,输入数据,目标数据,epochs=1) “一列”(反向传播)功能的循环(见下文)。
Arguments --------- input_data: array 3-dimensional numpy array containing input data (see pre_processing function for exact format). target_data: array 2-dimensional numpy array containing target data in one-hot representation. epochs: int Number of times the training algorithms iterates through the *entire* dataset. Defaults to 1.
one_训练(自我、输入数据、目标数据) 训练神经网络的反向传播算法。
Arguments --------- input_data: array 2-dimensional numpy array containing a single input. Passed by train function (see above). target_data: array 2-dimensional numpy array containing a single target. Passed by train function (see above).
run(self,输入数据) 正向传播算法。
Computes output of neural network for a single input. Arguments --------- input_data: array 2-dimensional numpy array containing a single input.
evaluate(自我、输入数据、目标数据) 评价神经网络的性能。 使用一个混淆矩阵计算神经网络的准确度,以及每个类的召回率和准确度。结果被打印到控制台上,也被定义为神经网络的属性。 注意:使用独立的测试数据!
Arguments --------- input_data: array 3-dimensional numpy array containing test input data. target_data: array 2-dimensional numpy array containing test target data in one-hot representation.
save(self,文件名) 保存权重作为np.数组的神经网络
Arguments --------- file_name: string Name of the file that is saved (without file extension)
2.2预处理(功能)
预处理() 下载、导入和预处理用于数字识别的数据。 数据从mnist数据库下载。由7万个28x28像素的手写数字组成。每个都有一个相应的,手动添加的标签。数据分为60000个训练实例和10000个测试实例。
Returns: Matrix representations of digits and correspondings labels in a format optimized for the neural network.
三。示例
# Import datatrain_images,train_labels,test_images,test_labels=pre_processing()# Build neural network (with two hidden layers of 200/100 nodes respectively)neural_network=NeuralNetwork([784,200,100,10],bias=True)neural_network.train(train_images,train_labels,epochs=3)neural_network.evaluate(test_images,test_labels)# Export neural networkos.chdir('DR_Data')neural_network.save('my_network')os.chdir('..')