#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)
ifdata_format='channels_first'
или тензор формы 4 D с формой:batch_shape (new_rows, new_cols, filters)
ifdata_format='channels_last'
. Спасибо!