Ответ 1
У меня была та же проблема, и я решил добавить одно измерение для аргумента channel
to input_shape
.
Я предлагаю следующее решение:
Convolution2D(10, 3, 3, border_mode='same', input_shape=(100, 100, 1))
Моя форма ввода должна быть 100x100. Он представляет собой предложение. Каждое слово представляет собой вектор из 100 измерений, и в предложении есть максимум 100 слов.
Я подаю восемь предложений в CNN. Я не уверен, означает ли это, что моя форма ввода должна быть 100x100x8.
Тогда следующие строки
Convolution2D(10, 3, 3, border_mode='same',
input_shape=(100, 100))
жалуется:
Ввод 0 несовместим со сверткой слоя2d_1: ожидается ndim = 4, найдено ndim = 3
Это не имеет смысла для меня, поскольку мое измерение ввода равно 2. Я могу пройти через него, изменив input_shape на (100,100,8). Но "ожидаемый бит ndim = 4" просто не имеет смысла для меня.
Я также не понимаю, почему слой свертки 3x3 с 10 фильтрами не принимает вход 100x100.
Даже я получаю жалобы на "ожидаемый ndim = 4". Я столкнулся с проблемой в моем слое активации. Там он жалуется:
Невозможно применить softmax к тензору, который не является 2D или 3D. Здесь ndim = 4
Может ли кто-нибудь объяснить, что здесь происходит и как это исправить? Большое спасибо.
У меня была та же проблема, и я решил добавить одно измерение для аргумента channel
to input_shape
.
Я предлагаю следующее решение:
Convolution2D(10, 3, 3, border_mode='same', input_shape=(100, 100, 1))
отсутствующим измерением для двумерных сверточных слоев является измерение "канала".
Для данных изображения размер канала равен 1 для изображений в оттенках серого и 3 для цветных изображений.
В вашем случае, чтобы убедиться, что Keras не будет жаловаться, вы можете использовать 2D свертку с 1 каналом или 1D свертку с 100 каналами.
Проблема с input_shape
. Попробуйте добавить дополнительное измерение/канал, чтобы позволить keras знать, что вы работаете с изображением в градациях серого, т.е. → 1
input_shape= (56,56,1)
. Вероятно, если вы используете обычную модель глубокого обучения, тогда это не вызовет проблем, но для Convnet это действительно так.