如何用神经网络创建一个光学符号识别器

2025-11-03 11:39:27

1、导入库文件,加载输入文件

     import neurolab as nl  # 神经网络的NeuroLab库

     import numpy as np

     input_file = 'letter.data'

2、 2、初始化数据点参量

      在神经网络处理大量数据时,往往需要花费很多时间来做训练。为了展示                          如何创建这个系统,这里只是用20个数据点:

      

      num_datapoint = 20

      orig_labels = 'omandig'  # 不同的字符

      num_output = len(orig_labels)   # 不同字符的数量

如何用神经网络创建一个光学符号识别器

3、定义训练和测试参数

     num_train = int(0.9*num_datapoints)

     num_test = num_datapoints - num_train

     # 定义数据集提取参数

     start_index = 6

     end_index = -1    

4、生成数据集

     data = []

     labels = []

     with open(input_file, 'r')  as f:

        for line in f.readlines()

                 # 按Tab键分割

                 list_vals = line.split('\t')

                  

                 # 这里增加一个错误步骤检测,查看这些字符是否在标签列表中

                 if list_val[1] not in orig_labels:

                         continue

                 

                  # 提出标签,并将其添加到主列表的后面

                  label = np.zeros((num_output,1))

                  label[orig_labels.index(list_vals[1])] = 1

                  labels.append(label)

                  

                  # 提取字符,并将其添加到主列表的后面

                  cur_char = np.array([float(x) for x in list_vals[start_index:

                                                    end_index]])

                  data.append(cur_char)

                  # 当有足够数据时跳出循环

                  if len(data) >= num_datapoints:

                       break

      # 如下两图为部分数据参数,上图为数据data,下图为标签lables

如何用神经网络创建一个光学符号识别器

如何用神经网络创建一个光学符号识别器

5、将数据转换成数组,并提取数据维度信息

     data = np.asfarray(data)

     labels = np.array(labels).reshape(num_datapoints, num_output)

     num_dims = len(data[0])

     # 上图为数据data,下图为标签lables

如何用神经网络创建一个光学符号识别器

如何用神经网络创建一个光学符号识别器

6、迭代训练神经网络

     net = nl.net.newff([[0, 1] for _ in range(len(data[0]))],\

                                    [128, 16, num_output])                                                                 net.trainf = nl.train.train_gd                                                                                       error = net.train(data[:num_train, :], labels[:num_train, :], epochs=10000,                                          show=100, goal=0.01)

如何用神经网络创建一个光学符号识别器

7、测试输入数据预测输出结构

     predicted_output = net.sim(data[num_train:, :])

     print("\nTesting on unknown data:")

     for i in range(num_test):

           print("\nOriginal: ",orig_labeslp[np.argmax(labels[i])])

           print("Predicted: ",orig_labeslp[np.argmax(predicted_output[i])])

如何用神经网络创建一个光学符号识别器

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢