数据集和源代码来自 https://blog.csdn.net/qq_36148847/article/details/79306762
萌新入门,如果过程有误请指正
当时做的时候数据集还只有几百张,今天看发现已经扩充了很多
下面的代码是当时实验的时候的代码,只识别了六个字
原博给的代码经过测试后,发现过拟合问题严重,模型不稳定,因此作以下修改:
1.更改了参数初始化方式:改成xavier初始化方法
参数初始化的目的是为了让神经网络在训练过程中学习到有用的信息,Glorot认为:优秀的初始化应该使得各层的激活值和状态梯度的方差在传播过程中的方差保持一致,Xavier初始化确实保证了Glorot条件。
2.更改了激活函数:改成leaky-relu
ReLU是将所有的负值都设为零,相反,Leaky ReLU是给所有负值赋予一个非零斜率。
3.增加了正则化过程:L2正则化
结果训练集准确率是96.77%左右,当时测试集太小了,准确率算出来没意义。
4.准确率开始下降的时候停止训练,准确率不变的时候停止训练
还有其他修改想起来再继续补……增加了tensorboard监测,不过被我注释掉一些
import sys
import os
import time
import random
import matplotlib.pyplot as plt
import matplotlib.image as ima
import numpy as np
import tensorflow as tf
from PIL import Image
SIZE = 1280
WIDTH = 32
HEIGHT = 40
NUM_CLASSES = 6
iterations = 300
SAVER_DIR = "D:/tf_car_license_dataset/province/"
from tensorflow.contrib.tensorboard.plugins import projector
PROVINCES = ("京","闽","粤","苏","沪","浙")
nProvinceIndex = 0
time_begin = time.time()
# 定义输入节点,对应于图片像素值矩阵集合和图片标签(即所代表的数字)
x = tf.placeholder(tf