मैं सीएनएन के प्रशिक्षण के लिए वीओसी2012 डेटासेट का उपयोग करने की कोशिश कर रहा हूं। मेरी परियोजना के लिए, मुझे बी एंड डब्ल्यू डेटा की आवश्यकता है, इसलिए मैंने आर घटकों को निकाला। अब तक सब ठीक है। समस्या यह है कि छवियां विभिन्न आकारों की हैं, इसलिए मैं यह नहीं समझ सकता कि इसे मॉडल में कैसे पास किया जाए। मैंने अपना मॉडल संकलित किया, और फिर नीचे के रूप में 32 आकार के अपने मिनी-बैच बनाए (जहां X_train और Y_train फाइलों के पथ हैं)।

for x in X_train:
    img = plt.imread(x)
    img = img.reshape(*(img.shape), 1)
    X.append(img)

for y in Y_train:
    img = plt.imread(y)
    img = img.reshape(*(img.shape), 1)
    Y.append(img)

model.train_on_batch(np.array(X), np.array(Y))

हालांकि, मुझे संदेह है कि क्योंकि छवियां सभी अलग-अलग आकारों की हैं, numpy array का आकार (32,) के बजाय (32, ऊंचाई, चौड़ाई, 1) है जैसा कि मैं अपेक्षा करता हूं। मैं इसका ख्याल कैसे रखूं?

0
Rahul 8 सितंबर 2018, 20:59

1 उत्तर

सबसे बढ़िया उत्तर

कुछ स्रोतों के अनुसार, वास्तव में कम से कम कुछ आर्किटेक्चर को अलग-अलग इनपुट आकारों के साथ प्रशिक्षित करने में सक्षम है। (Quora, क्रॉस वैलिडेट)

जब आकार में अलग-अलग सरणियों की एक सरणी उत्पन्न करने की बात आती है, तो कोई केवल NumPy सरणियों की एक पायथन सूची का उपयोग कर सकता है, या सभी छवि डेटा एकत्र करने के लिए ndarray प्रकार का object उपयोग कर सकता है। फिर प्रशिक्षण प्रक्रिया में, Quora उत्तर ने उल्लेख किया कि केवल बैच आकार 1 का उपयोग किया जा सकता है, या कोई आकार के आधार पर कई छवियों को एक साथ जोड़ सकता है। छवियों को समान रूप से आकार देने के लिए शून्य के साथ पैडिंग का भी उपयोग किया जा सकता है, लेकिन मैं उस दृष्टिकोण की वैधता के बारे में ज्यादा कुछ नहीं कह सकता।

आपके शोध में शुभकामनाएँ!

उदाहरण के लिए उदाहरण कोड:

# Generate 10 "images" with different sizes
images = [np.zeros((i+5, i+10)) for i in range(10)]
images = np.array([np.zeros((i+5, i+10)) for i in range(10)])

# Or an empty array to append to
images = np.array([], dtype=object)
0
Felix 8 सितंबर 2018, 21:31