Как исправить размер возвращаемого значения потока из генератора изображений? - PullRequest
1 голос
/ 25 апреля 2019

Я пытаюсь использовать fit_generator.Но я получаю ошибку

Ошибка при проверке ввода: ожидалось, что sequential_1_input будет иметь 3 измерения, но получил массив с формой (20, 28, 28, 1)

Здесьэто код:

data_flow = data_generator.flow(x_train, y_train,batch_size=20) 
generate = model.fit_generator(data_flow, steps_per_epoch=1400,epochs=10)

Каждая партия из потока имеет выход (20,28,28,1).Но fit_generator ожидает 3 измерения.Как мне изменить форму функции возврата, поскольку это итератор, выдающий кортежи.

1 Ответ

0 голосов
/ 25 апреля 2019

Вот несколько возможных способов сделать это:

  • Если возможно, вы можете изменить InputShape вашей модели, чтобы иметь три параметра, например [28,28,1], чтобы соответствовать форме данных вместо двух.

  • Вы можете изменить форму x_train и y_train перед созданием генератора

x_train = tf.reshape(x_train, shape=[28,28]) # likewise for y_train
  • flow возвращает итератор, поэтому можно использовать map для изменения его вывода (код не проверен)
# squeeze to remove the dimension with length 1
map(lambda x, y: tf.squeeze(x), y, data_flow) 
# otherwise one can use tf.reshape
map(lambda x, y: tf.reshape(x, shape=x.shape[0:-1]), y, data_flow) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...