python深度知识4,手写字分类理论与实例

本文深入探讨了使用Python进行手写字分类的理论与实践。通过迭代训练,模型的测试准确率逐步提升,从0.8303逐渐提高到0.9136,展现了深度学习在图像识别领域的强大能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、

 

                             

 

softmax函数 

 

2、

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

#载入数据
mnist=input_data.read_data_sets('mnist_data',one_hot=True)#noe_hot把像素点都转变成0或1的形式

#每个批次的大小,训练模型时,一次放入一批次
batch_size=100 #一批次100张图
#计算一共有多少个批次
n_batch=mnist.train.num_examples//batch_size# //是整除,得到批次数

#定义两个placeholder
x=tf.placeholder(tf.float32,[None,784])#建立一个占位符,None是图片数,784是每幅图的像素个数
y=tf.placeholder(tf.float32,[None,10])# 标签,建立一个占位符,10是指0-9十个数

#创建一个简单的神经网络,输入层784个神经元,输出层10个神经元,不设隐藏层
W=tf.Variable(tf.zeros([784,10]))#权值,设一个变量,置0
b=tf.Variable(tf.zeros([10]))#偏置值
prediction=tf.nn.softmax(tf.matmul(x,W)+b)#信号总和,经过softmax函数(激活函数)转化成概率值

#二次代价函数
loss =tf.reduce_mean(tf.square(y-prediction))
#使用梯度下降法
train_step=tf.train.GradientDescentOptimizer(0.2).minimize(loss)

#初始化变量
init=tf.global_variables_initializer()

#训练好后求准确率,结果存放在一个布尔型列表中,argmax返回一维张量中最大的值所在的位置
correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))#argmax函数是对行或列计算最大值,1表示按行,0表示按列,找到最大概率标签的位置。 equal函数是比较两个参数大小,相等的话返回True,不相等返回False

#求准确率
accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))#cast()是类型转换函数,把布尔型参数转换为32位古典型,然后求平均值。true变成1.0,flse变成0
#Boolean→数值型:True转换为-1,False转换为0。数值型→Boolean:0转换为False,其他转换为True

with tf.Session() as sess:
    sess.run(init)#初始化变量
    for epoch in range(21):#迭代21个周期,把所有图片训练21次
        for batch in range(n_batch):
            batch_xs,batch_ys=mnist.train.next_batch(batch_size)#分配100张图片,图片数据保存在batch_xs,标签保存在batch_ys
            sess.run(train_step,feed_dict={x:batch_xs,y:batch_ys})

        acc=sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels})
        print('Iter'+str(epoch)+',Testing Accuracy'+str(acc))

 

Iter0,Testing Accuracy0.8303
Iter1,Testing Accuracy0.8707
Iter2,Testing Accuracy0.8815
Iter3,Testing Accuracy0.8886
Iter4,Testing Accuracy0.8935
Iter5,Testing Accuracy0.8967
Iter6,Testing Accuracy0.9009
Iter7,Testing Accuracy0.9025
Iter8,Testing Accuracy0.9039
Iter9,Testing Accuracy0.905
Iter10,Testing Accuracy0.9058
Iter11,Testing Accuracy0.9069
Iter12,Testing Accuracy0.9083
Iter13,Testing Accuracy0.909
Iter14,Testing Accuracy0.9101
Iter15,Testing Accuracy0.911
Iter16,Testing Accuracy0.9115
Iter17,Testing Accuracy0.913
Iter18,Testing Accuracy0.9132
Iter19,Testing Accuracy0.9132
Iter20,Testing Accuracy0.9136
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值