基于Mnist数据集的单层神经元识别图像
Mnist识别模糊手写数字
一,导入mnist数据集
简介mnist数据集(内含网盘数据集):https://blog.youkuaiyun.com/RObot_123/article/details/103220099
手动下载网址(官网):http://yann.lecun.com/exdb/mnist/

1.利用tensorflow下载mnist数据集
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
上面代码能自动下载mnist数据集到代码目录的“MNIST_data”文件夹下
2.查看数据集里的内容
print ('输入数据打印:',mnist.train.images)
print ('输入数据打印shape:',mnist.train.images.shape)
import pylab
im = mnist.train.images[1]
im = im.reshape(-1,28)
pylab.imshow(im)
pylab.show()
print ('输入数据打印shape:',mnist.test.images.shape)
print ('输入数据打印shape:',mnist.validation.images.shape)
输出信息如下:

| 序号 | 内容 |
|---|---|
| 1 | 解压数据集 |
| 2 | 打印解压的图片信息 |
| 3 | 打印图片shape |
| 4 | 显示训练集中的图-序号1 |
| 5 | 打印测试数据集与验证数据shape |
有关shape(形状)的介绍:https://blog.youkuaiyun.com/RObot_123/article/details/103102627
二,分析mnist样本特点定义变量
因为 输入的图片是55000×784个矩阵
所以 创建一个**[None,784]的占位符x和一个[None,10]的占位符y**
最后 用feed机制将图片和标签输入进去
import tensorflow as tf #导入tensorflow库
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
import pylab
tf.reset_default_graph()
# 定义占位符
x = tf.placeholder(tf.float32, [None, 784]) # mnist data维度长度 28*28=784
y = tf.placeholder(tf.float32, [None, 10]) # 0-9 数字=> 10 种类别
三,构建模型
1.定义学习参数
- 定义权重变量W
- 定义偏值变量b
# 定义学习参数
W = tf.Variable(tf.random_normal([784, 10]))
b = tf.Variable(tf.zeros([10]))
2.定义输出节点
- softmax分类
pred = tf.nn.softmax(tf.matmul(x, W) + b) # Softmax分类
3.定义反向传播的结构
- 损失函数:交叉熵函数
- 设置学习率:0.01
- 优化器:GradientDescentOptimizer(梯度下降算法)
# 损失函数
cost = tf.reduce_mean(-tf.reduce_sum(y*tf.log(pred), reduction_indices=1))
#参数设置
learning_rate = 0.01
# 使用梯度下降优化器
optimizer = tf

最低0.47元/天 解锁文章
564

被折叠的 条评论
为什么被折叠?



