博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于MNIST数据集使用TensorFlow训练一个没有隐含层的浅层神经网络
阅读量:7195 次
发布时间:2019-06-29

本文共 1463 字,大约阅读时间需要 4 分钟。

基础


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

我们用此网络结构基于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的交叉熵。

from tensorflow.examples.tutorials.mnist import input_dataimport tensorflow as tf# 加载数据mnist = input_data.read_data_sets('/home/workspace/python/tf/data/mnist', one_hot=True)# 创建模型x = tf.placeholder(tf.float32, [None, 784])W = tf.Variable(tf.zeros([784, 10]))b = tf.Variable(tf.zeros([10]))y = tf.matmul(x, W) + b# 正确的样本标签y_ = tf.placeholder(tf.float32, [None, 10])# 损失函数选择softmax后的交叉熵,结果作为y的输出cross_entropy = tf.reduce_mean(    tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)sess = tf.InteractiveSession()tf.global_variables_initializer().run()# 训练过程for _ in range(1000):    batch_xs, batch_ys = mnist.train.next_batch(100)    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})#使用测试集评估准确率correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))print (sess.run(accuracy, feed_dict = {x: mnist.test.images,                                       y_: mnist.test.labels}))

输出:92%左右。

软件版本


TensorFlow 1.0.1  +  Python 2.7.12

参考


①、

②、

③、

④、

转载地址:http://uatkm.baihongyu.com/

你可能感兴趣的文章
单片机C语言探究--为什么变量最好要赋初值
查看>>
静态库嵌套引用问题
查看>>
spring boot系列(四)spring boot 配置spring data jpa (保存修改删除方法)
查看>>
taro 不支持render中,使用函数多条件渲染
查看>>
Array相关的属性和方法
查看>>
SQL基本用法-行转列
查看>>
LeetCode 265: Paint House II
查看>>
Navicat 远程连接 Oracle11g 数据库报错 No listener 的问题
查看>>
python设计模式之单例模式
查看>>
Flex 布局教程:语法篇
查看>>
JVM内存模型和内存分配学习心得
查看>>
学术家族树典型用户的场景模拟
查看>>
CUDA-GPU编程
查看>>
JSP+Servlet实现验证码生成
查看>>
Winform下的Datagrid的列风格(1)—DataGridComboBoxColumn (ZHUAN)
查看>>
Java中instanceof的用法
查看>>
返回一个二维整数数组中最大联通子数组的和
查看>>
[学习笔记]阶和原根
查看>>
js事件委托
查看>>
计算机硬件
查看>>