2017-01-18 14 views
7

यह फ़ाइल नाम है कि flow_from_directory का उपयोग कर लोड किया गया पाने के लिए संभव है? मेरे पास है:Keras flowFromDirectory फ़ाइल नाम मिल के रूप में वे उत्पन्न किया जा रहा है

datagen = ImageDataGenerator(
    rotation_range=3, 
#  featurewise_std_normalization=True, 
    fill_mode='nearest', 
    width_shift_range=0.2, 
    height_shift_range=0.2, 
    horizontal_flip=True 
) 

train_generator = datagen.flow_from_directory(
     path+'/train', 
     target_size=(224, 224), 
     batch_size=batch_size,) 

मैं तरह मेरे बहु उत्पादन मॉडल के लिए एक कस्टम जनरेटर है:

a = np.arange(8).reshape(2, 4) 
# print(a) 

print(train_generator.filenames) 

def generate(): 
    while 1: 
     x,y = train_generator.next() 
     yield [x] ,[a,y] 

नोड कि इस समय मैं a के लिए लेकिन असली प्रशिक्षण के लिए यादृच्छिक संख्या पैदा कर रहा हूँ, मैं करना चाहते हैं json फ़ाइल लोड करें जिसमें मेरी छवियों के लिए बाउंडिंग बॉक्स निर्देशांक शामिल हैं। इसके लिए मुझे train_generator.next() विधि का उपयोग करके जेनरेट किए गए फ़ाइल नाम प्राप्त करने होंगे। मेरे पास यह है कि, मैं फ़ाइल लोड कर सकता हूं, json पार्स करें और इसे a के बजाय पास कर दें। यह भी जरूरी है कि x परिवर्तनीय का आदेश और मुझे प्राप्त होने वाले फ़ाइल नामों की सूची समान है।

+0

केवल डिफ़ॉल्ट केरा का उपयोग करना - यह संभव नहीं है। लेकिन आप ऐसा करने के लिए एक केरास कोड बदल सकते हैं। –

+0

क्या आपने मेरा जवाब पढ़ा है? –

उत्तर

12

हाँ, यह संभव है, कम से कम संस्करण 2.0.4 (पुराने संस्करण के बारे में पता नहीं है) के साथ।

ImageDataGenerator().flow_from_directory(...) का उदाहरण filenames के साथ एक विशेषता है जो जनरेटर उन्हें उत्पन्न करने के क्रम में सभी फ़ाइलों की एक सूची है और एक विशेषता batch_index भी है। तो अगर आप इसे इस तरह कर सकते हैं:

datagen = ImageDataGenerator() 
gen = datagen.flow_from_directory(...) 

और जनरेटर पर हर यात्रा आप इस तरह इसी फ़ाइल नाम प्राप्त कर सकते हैं:

for i in gen: 
    idx = (gen.batch_index - 1) * gen.batch_size 
    print(gen.filenames[idx : idx + gen.batch_size]) 

यह मौजूदा बैच में आप छवियों के फ़ाइल नाम दे देंगे।

+4

यह ध्यान दिया जाना चाहिए कि अगर शफल सत्य है (डिफ़ॉल्ट) यह काम नहीं करता है। आपको जेनरेटर से वापस लौटाए जाने के क्रम में, न कि पहले से संसाधित किए गए क्रम में फ़ाइल नाम हमेशा प्राप्त किए जाएंगे। –

+0

@AlexGuth 'shuffle = True' का उपयोग करते समय किसी को क्या करना चाहिए? –

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

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