Разница функции «изменить» в NumPy и Keras - PullRequest
0 голосов
/ 26 декабря 2018

В моей ситуации используется FCN для пиксельного прогнозирования, у меня есть 7 классов, поэтому я передаю изображение 512 * 512, а затем предоставляю 512 * 512 * 7 для модели для прогнозирования. Я хотел бы изменить ее с точки зрения(высота ширина каналов) для сохранения окончательного результата.

Поскольку я использую каналы в последний раз, форма ввода имеет для меня смысл. Но форма вывода, которую Keras разделяет, и яПоверьте:

                 (channels*height *width).

Я пытаюсь использовать функцию "изменить форму", и она работает ...... что меня очень смущает в моих экспериментах, когда я использую функцию изменения формы, изображение будет полностью испорченовверх, когда в этом случае это работает очень хорошо (с помощью функции изменения формы в Keras).

pr = m.predict( np.array([X]))[0]

#reshape to channel last and take the largest index in 7 predictions for each piexl 
pr = pr.reshape(( output_height ,  output_width , n_classes ) ).argmax(axis=-1)

То, что я ожидал, то, что должно работать хорошо, должно быть чем-то вроде np moveaxis или numpy.поперечный.Заранее спасибо!

1 Ответ

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

Keras уже по умолчанию channels_last, так что вы, вероятно, ничего не делаете с этим изменением формы.

Отметьте model.summary(), чтобы увидеть фигуры.

Вы правы, что изменение формы приведет к неправильному отображению изображений, если вы намерены изменить порядок каналов.Таким образом, вы будете искать слой Permute((3,1,2)), чтобы двигаться последним к первому или Permute((2,3,1), чтобы двигаться первым к последнему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...