实战案例数字识别手写

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
相当于这个数据集就是用一个二维数组表示的,行为数量,列为数据特征值数量或者目标值数量
在这里插入图片描述
流程思路在这里插入图片描述

在这里插入图片描述
首先要定义权重和偏置构建模型
然后在用softmax+平均建立损失函数
在这里插入图片描述
在这里插入图片描述
计算准确率:
在这里插入图片描述

import  tensorflow as tf
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
from tensorflow.examples.tutorials.mnist import input_data
#1)获取数据
mnist = input_data.read_data_sets("./mnist_data", one_hot=True)
#2)构建未知数据
    #首先是x和y_true,这两个是用占位符展位,因为50000多个数据不可能全部使用,
x = tf.placeholder(dtype=tf.float32 , shape= [None,784])
y_true = tf.placeholder(dtype=tf.float32,shape=[None,10])
#其次是变量权重和偏置
weights = tf.Variable(initial_value=tf.random_normal(shape=[784, 10], stddev=0.01))
bias = tf.Variable(initial_value=tf.random_normal(shape=[10], stddev=0.1))
#3)建立模型
y_pridct = tf.matmul(x,weights)+bias
#4)构造损失函数(求平均值,这里类比线性回归损失函数球了均值:均方误差)
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=y_pridct,labels=y_true))
#5)优化损失
optimizer = tf.GradientDescentOptimizer(learning_rate=0.01).minimize(loss)
# 5.1)增加准确率计算
#axis为0则每行最大,axis为1则每列最大,由于bool_list输出的是布尔值,而准确率是浮点数,所以必须将布尔类型转换为浮点类型即tf.cast
bool_list = tf.equal(tf.argmax(y_true, axis=1), tf.argmax(y_predict, axis=1))
#equal是返回一个布尔列表
#求准确率
accuracy = tf.reduce_mean(tf.cast(bool_list, tf.float32))
#6)初始化变量
init = tf.global_variables_initializer()
#7)开启会话
with tf.Session() as sess():
    sess.run(init)
    #开始训练
    for i in range(5000):
    #获取数据,feed进占位
        image, label = mnist.train.next_batch(500)
    #注意feed的时候直接找那些占位符进行就行,由于optimizer不用得值,所以直接用_,空白接住
        _,loss_value, accuracy_value= sess.run([optimizer,loss,accuracy],feed_dict = {x : image,y_true:label})
        print("第%d次的损失为%f,准确率为%f" % (i + 1, loss_value, accuracy_value))

if __name__ == '__main__':

print(mnist.train.next_batch(100))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值