ValueError: не удалось передать входной массив из фигуры (10000,728) в фигуру (10000) - PullRequest
0 голосов
/ 01 марта 2020

Я строю модель Keras, которая имеет несколько входов с различными формами.

input_img = Input(shape=(728,))
input_1 = Input(shape=(1,))
input_2 = Input(shape=(1,))


x = (Dense(48,kernel_initializer='normal',activation="relu"))(input_img)
x = (Dropout(0.2))(x)
x = (Dense(24,activation="tanh"))(x)
x = (Dropout(0.3))(x)
x = (Dense(1))(x)
x = keras.layers.concatenate([x, input_1, input_2])
x = (Activation("sigmoid"))(x)
cnn = Model(inputs = [input_img, input_1, input_2], outputs = x)
cnn.compile(loss="binary_crossentropy", optimizer='adam')

Я пытался определить вход как

inputs =  (X_train.reshape(10000,728), input_1[0:10000], input_2[0:10000])

И когда я пытаюсь тренироваться, я получаю ошибку

AttributeError: 'tuple' object has no attribute 'ndim'

Я пытался повернуть входы однако в массив numpy я получаю еще одну ошибку

ValueError: could not broadcast input array from shape (10000,728) into shape (10000)

Как обучить эту модель с несколькими входами, если они имеют разные формы? Кажется, что все, что я пробовал, привело к некоторому типу ошибки.

1 Ответ

0 голосов
/ 01 марта 2020

Я думаю, у вас проблемы с объединением тензоров. Вы должны использовать keras.concatenate для объединения различных тензоров. Взгляните на это: Как объединить два слоя в кератах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...