Неверная форма numpy в модели keras

Я хотел бы построить нейронную сеть, которая принимает простой одномерный входной вектор. Однако следующий код дает мне ошибку:

import numpy as np  
from keras.models import Model
from keras.layers import Input, Dense

input_ = Input((311,))
x = Dense(200)(input_)
output = Dense(100)(x)
nn = Model([input_], [output])
nn.compile('SGD', loss='mean_squared_error')
nn.predict(np.zeros(311))

ValueError: Ошибка при проверке: ожидалось, что input_1 будет иметь форму (311,), но получил массив с формой (1,)

Это странно для меня, потому что print(np.zeros(311).shape) печатает (311,), как и ожидалось.

Замена np.zeros(311) на np.zeros((311,)) ничего не меняет, а замена Input((311,)) на Input(311) не работает, так как Input ожидает кортеж формы:

TypeError: объект 'int' не является итерируемым

Как правильно предоставить одномерный вектор модели keras?


person Mate de Vita    schedule 15.07.2018    source источник
comment
Вы имеете в виду, что каждая обучающая выборка представляет собой одно значение, например 2,76?   -  person today    schedule 15.07.2018
comment
Вы пробовали: input_ = Input(shape=(311,)) ?   -  person ixeption    schedule 15.07.2018
comment
эта модель не имеет для меня особого смысла - чего вы пытаетесь достичь?   -  person MaxU    schedule 15.07.2018
comment
Первым измерением для predict должно быть пакетное измерение, т. е. predict(np.zeros(shape=(1, 311))) должно работать.   -  person IonicSolutions    schedule 15.07.2018
comment
@IonicSolutions Ах, спасибо, это решает проблему.   -  person Mate de Vita    schedule 15.07.2018


Ответы (1)


Первым измерением для predict должно быть пакетное измерение, т. е. predict(np.zeros(shape=(1, 311))) должно работать.

Дополнительные сведения см. в документации.

person IonicSolutions    schedule 16.07.2018