一、写"添加层"函数
1.1 明确各个节点的个数
input_node = 784 #输入层的节点数 相当于图片的像素28*28
output_node = 10 #输出层的节点数 相当于分类器的类别的个数
L1_node = 500 #隐藏层节点的个数
1.2 定义权重初始化函数
def get_weight_variable(shape,regularizer): weights = tf.get_variable("weights",shape,initializer=tf.truncated_normal_initializer(stddev = 0.1)) if regularizer!=None: tf.add_to_collection('losses',regularizer(weights)) #将当前变量的正则化损失加入losses集合 return weights
1.3 构建整个网络结构 共两层
#添加两个层 输出采用relu作为激活函数 实现列去线性化 def inference(input_tensor,regularizer): #声明第一层变量并完成前向传播的过程 with tf.variable_scope('layer1'): weights = get_weight_variable([input_node,L1_node],regularizer) bias = tf.get_variable("bias",[L1_node],initializer = tf.constant_initializer(0.0)) layer1 = tf.nn.relu(tf.matmul(input_tensor,weights)+bias) #声明第二层变量并完成前向传播的过程 with tf.variable_scope('layer2'): weights = get_weight_variable([L1_node ,output_node ],regularizer) bias = tf.get_variable("bias",[output_node ],initializer = tf.constant_initializer(0.0)) layer2 = tf.nn.relu(tf.matmul(layer1,weights)+bias) return layer2
layer1中 输入为1*input_node w为 input_node*L1_node 的矩阵 b为1*L1_node 输出结果为1*L1_node
layer1中 输入为1*L1_node w为 L1_node*output_node的矩阵 b为1*output_node输出结果为1*output_node
二、定义训练过程
2.1 定义输入输出的placeholder<