Вход 0 слоя «модель» несовместим со слоем: ожидаемая форма = (Нет, 250, 3), найденная форма = (Нет, 3) в обученной модели трансформатора

У меня есть модель keras transformer, обученная с помощью tensorflow 2.7.0 и python 3.7 с входной формой: (None, 250, 3) и вводом 2D-массива с формой: (250, 3)(не изображение)

При составлении прогноза с помощью:

prediction = model.predict(state)

Я получаю ValueError: Input 0 of layer "model" is incompatible with the layer: expected shape=(None, 250, 3), found shape=(None, 3)

код проекта: https://github.com/МайкСифанеле/ТТ

Вот так выглядит state:

state = np.array([[-0.07714844,-0.06640625,-0.140625],[-0.140625,-0.1650391,-0.2265625]...[0.6376953,0.6005859,0.6083984],[0.7714844,0.7441406,0.7578125]], np.float32)

Не могли бы вы поделиться каким-либо кодом?

paul-shuvo 16.03.2022 21:31

@paul-shuvo Я загрузил проект

Masilive Sifanele 17.03.2022 07:31

Не могли бы вы попробовать добавить новую ось, например state = np.expand_dims(state, axis=0), запустить код и посмотреть, работает ли он?

paul-shuvo 17.03.2022 08:10

@paul-shuvo спасибо, сработало

Masilive Sifanele 17.03.2022 09:05

Пожалуйста, обрежьте свой код, чтобы было легче найти вашу проблему. Следуйте этим рекомендациям, чтобы создать минимальный воспроизводимый пример.

Community 17.03.2022 09:19
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
0
5
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Некоторое объяснение:

Для входной формы в модель, то есть (None, 250, 3), первая ось (представленная None) является осью «образца», а остальные, то есть 250,3, обозначают входное измерение. Таким образом, когда входная форма (250, 3), она принимает первую ось как ось «образца», а остальные — как входное измерение, то есть просто 3. Итак, чтобы сделать его последовательным, нам нужно добавить измерение в начале, описанное ниже:

state = np.expand_dims(state, axis=0)

Затем форма state становится (1, 250, 3) ~ (None, 250, 3).

Другие вопросы по теме