Я пытаюсь внедрить нейронную сеть, в которой я объединяю / объединяю полностью подключенную нейронную сеть со сверточной нейронной сетью.Но когда я подгоняю модель, я получаю следующую ошибку:
ValueError: Все входные массивы (x) должны иметь одинаковое количество выборок.Получил формы массива: [(1, 100, 60, 4500), (100, 4500)]
У меня есть два разных ввода:
изображение (размеры: 1100, 60, 400), где 1 - канал, 100: # выборки, 60 * 4500 (размер моего изображения).Это относится к моей нейронной сети свертки
позиции (размеры: 100,4500): где 100 относится к образцам.
Размер для моего вывода равен 100,2.
Код для моей нейронной сети:
###Convolution neural network
b1 = Sequential()
b1.add(Conv2D(128*2, kernel_size=3,activation='relu',data_format='channels_first',
input_shape=(100,60,4500)))
b1.add(Conv2D(128*2, kernel_size=3, activation='relu'))
b1.add(Dropout(0.2))
b1.add(Conv2D(128*2, kernel_size=4, activation='relu'))
b1.add(Dropout(0.2))
b1.add(Flatten())
b1.summary()
###Fully connected feed forward neural network
b2 = Sequential()
b2.add(Dense(64, input_shape = (4500,), activation='relu'))
b2.add(Dropout(0.1))
b2.summary()
model = Sequential()
###Concatenating the two networks
concat = concatenate([b1.output, b2.output], axis=-1)
x = Dense(256, activation='relu', kernel_initializer='normal')(concat)
x = Dropout(0.25)(x)
output = Dense(2, activation='softmax')(x)
model = Model([b1.input, b2.input], [output])
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adam(),
metrics=['accuracy'])
history = model.fit([image, positions], Ytest, batch_size=10,
epochs=1,
verbose=1)
Кроме того, причина, по которой мой массив 'image' является 4-мерным, заключается в том, чтов начале это было просто (100,60,4500), но потом я столкнулся со следующей ошибкой:
ValueError: Ошибка при проверке ввода: ожидалось, что conv2d_10_input имеет 4 измерения, но получил массив с формой (100, 60, 4500)
И после поиска в Google я обнаружил, что он также ожидает # каналов в качестве входа.И после того, как я добавил # канала, эта ошибка ушла, но затем я столкнулся с другой ошибкой, о которой я упоминал в начале.
Так может кто-нибудь сказать мне, как найти ошибку (ту, которую я указал в начале)?Помощь будет оценена.