CNN06:TensorFlow 搭建简易 CNN

0. 前言

前面对什么是 CNN 以及 CNN 的相关层次进行了说明,本节希望用 TensorFlow 来搭建一个建议的卷积神经网络。

1. 概述

希望解决的问题是:搭建一个简单的 CNN ,对 MNIST 数据集手写数字进行识别。这里的网络结构是:2层卷积层,2层池化层,2层 FC 层。

2. 实现步骤

2.1 导包及数据准备
  • 首先导入需要的包
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
# 1. 加载数据集
"""
MNIST数据集中的图片是 28*28 的,每张图转换成一个行向量,长度是 28*28=784,每个值表示一个像素点;
数据集中有 60000 张手写数据图片,其中55000是训练数据,5000是测试数据
[55000, 784],第一维:索引图片,第二维:图片中的像素
标签的训练数据是 [55000, 10] 的数字矩阵
"""
mnist = input_data.read_data_sets('MNIST_data/', one_hot=True)

如果出现报错:No module named 'tensorflow.examples.tutorials',解决方案如下:
首先,检查一下安装tensorflow这个目录里边examples文件夹,所以查看一下这个路径的文件夹:E:\Program_files\Anaconda\envs\tensorflow\Lib\site-packages\tensorflow\examples ,由于我是自己创建的新的环境 tensorflow,所以是上边的这个路径,如果是用的本来的环境的话,一般是这个路径:..\anaconda3\Lib\site-packages\tensorflow\examples 。总之查看这个文件夹下面有没有 tutorials ,我的如下,即没有 tutorials ,所以下一步就要下载;
在这里插入图片描述

  • 下载 tutorials
    这是我的网盘地址 https://pan.baidu.com/s/1wJe02VFagD9KSKbsjPxTWQ
    提取码: eff7

  • 解压之后,把 tutorials 这个文件夹整个拷贝到前面提到的 examples 目录下,拷贝完成后,该目录如下:
    在这里插入图片描述

  • 之后,再运行上边的代码,就不会再报错。运行之后,会自动下载 MNIST 数据集,前2个是测试集样本及标签,后两个是训练集样本和标签。
    在这里插入图片描述

2.2 定义变量

声明 placeholder,存储神经网络的输入

# 2. 定义输入、输出
# dtype:数据类型; 
# shape:数据形状, 默认是 None(一维), 也可为多维 [None, 784] 表示 784列,行没定
x = tf.compat.v1.placeholder(dtype=tf.float32, shape=(None, 784))
y = tf.compat.v1.placeholder(dtype=tf.float32, shape=(None, 10))  # 标签
# 输入数据 reshape 成 4 维数组,是把原本的图像矩阵重建为新的矩阵,此处还不知道有几张图片,所以用-1代替
input_image = tf.compat.v1.reshape(x, [-1, 28, 28, 1])

猜你喜欢

转载自blog.csdn.net/weixin_41857483/article/details/112584879
CNN