Получил форму [Нет, Нет, 28, 28, 3] после использования выходов Слоя в 1 Сети в качестве входов Другой Сети

#tensorflow #keras #input #conv-neural-network #nonetype

Вопрос:

Я хотел использовать выходные данные каждого уровня в CNN в качестве обучающих данных для другой сети. Я обучил первую (основную) модель CNN набору данных MNIST. Входные формы [28, 28, 3]. Когда модель была скомпилирована, она добавила измерение None ко всем входным фигурам слоя, так что эта фигура, например, станет [None, 28, 28, 3].

Эта модель работает нормально, но когда я использую слои этой модели в качестве входных данных для следующей модели, берется форма [Нет, 28, 28, 3], и для следующей модели входная форма становится [Нет, Нет, 28, 28, 3]. Теперь эта форма ошибается следующим образом при обучении:

Ошибка значения: Ввод 0 несовместим с моделью слоя_8: ожидаемая форма=(Нет, нет, 26, 26, 5), найденная форма=(Нет, 26, 26, 5)

Однако я попробовал то же самое с ANN (так что все полностью подключенные плотные сети). Это тоже сделало входную форму с 2-мя измерениями, например. [Нет, Нет, 128]. Однако это прекрасно работает. Поэтому я думаю, что ошибка заключается в том, что сверточные слои имеют 3 измерения, что каким-то образом вызывает проблему, но я не знаю, как это исправить.

Это ссылка на мой код:

https://colab.research.google.com/drive/1KiFhmRnmuasj_oTUNWmncqWiuGkOOsS0?usp=sharing

Я был бы очень признателен за любую помощь!

Комментарии:

1. Когда вы используете Conv2D слой, он выводит тензор формы 4 D с формой: batch_shape (filters, new_rows, new_cols) if data_format='channels_first' или тензор формы 4 D с формой: batch_shape (new_rows, new_cols, filters) if data_format='channels_last' . Спасибо!