Я много читал о том, как это сделать, используя новый редизайн 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: []
Где изменяется число входных данных в ошибке, когда я пытался заставить ее работать, но это все тот же тип ошибки. Я потратил на это часы, можете ли вы сказать мне, что не так? (Я новичок в Керасе, должен признать)