参考:http://www.tensorfly.cn/tfdoc/tutorials/mnist_pros.html
网上已经有很多相关内容的博客、资料,有很多也写得挺好的,我也是参考别人的,这里就不再写原理上的东西了。附一下我做实验的代码,简单记录一下遇到的问题。
实验环境:spyder + python + tensorflow
代码:
import tensorflow as tf
import tensorflow.examples.tutorials.mnist.input_data as input_data
mnist = input_data.read_data_sets("data/", one_hot=True, validation_size=0) # 下载并加载mnist数据
print("mnist训练集大小:", len(mnist.train.images))
print("mnist测试集大小:", len(mnist.test.images))
x = tf.placeholder(tf.float32, [None, 784], name="x") # 输入的数据占位符
y_actual = tf.placeholder(tf.float32, shape=[None, 10], name="y_actual") # 输入的标签占位符
# 定义一个函数,用于初始化所有的权值 W
def weight_variable(shape):
initial = tf.truncated_normal(shape, stddev=0.1)
return tf.Variable(initial)
# 定义一个函数,用于初始化所有的偏置项 b
def bias_variable(shape):
initial = tf.constant(0.1, shape=shape)
return tf.Variable(initial)
# 定义一个函数,用于构建卷积层
def conv2d(x, W):
return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
# 定义一个函数,用于构建池化层
def max_pool(x):
return tf.nn.max_pool(x, ksize=[1