Как объединить встроенные столбцы с другими входными данными в Keras - PullRequest
0 голосов
/ 01 июня 2018

У меня есть один столбец с категориальными данными с 1003 различными категориями, и у меня есть много столбцов с обычными целочисленными данными.Я хочу встроить столбец с категориальными данными и иметь встроенный вывод вместе со всеми остальными столбцами в качестве входных данных для моей модели.Я не уверен, как это сделать, но попробовал в следующем коде с помощью слияния.К сожалению, это дает ошибку Value: режим «concat» может объединять слои только с соответствующими выходными формами, за исключением оси concat.Формы слоя: [(Нет, 1, 11), (Нет, 53)] '.

Любая помощь будет принята с благодарностью.

    hidden_layers  = [1000,500,500]


    embedding = Sequential()
    embedding.add(1003, 11, input_length = 1))

    model1 = Sequential()
    model1.add(Dense(53, input_dim=53, activation='relu'))

    model = Sequential()
    model = model.add(Merge([embedding, model1], mode = 'concat'))

    for i, layer_size in enumerate(hidden_layers):
        model.add(Dense(layer_size, activation='relu'))

    model.add(Dense(self.output_layers, activation='linear'))
    model.compile(optimizer = 'adam', loss = 'mse')

1 Ответ

0 голосов
/ 01 июня 2018

Слой Embedding создает трехмерный тензор, как вы видите в сообщении об ошибке (None, 1, 11), где 1 - это длина последовательности , которую вы встраиваете.Для слияния с 2D-тензором вы должны сгладить его:

embedding = Sequential()
embedding.add(Embedding(1003, 11, input_length = 1))
embedding.add(Flatten())

, что даст (Нет, 11) и может быть объединено с (Нет, 53).

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