• mnist 数据集的识别源码解析


    在基本跑完识别代码后,再来谈一谈自己对代码的理解;

    1      前向传播过程文件(mnist_forward.py)

    第一个函数get_weight(shape, regularizer);

            定义了w的初值和正则化损失加入losses中

    第二个函数get_bias(shape):

            对参数b进行设定

    第三个函数forward(x, regularizer):

            加入激活函数tf.nn.relu(tf.matmul(x, w1) + b1)

            对输出y进行设定

    此段代码在前面博客中讲过,比较简单,就不再过多叙述

    2   反向传播过程文件(mnist_backward.py) 

     ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y, labels=tf.argmax(y_, 1))

    在计算交叉熵之前,通常要用到softmax层来计算结果的概率分布。因为softmax层并不会改变最终的分类结果(排序),所以,tensorflow将softmax层与交叉熵函数进行封装,形成一个函数方便计算:                                                           tf.nn.softmax_cross_entropy_with_logits(logits= , labels=)。

    为了加速计算过程,针对只有一个正确答案(例如MNIST识别)的分类问题

    这里用到softmax()函数;可以参考我前面博文。
    地址:
    https://www.cnblogs.com/fcfc940503/p/10983906.html
    https://www.cnblogs.com/fcfc940503/p/10985129.html

    读入数据

      xs, ys = mnist.train.next_batch(BATCH_SIZE)

                _, loss_value, step = sess.run([train_op, loss, global_step], feed_dict={x: xs, y_: ys})

    用 mnist.train.next_batch(BATCH_SIZE)随机从训练集中抽取
    BATCH_SIZE个样本输入神经网络;feed_dict={x: xs, y_: ys}喂入x和y_;
    测试过程文件(mnist_test.py) 
    在测试过程中,导入了引入 time 模块、tensorflow、input_data、前向传播mnist_forward、反向传播 mnist_backward 模块和 os 模块,并规定程序 5 秒的循环间隔时间。
    with tf.Graph().as_default() as g:
         此函数利用tf.Graph()复现之前定义的计算图,就是将定义好的神将网络在计算图中复现
            correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
            accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
    此函数是计算模型在测试集上的准确率;

    其中

                y 表示在一组数据(即 batch_size 个数据)上神经网络模型的预测结果,y 的形状为[batch_size,10],每一行表示一张图片的识别结果。通过tf.argmax()函数取出每张图片对应向量中最大值元素对应的索引值,组成长度为输入数据 batch_size 个的一维数组。通过 tf.equal()函数判断预测结果张量和实际标签张量的每个维度是否相等,若相等则返回 True,不 相等则返回 False。

               通过 tf.cast() 函数将得到的布 尔 型 数 值 转 化 为 实 数 型 ,

              再通过tf.reduce_mean()函数求平均值,最终得到神经网络模型在本组数据上的准确率

    以上内容主要讲解mnist 数据集的识别源码中我认为不好理解或者还没理解的内容,主要目的是为了熟悉该代码的框架和相关内容。

    以实例来增进知识的了解我认为更好吸收

  • 相关阅读:
    《机器学习十讲》学习报告七
    找到每个人的任务
    牛客每个人最近的登陆日期
    考试分数(一)
    牛客的课程订单分析(一)
    实习广场投递简历分析(一)
    sql 查找最晚入职员工信息
    sql 学习笔记
    shell 编程获取文件名后缀为特定字符的函数
    im的基本思路
  • 原文地址:https://www.cnblogs.com/fcfc940503/p/10985561.html
Copyright © 2020-2023  润新知