访问在Tensorflow

问题描述:

准确值,我写了基于Tensorflow example代码:访问在Tensorflow

def variable_summaries(var): 
    """Attach a lot of summaries to a Tensor (for TensorBoard visualization).""" 
    with tf.name_scope('summaries'): 
    mean = tf.reduce_mean(var) 
    tf.summary.scalar('mean', mean) 
    with tf.name_scope('stddev'): 
     stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean))) 
    tf.summary.scalar('stddev', stddev) 
    tf.summary.scalar('max', tf.reduce_max(var)) 
    tf.summary.scalar('min', tf.reduce_min(var)) 
    tf.summary.histogram('histogram', var) 

def nn_layer(input_tensor, input_dim, output_dim, layer_name, act=tf.nn.relu): 
    """Reusable code for making a simple neural net layer. 

    It does a matrix multiply, bias add, and then uses relu to nonlinearize. 
    It also sets up name scoping so that the resultant graph is easy to read, 
    and adds a number of summary ops. 
    """ 
    # Adding a name scope ensures logical grouping of the layers in the graph. 
    with tf.name_scope(layer_name): 
    # This Variable will hold the state of the weights for the layer 
    with tf.name_scope('weights'): 
     weights = weight_variable([input_dim, output_dim]) 
     variable_summaries(weights) 
    with tf.name_scope('biases'): 
     biases = bias_variable([output_dim]) 
     variable_summaries(biases) 
    with tf.name_scope('Wx_plus_b'): 
     preactivate = tf.matmul(input_tensor, weights) + biases 
     tf.summary.histogram('pre_activations', preactivate) 
    activations = act(preactivate, name='activation') 
    tf.summary.histogram('activations', activations) 
    return activations 

hidden1 = nn_layer(x, 784, 500, 'layer1') 

with tf.name_scope('dropout'): 
    keep_prob = tf.placeholder(tf.float32) 
    tf.summary.scalar('dropout_keep_probability', keep_prob) 
    dropped = tf.nn.dropout(hidden1, keep_prob) 

# Do not apply softmax activation yet, see below. 
y = nn_layer(dropped, 500, 10, 'layer2', act=tf.identity) 

with tf.name_scope('cross_entropy'): 
    # The raw formulation of cross-entropy, 
    # 
    # tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(tf.softmax(y)), 
    #        reduction_indices=[1])) 
    # 
    # can be numerically unstable. 
    # 
    # So here we use tf.nn.softmax_cross_entropy_with_logits on the 
    # raw outputs of the nn_layer above, and then average across 
    # the batch. 
    diff = tf.nn.softmax_cross_entropy_with_logits(targets=y_, logits=y) 
    with tf.name_scope('total'): 
    cross_entropy = tf.reduce_mean(diff) 
tf.summary.scalar('cross_entropy', cross_entropy) 

with tf.name_scope('train'): 
    train_step = tf.train.AdamOptimizer(FLAGS.learning_rate).minimize(
     cross_entropy) 

with tf.name_scope('accuracy'): 
    with tf.name_scope('correct_prediction'): 
    correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1)) 
    with tf.name_scope('accuracy'): 
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) 
tf.summary.scalar('accuracy', accuracy) 

# Merge all the summaries and write them out to /tmp/mnist_logs (by default) 
merged = tf.summary.merge_all() 
train_writer = tf.summary.FileWriter(FLAGS.summaries_dir + '/train', 
             sess.graph) 
test_writer = tf.summary.FileWriter(FLAGS.summaries_dir + '/test') 
tf.global_variables_initializer().run() 

我想要得到的准确度变量作为浮动的培训和测试过程中,对于在这里我所完成:

.......................................................... 

for i in range(FLAGS.max_steps): 
    if i % 10 == 0: # Record summaries and test-set accuracy 
    summary, acc = sess.run([merged, accuracy], feed_dict=feed_dict(False)) 
    test_writer.add_summary(summary, i) 
    print('Accuracy at step %s: %s' % (i, acc)) 
    else: # Record train set summaries, and train 
    summary, _ = sess.run([merged, train_step], feed_dict=feed_dict(True)) 
    train_writer.add_summary(summary, i) 
    print("accuracy ", accuracy.eval) ## Here's the problem 

这里是最后的打印输出

<bound method Tensor.eval of <tf.Tensor 'cross_entropy/accuracy/accuracy/Mean:0' shape=() dtype=float32>> 

我的问题是如何能我在训练过程中得到的准确度值与测试阶段相同吗?

我想你只需要括号,并在一定值喂到占位符:

print("accuracy ", accuracy.eval(feed_dict=feed_dict(True))) 

,或者等价地,你可能会更改为

summary, _, acc = sess.run([merged, train_step, accuracy], feed_dict=feed_dict(True)) 
print("accuracy ", acc) 
+0

谢谢您的回答上面的行 – Engine