2017-02-23 20 views
7

मैं एक संक्रामक तंत्रिका नेट के सीखने के लिए टेंसरबोर्ड का उपयोग करने की कोशिश कर रहा हूं। मैं एक विलय सारांश बनाने के लिए tf.summary.merge_all फ़ंक्शन के साथ अच्छा कर रहा हूं। हालांकि, मैं प्रशिक्षण और परीक्षण डेटा दोनों के लिए सटीकता और हानि पर ट्रैकिंग करना चाहता हूं। यह पोस्ट उपयोगी है: Logging training and validation loss in tensorboardअलग प्रशिक्षण और मूल्यांकन सारांश के लिए tensorboard में summary.merge का उपयोग करने में असमर्थ

चीजों को संभालने में आसान बनाने के लिए, मैं अपने सारांशों को दो विलयित सारांशों में विभाजित करना चाहता हूं, एक प्रशिक्षण के लिए और एक सत्यापन के लिए। (मैं अंततः अधिक सामान जोड़ूंगा, छवियों की तरह इत्यादि।) मैंने इसका पालन करने की कोशिश की टेंसरबोर्ड tf.summary.merge से विवरण। मैं इसे काम नहीं कर सकता और मैं समझने में मदद करने के लिए कोई कामकाजी उदाहरण नहीं ढूंढ पा रहा हूं कि मैं कहां गलत हूं।

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

with tf.name_scope('Cost'): 
    cross_entropy = tf.reduce_mean(
     tf.nn.softmax_cross_entropy_with_logits(logits=y_logits, labels=y)) 
    opt = tf.train.AdamOptimizer() 
    optimizer = opt.minimize(cross_entropy) 
    grads = opt.compute_gradients(cross_entropy, [b_fc_loc2]) 
    tf.summary.scalar('cost', cross_entropy) 
    tf.summary.scalar('train_cost', cross_entropy) 


with tf.Session() as sess: 
    writer = tf.summary.FileWriter('./logs/mnistlogs/1f', sess.graph) 
    sess.run(tf.global_variables_initializer()) 
    merged = tf.summary.merge([cost, accuracy]) 

यह निम्न त्रुटि में परिणाम है:

InvalidArgumentError (see above for traceback): Could not parse one of the summary inputs [[Node: Merge/MergeSummary = MergeSummary[N=2, _device="/job:localhost/replica:0/task:0/cpu:0"](Merge/MergeSummary/inputs_0, Merge/MergeSummary/inputs_1)]]

मुझे पता है क्यों यह काम नहीं करता चाहते हैं, और कैसे मैं एक समाधान पा सकते हैं, किसी भी काम के उदाहरण की सराहना कर रहे हैं।

उत्तर

11

मैंने इसे समझ लिया। मुझे विलय से पहले सारांश नाम देना होगा।

with tf.name_scope('Cost'): 
cross_entropy = tf.reduce_mean(
     tf.nn.softmax_cross_entropy_with_logits(logits=y_logits, labels=y)) 
opt = tf.train.AdamOptimizer(learning_rate=0.000003) 
optimizer = opt.minimize(cross_entropy) 
grads = opt.compute_gradients(cross_entropy, [b_fc_loc2]) 
cost_sum = tf.summary.scalar('val_cost', cross_entropy) 
training_cost_sum = tf.summary.scalar('train_cost', cross_entropy) 


with tf.name_scope('accuracy'): 
correct_prediction = tf.equal(tf.argmax(y_logits, 1), tf.argmax(y, 1)) 
accuracy = tf.reduce_mean(tf.cast(correct_prediction, 'float')) 
train_accuracy = accuracy 
accuracy_sum = tf.summary.scalar('val_accuracy', accuracy) 
training_accuracy_sum = tf.summary.scalar('train_accuracy', accuracy) 


with tf.Session() as sess: 
writer = tf.summary.FileWriter('./logs/{}/{}'.format(session_name, run_num), sess.graph) 
sess.run(tf.global_variables_initializer()) 
train_merged = tf.summary.merge([training_accuracy_sum, training_cost_sum]) 
+1

यह: नीचे कोड समस्या का हल https://stackoverflow.com/questions/40722413/how-to-use-several-summary-collections-in-tensorflow भी एक अच्छा दृष्टिकोण अगर तुम है सारांश के दो विशिष्ट समूहों को साजिश करना चाहते हैं। – Maikefer

संबंधित मुद्दे