Сверточная нейронная сеть: невозможно пройти через DirectoryIterator - PullRequest
0 голосов
/ 01 июня 2018

Я использую классификатор изображений CNN, используя Keras.У меня есть одна папка с обучающими изображениями, а другая - с проверочными изображениями, но у меня нет определения классов.

import numpy as np
import os
import matplotlib.pyplot as plt
%matplotlib inline
from __future__ import print_function
import keras
from keras.utils import to_categorical
from keras.preprocessing.image import ImageDataGenerator, array_to_img,img_to_array, load_img
from keras.applications import InceptionV3

conv_base = InceptionV3(weights='imagenet',
                    include_top=False,
                    input_shape=(224, 224, 3))

train_dir = 'MO444_dogs/train/'
validation_dir = 'MO444_dogs/val/'
nTrain = 600
nVal = 150

datagen = ImageDataGenerator(rescale=1./255)
batch_size = 30 
train_features = np.zeros(shape=(nTrain, 7, 7, 512))
train_labels = np.zeros(shape=(nTrain,3)) 
train_generator = datagen.flow_from_directory(
    train_dir,
    target_size=(224, 224),
    batch_size=batch_size,
    class_mode=None,
    shuffle=True)

Приведенный выше фрагмент кода работает хорошо.Проблема начинается, когда я пытаюсь использовать функцию model.predict () для передачи изображения по сети.Ну, если быть более точным, он начинается немного раньше, в цикле for:

i = 0
for inputs_batch, labels_batch in train_generator:
    features_batch = conv_base.predict(inputs_batch)
    train_features[i * batch_size : (i + 1) * batch_size] = features_batch
    train_labels[i * batch_size : (i + 1) * batch_size] = labels_batch
    i += 1
    if i * batch_size >= nTrain:
        break

Этот последний фрагмент выводит следующее:

enter image description here

По сути, переменная train_generator является объектом DirectoryIterator, что дает кортежи из массивов numpy.До сих пор я считаю, что ошибка может быть связана с тем фактом, что у меня нет определенных классов, может быть?Я думаю, это может быть потому, что я нашел похожие рабочие примеры, такие как this , но с определенными классами папок, как объясняет Keras docs.

Пока я ищу альтернативные способы сделать этот цикл, номожет быть, мне нужно идти совсем другим путем.

Спасибо или любые указания.

1 Ответ

0 голосов
/ 03 июня 2018

Ну, я перепроверил свои данные и увидел, что в них есть образец классов.Так что есть классы, и я решил проблему с ним.

...