2016-10-09 40 views
7

में प्रशिक्षण के लिए डेटासेट के रूप में निर्देशिका में छवि फ़ाइलों को लोड करें, मैं tensorflow के लिए एक नौसिखिया हूं, और मैं tensorflow के तर्क को जानने के लिए ऑफिकल एमएनआईएसटी उदाहरण कोड से शुरू कर रहा हूं। हालांकि, एक चीज जो मुझे अच्छी नहीं लगती वह यह है कि, एमएनआईएसटी उदाहरण मूल डेटासेट को कुछ संकुचित फाइलों के रूप में प्रदान करता है, जिसका प्रारूप शुरुआती लोगों के लिए स्पष्ट नहीं है। यह मामला सीफार 10 के साथ भी जाता है जो डेटासेट को बाइनरी फ़ाइल के रूप में प्रदान करता है। मैं व्यावहारिक गहरी सीखने कार्य में, हमारे डाटासेट ऐसे *.jpg या *.png एक निर्देशिका में के रूप में छवि फ़ाइलों के बहुत सारे, हो सकता है लगता है, और हम भी एक पाठ फ़ाइल (ImageNet डाटासेट की तरह) प्रत्येक फ़ाइल के लेबल रिकॉर्डिंग की है। मुझे उदाहरण के रूप में एमएनआईएसटी का उपयोग करने दें।टेन्सफोर्लो

एमएनआईएसटी में 28 x 28 आकार की 50k प्रशिक्षण छवियां शामिल हैं। अब मान लें कि ये छवियां jpg प्रारूप में हैं, और निर्देशिका ./dataset/ में संग्रहीत हैं।

/path/to/dataset/ 
       image00001.jpg 
       image00002.jpg 
       ... ... ... ... 
       image50000.jpg 
       label.txt 

जहां label.txt इस तरह है::

#label.txt: 
image00001.jpg 1 
image00002.jpg 0 
image00003.jpg 4 
image00004.jpg 9 
... ... ... ... 
image50000.jpg 3 

अब मैं Tensorflow का उपयोग करने के साथ एक परत मॉडल प्रशिक्षित करने के लिए चाहते हैं ./dataset/ में, हम एक पाठ फ़ाइल label.txt प्रत्येक छवि के लेबल भंडारण है इन डेटासेट। क्या कोई ऐसा करने के लिए एक साधारण कोड स्निपेट देने में मदद कर सकता है?

उत्तर

3

वहाँ मूलतः दो बातें आपको आवश्यकता होगी है।

import numpy as np 
from scipy import misC# feel free to use another image loader 

def create_batches(batch_size): 
    images = [] 
    for img in list_of_images: 
    images.append(misc.imread(img)) 
    images = np.asarray(images) 

    #do something similar for the labels 

    while (True): 
    for i in range(0,total,batch_size): 
     yield(images[i:i+batch_size],labels[i:i+batch_size]) 

अब tensorflow हिस्सा

imgs = tf.placeholder(tf.float32,shape=[None,height,width,colors]) 
lbls = tf.placeholder(tf.int32, shape=[None,label_dimension]) 

with tf.Session() as sess: 
#define rest of graph here 
# convolutions or linear layers and cost function etc. 


    batch_generator = create_batches(batch_size) 
    for i in range(number_of_epochs): 
    images, labels = batch_generator.next() 
    loss_value = sess.run([loss], feed_dict={imgs:images, lbls:labels}) 
आता है: पहले सामान्य अजगर कोड इसलिए की तरह है
संबंधित मुद्दे