mnist测试

主要记录按照tensorflow教程书上的代码进行实际测试的时候碰到的一些坑点。

首先一点是mnist计算图的问题,使用以下代码进行初次申明所有tensor会碰到已经申请layer1/weights的情况,无法继续申请。可是明明是

初次申明!!


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))

    return weights

def inference(input_tensor, regularizer):

    with tf.variable_scope('layer1'):

        weights = get_weight_variable([INPUT_NODE, LAYER1_NODE], regularizer)

        biases = tf.get_variable("biases", [LAYER1_NODE], initializer=tf.constant_initializer(0.0))

        layer1 = tf.nn.relu(tf.matmul(input_tensor, weights) + biases)



    with tf.variable_scope('layer2'):

        weights = get_weight_variable([LAYER1_NODE, OUTPUT_NODE], regularizer)

        biases = tf.get_variable("biases", [OUTPUT_NODE], initializer=tf.constant_initializer(0.0))

        layer2 = tf.matmul(layer1, weights) + biases



    return layer2

上述代码中仅仅只从外部调用了一次inference,每次调用get_weight_variable都是在一个不同的命名空间中,怎么可能会重复?!

上网查!

stackoverflow上清一色的。。。

加reuse!!

加你个头啊,都说了初次申明,怎么可能出现reuse的情况,又不是傻逼。

于是转向国内百度,偶然间看到了


tf.reset_default_graph()

感觉有点意思,于是加在了运行文件头上,搞定。

不是很清楚为啥内存里就又已经定义好了的计算图,有大神知道的话,小弟我也愿闻其详。

你可能感兴趣的:(mnist测试)