基础


在参考①中我们详细介绍了没有隐含层的神经网络结构,该神经网络只有输入层和输出层,并且输入层和输出层是通过全连接方式进行连接的。具体结构如下:

我们用此网络结构基于MNIST数据集(参考②)进行训练,在MNIST数据集中每张图像的分辨率为28*28,即784维,对应于上图中的x; 而输出为数字类别,即0~9,因此上图中的y的维度维10。因此权重w的维度为[784, 10],wi,j代表第j维的特征对应的第i类的权重值,主要是为了矩阵相乘时计算的方便,具体见下面代码。

训练过程


1、训练过程中反向传播优化器选择了梯度下降算法,结合代码中使用batch训练,因此梯度下降算法是mini-batch,也就使用batch_size(代码中为100)的批量梯度下降算法。

2、损失函数选择使用了softmax的交叉熵。

  1. from tensorflow.examples.tutorials.mnist import input_data
  2. import tensorflow as tf
  3.  
  4. # 加载数据
  5. mnist = input_data.read_data_sets('/home/workspace/python/tf/data/mnist', one_hot=True)
  6.  
  7. # 创建模型
  8. x = tf.placeholder(tf.float32, [None, 784])
  9. W = tf.Variable(tf.zeros([784, 10]))
  10. b = tf.Variable(tf.zeros([10]))
  11. y = tf.matmul(x, W) + b
  12.  
  13. # 正确的样本标签
  14. y_ = tf.placeholder(tf.float32, [None, 10])
  15.  
  16. # 损失函数选择softmax后的交叉熵,结果作为y的输出
  17. cross_entropy = tf.reduce_mean(
  18. tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))
  19. train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
  20.  
  21. sess = tf.InteractiveSession()
  22. tf.global_variables_initializer().run()
  23.  
  24. # 训练过程
  25. for _ in range(1000):
  26. batch_xs, batch_ys = mnist.train.next_batch(100)
  27. sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
  28.  
  29. #使用测试集评估准确率
  30. correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
  31. accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
  32. print (sess.run(accuracy, feed_dict = {x: mnist.test.images,
  33. y_: mnist.test.labels}))

输出:92%左右。

软件版本


TensorFlow 1.0.1  +  Python 2.7.12

参考


①、使用Softmax回归将神经网络输出转成概率分布

②、使用Tensorflow操作MNIST数据

③、github上的tensorflow官方示例代码

④、tensorflow官网针对MNIST数据集的入门介绍

基于MNIST数据集使用TensorFlow训练一个没有隐含层的浅层神经网络的更多相关文章

  1. 基于MNIST数据集使用TensorFlow训练一个包含一个隐含层的全连接神经网络

    包含一个隐含层的全连接神经网络结构如下: 包含一个隐含层的神经网络结构图 以MNIST数据集为例,以上结构的神经网络训练如下: #coding=utf-8 from tensorflow.exampl ...

  2. 【深度学习笔记】(二)基于MNIST数据集的神经网络实验

    一.介绍 MNIST(Mixed National Institute of Standards and Technology database)是网上著名的公开数据库之一,是一个入门级的计算机视觉数 ...

  3. linux-基于tensorflow2.x的手写数字识别-基于MNIST数据集

    数据集 数据集下载MNIST 首先读取数据集, 并打印相关信息 包括 图像的数量, 形状 像素的最大, 最小值 以及看一下第一张图片 path = 'MNIST/mnist.npz' with np. ...

  4. 基于 tensorflow 的 mnist 数据集预测

    1. tensorflow 基本使用方法 2. mnist 数据集简介与预处理 3. 聚类算法模型 4. 使用卷积神经网络进行特征生成 5. 训练网络模型生成结果 how to install ten ...

  5. 【TensorFlow/简单网络】MNIST数据集-softmax、全连接神经网络,卷积神经网络模型

    初学tensorflow,参考了以下几篇博客: soft模型 tensorflow构建全连接神经网络 tensorflow构建卷积神经网络 tensorflow构建卷积神经网络 tensorflow构 ...

  6. TensorFlow——LSTM长短期记忆神经网络处理Mnist数据集

    1.RNN(Recurrent Neural Network)循环神经网络模型 详见RNN循环神经网络:https://www.cnblogs.com/pinard/p/6509630.html 2. ...

  7. pytorch实现MLP并在MNIST数据集上验证

    写在前面 由于MLP的实现框架已经非常完善,网上搜到的代码大都大同小异,而且MLP的实现是deeplearning学习过程中较为基础的一个实验.因此完全可以找一份源码以参考,重点在于照着源码手敲一遍, ...

  8. tensorFlow(四)浅层神经网络

    tensorFlow见基础 实验 MNIST数据集介绍 MNIST是一个手写阿拉伯数字的数据集. 其中包含有60000个已经标注了的训练集,还有10000个用于测试的测试集. 本次实验的任务就是通过手 ...

  9. TensorFlow 训练MNIST数据集(2)—— 多层神经网络

    在我的上一篇随笔中,采用了单层神经网络来对MNIST进行训练,在测试集中只有约90%的正确率.这次换一种神经网络(多层神经网络)来进行训练和测试. 1.获取MNIST数据 MNIST数据集只要一行代码 ...

随机推荐

  1. django-celery的配置及使用

    Celery简介 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理 celery的应用 异步调用:那些用户不关心的但是又存在在我们API里面的操作 ...

  2. linux grep find查找文件夹、代码中的某行/字符串

    本文转载于:https://blog.csdn.net/Mr_Cat123/article/details/80541658 在Linux中,由于文件很多,代码很长,可能我们只知道其中的一两个字符串, ...

  3. Regex-Golf

    A man, a plan: 判断回文,如果不确定串长度情况下可以考虑利用反向引用构造pattern,例如: (.)\1  , (.)(.)\2\1 , (.)(.)(.)\3\2\1 ...但这里只 ...

  4. nginx原理及使用

    Nginx的特点: 方便 简单 灵活 比较具有发展潜力的服务软件 在性能上占用的系统资源更少 能支持更多的并发连接 , 特别是静态小文件场景下, 达到更的访问效率.Nginx是什么? Nginx是一个 ...

  5. private、public、protected和默认

    类中的域最好标记为private: 方法最好标记为public: private:仅对本类可见 public:对所有类可见 protected:对本包和对所有子类可见 默认(什么都不写):对本包可见 ...

  6. 输入、输出与Mad Libs游戏

    name1 = input('请输入一个名字:') name2 = input('再输入一个名字:') article = input('请输入一种物品:') print('{}掉进了{},{}去救她 ...

  7. Linux下的5种I/O模型(转)

    Linux下的五种I/O模型: l         阻塞I/O l         非阻塞I/O l         I/O复用(select.poll.epoll) l         信号驱动I/ ...

  8. 北大poj- 1006

    生理周期 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 133189   Accepted: 42577 Descripti ...

  9. WCF分布式服务2-服务配置部署

    上图整理了服务配置过程中所用到的基本的元素,大致的步骤: 1. 主要是首先要在调用服务的程序集中添加服务的一个引用. 2.  然后添加一个service并指定服务的名称.终结点. 在添加一个servi ...

  10. C#添加文字水印

    使用的是iTextSharp添加PDF水印,由于是接口动态生成PDF,所以采用的是全部是内存流的形式,而且水印是平铺是.iTextSharp版本是5.5 /// <summary> /// ...