数字识别的神经网络

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('..')

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JavaFX:无法在GridPane内水平居中放置行单元格   java GAE flex Jersey Web服务返回404   java使用SLF4J,是否可以对错误/警告采取行动?   如何使用Java解析每个不同键和值的JSON对象?   java如何在azure服务总线中始终侦听队列并截获每条消息   java需要退出循环并修复打印顺序错误(基本计算器)   java在Kafka的哪个分区中有多少数据?   在Java中访问无顶级类的非顶级类的编译器构造   java如何从maven项目生成jar   java如何使用amazon资源名称(ARN)作为标识符来查找amazon资源?   java为什么我的程序忽略else语句   java如何控制JTable中的字体样式、颜色和大小?   java对命令使用多个类,命令不起作用?   树集中的java字母排序不起作用   java将变量作为正则表达式传递   java TestNG XML中的一组值   java什么时候应该重写Equals函数?   Java中通过SSL使用web服务的web服务   java LibGDX以不同的速度移动对象   java中“and”的正则表达式