मैं अभी टेंसफोर्लो से शुरू कर रहा हूं और मेरे पास एक नौसिखिया प्रश्न है।टेन्सफोर्लो में छवि फ़ाइलों को सहेजना
मुझे पता है कि टेन्स्फोर्लो सभी तंत्रिका जाल के बारे में है लेकिन मैं बस इसके यांत्रिकी के साथ शुरू कर रहा हूं। मैं इसे दो छवियों को लोड, आकार बदलने, फ़्लिप करने और सहेजने की कोशिश कर रहा हूं। एक सरल ऑपरेशन होना चाहिए, ठीक है, और यह मुझे मूल बातें के साथ शुरू कर देता है।
यहाँ अब तक मेरी कोड है:
import tensorflow as tf
import numpy as np
print("resizing images")
filenames = ['img1.png', 'img2.png' ]
filename_queue = tf.train.string_input_producer(filenames, num_epochs=1)
reader = tf.WholeFileReader()
key,value = reader.read(filename_queue)
images = tf.image.decode_png(value)
resized = tf.image.resize_images(images, 180,180, 1)
resized.set_shape([180,180,3])
flipped_images = tf.image.flip_up_down(resized)
resized_encoded = tf.image.encode_jpeg(flipped_images,name="save_me")
init = tf.initialize_all_variables()
sess = tf.Session()
with sess.as_default():
tf.train.start_queue_runners()
sess.run(init)
f = open("/tmp/foo1.jpeg", "wb+")
f.write(resized_encoded.eval())
f.close()
f = open("/tmp/foo2.jpeg", "wb+")
f.write(resized_encoded.eval())
f.close()
यह ठीक काम करता है, दो छवियों का आकार और उन्हें बचत। लेकिन यह हमेशा एक त्रुटि के साथ समाप्त होता है:
W tensorflow/core/common_runtime/executor.cc:1076] 0x7f97240e7a40
Compute status: Out of range: Reached limit of 1
मैं स्पष्ट रूप से कुछ गलत कर रहा हूं। अगर मैं num_epochs = 1 को हटा देता हूं, तो यह कोई त्रुटि के साथ समाप्त होता है। मैं सही ढंग से ऐसा करने के लिए कैसे करते हैं
:
मैं कुछ प्रश्न हैं?
इसके अलावा, अगर मैं मूल फ़ाइल नामों को filename_queue से अंत तक सभी तरह से संरक्षित करना चाहता हूं तो मैं उन्हें मूल नामों से सहेज सकता हूं, मैं यह कैसे कर सकता हूं? और मुझे कैसे पता चलेगा कि मुझे कितनी फाइलें सहेजने की ज़रूरत है? मान लीजिए कि मैं एक निर्देशिका पढ़कर फ़ाइल नामों की सूची बना रहा हूं। मैंने कई अलग-अलग चीजों की कोशिश की लेकिन मुझे कभी पता नहीं चला कि मैं अंत तक पहुंचने पर कैसे जानता हूं।
यह मेरे लिए अजीब लगता है कि मैं resized_encoded.eval() को दो बार कॉल कर रहा हूं।
धन्यवाद और मुझे यकीन है कि यह एक बहुत ही बुनियादी सवाल है लेकिन मुझे समझ में नहीं आता कि यह कैसे काम करता है।
संपादित करें:
import tensorflow as tf
import numpy as np
filenames = ['file1.png', 'file2.png' ]
filename_queue = tf.train.string_input_producer(filenames,
num_epochs=1, name="my_file_q")
reader = tf.WholeFileReader()
key,value = reader.read(filename_queue)
init = tf.initialize_all_variables()
sess = tf.Session()
with sess.as_default():
print("session started")
sess.run(init)
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord)
for i in range (2):
print(key.eval())
coord.request_stop()
coord.join(threads)
यह वही चेतावनी देता है: मैं व्यवहार का एक और भी आसान प्रदर्शन बनाया। मैं समझ नहीं पा रहा हूं क्यों।