Я пытаюсь реализовать многоголовую модель с переменным количеством входов одномерных данных, каждый из которых имеет длину sps.
Итак, я определяю вход в цикле, который позже объединяется в одну модель.И получаю ошибку
dense = (Dense(locChannels, activation=locActivation, input_shape=merged.output_shape)) (merged)
AttributeError: у объекта 'Tensor' нет атрибута 'output_shape'
Если я удаляю параметр input_shape из плотного объекта, который я получаюследующее:
UserWarning: входные данные модели должны поступать из keras.layers.Input
(таким образом, удерживая метаданные прошлого слоя), они не могут быть выходными данными предыдущего не входного слоя.Здесь тензор, указанный в качестве входного для вашей модели, не был входным тензором, он был сгенерирован слоем flatten_1.Обратите внимание, что входные тензоры создаются с помощью tensor = keras.layers.Input(shape)
.
У вас есть идея, как это исправить?
Думаю, мне следует уточнить, как выглядят мои данные.Может быть, у меня есть ошибка в моей структуре.
locChannels - это количество различных функций, которые у меня есть.Каждая функция является 1D и содержит точные образцы SPS.Требуемый вывод - массив с горячим кодом.
differentModels = list()
for index in range (0,locChannels):
name = 'Input_'+str(index)
visible = Input(shape=(sps,1), name=name)
cnn1 = Conv1D(filters=8,kernel_size=2, activation=locActivation) (visible)
cnn1 = MaxPooling1D(pool_size = 2) (cnn1)
cnn1 = Flatten()(cnn1)
#print(visible)
differentModels.append(cnn1)
merged = Concatenate()(differentModels)
dense = (Dense(locChannels, activation=locActivation, input_shape=merged.output_shape)) (merged)
for index in range (2,locLayers):
dense = (Dropout(rate=locDropoutRate)) (dense)
dense = (Dense(locChannels, activation=locActivation, input_shape=(locChannels,))) (dense)
output = Dense(units=locClasses, activation='softmax')(dense)
model = Model(inputs=differentModels, outputs= output)