Вложение нескольких категориальных переменных с помощью Keras - PullRequest
0 голосов
/ 29 апреля 2020

Я много читал о том, как это сделать, используя новый редизайн Keras (поскольку у вас больше нет Merge), и в конце концов я пытаюсь выполнить следующий код:

models_lst = []
for cat_feature in categorical_features:
    print('---------------------------------------')
    print(f'Info for categorical feature {cat_feature}')
    input_i = Input(shape=(1,), dtype='int32')
    num_categories = EmbeddingMapping(X_train_categorical[cat_feature]).num_values
    print(f"Number of categories: {num_categories}")
    embedding_size = min(np.ceil(num_categories/2), 50)     # rule of thumb
    embedding_size = int(embedding_size)
    print(f'Embedding size: {embedding_size}')
    model_i = Embedding(input_dim=num_categories, output_dim=embedding_size, input_length=1)(input_i)
    model_i2 = Reshape(target_shape=(embedding_size,))(model_i)

    models_lst.append(model_i2)

numerical_input = Input(shape=(X_train_numerical.shape[1],))

merged = Concatenate()(models_lst)
model2 = Dense(50, activation="relu")(merged)
model2_1 = Dense(15, activation="relu")(model2)
model2_2 = Dense(1, activation='sigmoid')(model2_1)

final_model = models.Model(inputs=[numerical_input, Input(shape=(X_train_categorical.shape[1],), dtype='int32')], outputs=model2_2)

Однако я продолжаю получать этот тип ошибки после запуска последней строки (с Model()):

ValueError: Graph disconnected: cannot obtain value for tensor Tensor("input_106:0", shape=(?, 1), dtype=int32) at layer "input_106". The following previous layers were accessed without issue: []

Где изменяется число входных данных в ошибке, когда я пытался заставить ее работать, но это все тот же тип ошибки. Я потратил на это часы, можете ли вы сказать мне, что не так? (Я новичок в Керасе, должен признать)

...