Tensorflow InvalidArgumentError: Несовместимые фигуры после нарезки ввода лямбда-слоем - PullRequest
0 голосов
/ 02 июля 2018

В моей Convolution Network недавно я добавил лямбда-слой в качестве входного слоя для выбора определенных каналов входных изображений после ответа из на этот вопрос

model.add(Lambda(lambda x: x[:,:,:2], input_shape=(w, h, 3)))

Когда я попытался добавить слой MaxPooling2D, я получил ошибку ValueError: Negative dimension size caused by subtracting 3 from 2 for 'max_pooling2d_14/MaxPool' (op: 'MaxPool') with input shapes: [?,250,2,64]

Я подумал, что допустил некоторые ошибки между темным порядком в Theano и Tensorflow, поэтому я отредактировал лямбда-слой:

model.add(Lambda(lambda x: x[:2,:,:], input_shape=(w, h, 3)))

На этот раз у меня не возникло проблем при добавлении еще слоя, но когда я попытался использовать fit_generator, он выдает ошибку: InvalidArgumentError: Incompatible shapes: [64] vs. [2]

Полный обратный путь очень длинный, я загружаю их на здесь .

Я использую для вычислений Linux с 4 GPU, спасибо за вашу помощь.

1 Ответ

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

Проблема заключается в том, как я делю входные данные с использованием лямбда-слоя.

Форма ввода имеет 4 свойства в следующем порядке: batch_size, ширина, высота, каналы.

Для выбора нескольких массивов входных данных, поскольку Tensorflow не поддерживает метод предварительной индексации из numpy, мы должны сначала нарезать входной тензор, использовать dim extension, чтобы добавить глубину цвета, а затем объединить их позже.

...