Keras Нет данных для "Msgstr "Нужны данные для каждого ключа в: - PullRequest
0 голосов
/ 02 декабря 2019

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

def build_model(embed_df,ohe_df):
models= []
inputs = []
for col in embed_df:
    vocab_size = embed_df[col].nunique()
    input1 = tf.keras.layers.Input(shape=(1,),name='embed'+'_'+col)
    inputs.append(input1)
    embed1 = tf.keras.layers.Embedding(vocab_size,200,\
                                      trainable=True,embeddings_initializer='uniform')(input1)
    embed_rehsaped =tf.keras.layers.Reshape(target_shape=(200,))(embed1)
    models.append(embed_rehsaped)
#input2 = tf.keras.layers.Input(shape=(len(ohe_df)),\
#                                  name='ohe_input')
#inputs.append(input2)
#models.append(input2)
merge_models= tf.keras.layers.concatenate(models)
dense1 = tf.keras.layers.Dense(1000)(merge_models)
bn1 = tf.keras.layers.BatchNormalization()(dense1)
dense2 = tf.keras.layers.Dense(1000)(bn1)
bn2 = tf.keras.layers.BatchNormalization()(dense2)
out = tf.keras.layers.Dense(target_values, activation='sigmoid')(bn2)
full_model = tf.keras.models.Model(inputs=inputs,\
                                   outputs=out)
full_model.compile(loss=tf.keras.losses.categorical_crossentropy,\
                   metrics=['accuracy'],
                   optimizer='adam')
return full_model

def prepar_data_set(data_df):

    for col in data_df.columns:
        encoder = LabelEncoder()
        data_df[col] = encoder.fit_transform(data_df[col])
    return data_df


embed_df = prepar_data_set(embed_df)

model = build_model(embed_df,ohe_df)
cat_features = embed_df.columns
input_dict = {
    "embed_col1":train[cat_features[0]],
    "embed_col2":np.array(train[cat_features[1]]),
    "embed_col3":np.array(train[cat_features[2]]),
    "embed_col4":np.array(train[cat_features[3]]),
    "embed_col5":np.array(train[cat_features[4]]),
    "embed_col6":np.array(train[cat_features[5]]),
    "embed_col7":np.array(train[cat_features[6]])
}

model.fit(input_dict,np.array(target_encoded),epochs=50,batch_size=64)

IЯ не могу обмениваться данными, и я переименовал столбцы, но предположим, что в моем фрейме данных есть столбцы, названные так: «col1, col2, col3 ... col7». точное сообщение об ошибке будет: Нет данных для "embed_col1". Нужны данные для каждого ключа: ['embed_col1', 'embed_col2', 'embed_col3', 'embed_col4', 'embed_col5', 'embed_col6', 'embed_col7'] .

1 Ответ

0 голосов
/ 02 декабря 2019

Возможно, словарные ключи неверны, так как этот код их решает

data = [input_dict[x] for x in input_dict.keys()]
model.fit(data,np.array(target_encoded),epochs=50,batch_size=64)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...