Как передать список изображений в функцию Keras Train? - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть список изображений pgn.Из каждого изображения я извлекал определенный объект и сохранял только этот объект в отдельном изображении.Я читаю исходные изображения в массив xTrain numpy и извлекаю объекты в массив yTrain numpy:

def getFilesList(directory):
    files = os.listdir(directory)
    return map(lambda file: directory + file, files)

def readImagesIntoNumpy(directory):
    filesList = getFilesList(directory)
    images = map(lambda file: plt.imread(file), filesList)
    return np.array(images)

xTrain = readImagesIntoNumpy("./original/")
yTrain = readImagesIntoNumpy("./objects/")

Я хочу, чтобы модель научилась извлекать эти объекты из новых изображений:

model = Sequential()
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))
model.compile(loss='categorical_crossentropy',
          optimizer='sgd',
          metrics=['accuracy'])

model.fit(xTrain, yTrain, epochs = 5, batch_size = 32)

Проблема в том, что последний вызов model.fit выдает ошибку:

ValueError: Error when checking input: expected dense_17_input
            to have 2 dimensions, but got array with shape (20, 256, 256, 4)

Как передать набор изображений в модель keras для тренировки?

1 Ответ

0 голосов
/ 08 декабря 2018

Ваша форма входного изображения (256, 256, 4) и вводит плотную форму слоя 2 в виде вектора, изменяющего форму данных с (256, 256, 1) на (256 * 256 * 1,1)

добавить этот слой в первый

model.add(Reshape(target_shape = (256*256*256,1), input_shape = (256, 256, 1)))
model.add(Dense(units=64, activation='relu'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...