Я пытаюсь реализовать многоголовую модель с переменным количеством входов одномерных данных, каждый из которых имеет длину sps.
Поэтому я определяю вход в цикле, который позже объединяется в единую модель. И получить ошибку
dense = (Dense(locChannels, activation=locActivation, input_shape=merged.output_shape)) (merged)
AttributeError: объект «Тензор» не имеет атрибута «output_shape»
Если я удалю параметр input_shape из плотного объекта, я получу следующее:
Предупреждение пользователя: входные данные модели должны поступать из
keras.layers.Input
(таким образом, они содержат метаданные предыдущего слоя), они не могут быть выходными данными предыдущего не входного слоя. Здесь тензор, указанный в качестве входных данных для вашей модели, не был входным тензором, он был сгенерирован слоем flatten_1. Обратите внимание, что входные тензоры создаются черезtensor = keras.layers.Input(shape)
.
У вас есть идеи, как это исправить?
Я думаю, мне следует уточнить, как выглядят мои данные. Может быть, у меня есть ошибка в моей структуре.
locChannels — это количество различных функций, которые у меня есть. Каждая функция является 1D и содержит точные выборки sps. Желаемый результат — one-hot-coded-array.
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)
Concatenate()(differentModels)
. - person Kota Mori   schedule 26.09.2018