代码拉取完成,页面将自动刷新
同步操作将从 赵泽伟/verification-decoder 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import tensorflow as tf
import numpy as np
import code_utils
from model import Model
from image_utils import ImageUtils
import os
image = tf.placeholder(tf.float32, [None, 26, 70, 1]) # 定义图片的大小
# 定义每个预测值得维度
labels = dict(
digit1=tf.placeholder(tf.float32, [None, 36]),
digit2=tf.placeholder(tf.float32, [None, 36]),
digit3=tf.placeholder(tf.float32, [None, 36]),
digit4=tf.placeholder(tf.float32, [None, 36])
)
training_options = dict(
drop_rate=0.2,
learning_rate=1e-6, # 学习率
decay_steps=10000, # 多少步降低学习率 在7w步的时候,从1000调成了1w
decay_rate=1,
# 每次降低 1 - decay_rate, 其实是不需要做这个操作的,因为我用的是RMSPropOptimizer,在了解这个优化器之前,我并不知道,所以还是让lr逐步下降了。。。。。。如果你觉得训练速度过于缓慢,设置为1就好
batch_size=32, # 每次训练多少张图片
show_loss=20, # 貌似没用到
total_episode=2000001, # 总训练回合
show_test=10, # 多少步展示一下测试数据的预测率以及预测值、真实值
output_board=True, # 是否输出到tensorboard
logs_step=100, # 多少步往tensorboard里写入 同时存放model
log_path="logs/", # tensorboard的log文件存放在哪里
model_path='model/', # model保存在那个文件夹
model_name='model.ckpt' # model文件名
)
model = Model() # 初始化model类
config = tf.ConfigProto()
config.gpu_options.allow_growth=True
with tf.Session(config=config) as sess:
# 保证存放model的文件夹存在
if not os.path.exists(training_options['model_path']):
os.mkdir(training_options['model_path'])
# 定义神经网络
net, train = model.build_network(training_options=training_options, image=image,
drop_rate=training_options['drop_rate'], labels=labels)
# 获得saver对象,可以保存model以及读取model
saver = tf.train.Saver()
saver.restore(sess, training_options['model_path'] + training_options['model_name'])
# 初始化 imageUtils类,获得所有训练,测试数据
imageUtils = ImageUtils()
test_data = imageUtils.test_data
test_label = imageUtils.test_label
total_result = np.zeros((200, 2))
for i in range(200):
result = sess.run([net['digit1'], net['digit2'], net['digit3'], net['digit4']],
feed_dict={image: imageUtils.trainstion_data(test_data, start=i * 1000,end=i * 1000 + 1000)})
result = code_utils.batch_out_transition(result)
predicted = [result[0][index] + result[1][index] + result[2][index] + result[3][index]
for index in range(len(result[0]))]
label = code_utils.batch_out_transition(test_label[i * 1000:i * 1000 + 1000])
four_right_count = np.count_nonzero([predicted[index] == label[index] for index in range(len(predicted))])
one_right_count = np.count_nonzero(
[predicted[index][s_index] == label[index][s_index] for index in range(len(predicted)) for s_index in
range(len(predicted[index]))])
total_result[i, 0] = four_right_count / 1000 * 100
total_result[i, 1] = one_right_count / 4000 * 100
print('一千个测试数据: 四个字符同时正确率: {0:.2f}%\t\t单个字符正确率: {1:.2f}%'.format(total_result[i, 0],
total_result[i, 1]))
print('总结果: 四个字符同时正确率: {0:.2f}%\t\t单个字符正确率: {1:.2f}%'.format(np.mean(total_result[:, 0]),
np.mean(total_result[:, 1])))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。