手写识别系统怎么安装 千彩手写识别系统( 二 )
文章插图
2.2网络模型的总体结构
文章插图
其实本文的网络建设是参考了TensorFlow提供的手写数字资源网络识别官方教程,有兴趣的读者可以详细浏览 。
2.3编程算法
本文利用Python调用TensorFlow的api来完成手写数字识别算法 。
注意:这个程序的运行环境是:Win10,python3.5.2,当然也可以在Linux下运行 。因为TensorFlow与py2和py3兼容性相当,所以可以在Linux下的python2.7中运行 。
#!/usr/bin/env python2
# -*-编码:utf-8 -*-
创建于Fri 2017年2月17日19:50:49
@作者:黄永浩
#导入模块
将numpy作为np导入
将matplotlib.pyplot导入为plt
将张量流导入为tf
导入时间
从日期时间导入时间增量
导入数学
来自tensorflow . examples . tutors . mnist导入输入数据
定义新权重(形状):
返回tf 。变量(tf .截断_normal(shape,stddev=0.05))
def new _ biases(长度):
返回tf 。变量(tf.constant(0.1,形状=长度))
def conv2d(x,W):
return tf.nn.conv2d(x,W,跨步=[1,1,1,1],填充= SAME)
def max_pool_2x2(输入):
返回tf.nn.max_pool(inputx,ksize=[1,2,2,1],跨步=[1,2,2,1],填充= SAME)
#导入数据
data = http://www.laomaozy.com/W-Z/input _ data.read _ data _ sets( 。/data,one_hot=True) # one_hot表示[0 0 1 0 0 0 0 0]代表2
打印(尺寸: )
打印(-训练集:\t\t{} 。格式(len(data.train.labels))
打印(- Testing-set:\t\t{} 。格式(len(data.test.labels))
打印(-验证集:\ t \ t { } & quot 。格式(len(data.validation.labels))
data . test . cls = NP . arg max(data . test . labels,axis=1) #显示真实的测试标签:[7 2 1...,4 5 6],10000个值
x = tf.placeholder( float,shape=[None,784],name= x)
x _ image = TF . resform(x,[-1,28,28,1])
y_true = tf.placeholder( float,shape=[None,10],name= y_true)
y_true_cls = tf.argmax(y_true,维度=1)
# Conv 1
layer _ conv 1 = { weights:new _ weights([5,5,1,32]),
偏差:new _ bias([32])
h _ con v1 = TF . nn . relu(con v2d(x _ image,layer_conv1[权重])+layer_conv1[偏差])
h_pool1 = max_pool_2x2(h_conv1)
# Conv 2
layer _ conv 2 = { weights:new _ weights([5,5,32,64]),
偏差:new _ bias([64])
h _ con v2 = TF . nn . relu(con v2d(h _ pool 1,layer_conv2[权重])+layer _ con v2[bias & quot;])
h_pool2 = max_pool_2x2(h_conv2)
#全连接第1层
【手写识别系统怎么安装 千彩手写识别系统】fc1 _ layer = { weights:new _ weights([7 * 7 * 64,1024]),
偏差:new _ bias([1024])
h _ pool 2 _ flat = TF . resform(h _ pool 2,[-1,7*7*64])
h _ fc1 = TF . nn . relu(TF . mat mul(h _ pool 2 _ flat,fc1 _ layer[weights])+fc1 _ layer[bias])
#导出层
keep_prob = tf.placeholder( float)
h_fc1_drop = tf.nn.dropout(h_fc1,keep_prob)
#全连接第2层
fc2 _ layer = { weights:new _ weights([1024,10]),
偏差:new_weights([10])}
#预测类
y _ pred = TF . nn . soft max(TF . matmul(h _ fc1 _ drop,fc2 _ layer[weights])+fc2 _ layer[bias])#输出类似[0 0 1 0 0 0 0 0 0 0 0]
y_pred_cls = tf.argmax(y_pred,dimension=1) #显示像2这样的真实预测数
#有待优化的成本函数
交叉熵=-TF . reduce _ mean(y _ true * TF . log(y _ pred))
optimizer = TF . train . adamotimizer(learning _ rate = 1e-4) 。最小化(交叉熵)
#绩效衡量标准
正确预测= tf.equal(y_pred_cls,y_true_cls)
精确度= tf.reduce_mean(tf.cast(正确预测,浮点))
和tf一起 。会话()作为会话:
init = TF . global _ variables _ initializer()
sess.run(init)
train_batch_size = 50
def优化(迭代次数):
total_iterations=0
start_time = time.time()
对于范围内的I(total _ iterations,total _ iterations+num _ iterations):
x_batch,y _ true _ batch = data . train . next _ batch(train _ batch _ size)
feed_dict_train_op = {x:x_batch,y_true:y_true_batch,keep_prob:0.5}
feed_dict_train = {x:x_batch,y_true:y_true_batch,keep_prob:1.0}
sess.run(优化器,feed_dict=feed_dict_train_op)
#每100次迭代打印状态 。
如果i%100==0:
#计算训练集的精确度 。
acc = sess.run(精度,feed_dict=feed_dict_train)
#要打印的消息 。
msg =优化迭代:{0: 6},训练精度:{1: 6.1%}
#打印出来 。
print(msg.format(i+1,acc))
#更新执行的迭代总数
total _ iterations+= num _ iterations
#结束时间
end_time = time.time()
#开始和结束时间之间的差异 。
时间_dif =结束时间-开始时间
#打印时间使用情况
推荐阅读
- 天龙八部珍兽幻灵系统 天龙八部幻化
- 虹吸排水板系统 虹吸需要利用势能,地下室顶板边缘设置虹吸立管,虹吸立管高度要求多少?涉及到室外雨水井标高。
- 应急指挥调度中心在疫情中大显身手_目前市场上使用的应急调度指挥系统能够实现的调度模式主要有几类?
- 移动硬盘无法识别怎么修复? 移动硬盘无法访问
- 机械erp管理系统(为什么机械行业要erp管理系
- 问道工资系统每个等级 问道工资
- 盘古系统登录——盘古iOS 9.1越狱工具怎么用
- mail139@139.com是移动系统的邮箱地址吗 mail139@139.com
- 登山包背负系统的核心 登山包背负系统
- 高斯定理公式是什么 高斯定理公式手写