卷积池化函数
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
sess = tf.InteractiveSession() #创建一个新的senssion,这个命令会将这个session注册为默认的session,之后的运算也默认跑在这个session中,不同session之间的数据和运算应该是相互独立的。
# 初始化权重矩阵:加入标准差为0.1的正态分布噪声
def weight_variable(shape):
initial = tf.truncated_normal(shape, stddev=0.1) #tf.truncated_normal(shape, mean, stddev)中的shape表示生成维度为shape,mean表示均值,stddev是标准差,这个函数产生正太分 布,均值和标准差由mean和stddev确定。
return tf.Variable(initial)
# 初始化偏置:增加一些小正值,避免死亡节点
def bias_variable(shape):
initial = tf.constant(0.1, shape=shape) #tf.constant函数会返回shape形状的矩阵,数值为0.1
return tf.Variable(initial)
# 二维卷积函数:W为卷积的参数,如[5,5,1,32]表示5*5的卷积核,1个channel,32个卷积核
def conv2d(x, W):
return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME') #
# 最大池化函数
def max_pool_2x2(x):
return tf.nn.max_pool(x, ksize=[1, 2, 2, 1],
strides=[1, 2, 2, 1], padding='SAME')
# Dropout:防止过拟合
keep_prob = tf.placeholder(tf.float32)
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob) # 按照keep_prob的概率扔掉一些,为了减少过拟合