【问题标题】:Keras No data provided for "<column_name>". Need data for each key in:Keras 没有为“<column_name>”提供数据。需要每个键的数据:
【发布时间】:2019-12-01 21:24:56
【问题描述】:

我收到以下错误(标题中的错误),我在 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)

我无法共享数据,我重命名了列,但假设我的数据框有这样命名的列:“col1,col2,col3...col7”。确切的错误消息是: 没有为“embed_col1”提供数据。需要每个键的数据:['embed_col1', 'embed_col2', 'embed_col3', 'embed_col4', 'embed_col5', 'embed_col6', 'embed_col7']

【问题讨论】:

    标签: python-3.x keras deep-learning tensorflow2.0 tf.keras


    【解决方案1】:

    这段代码解决了这个问题,可能以某种方式弄错了字典键

    data = [input_dict[x] for x in input_dict.keys()]
    model.fit(data,np.array(target_encoded),epochs=50,batch_size=64)
    

    【讨论】:

      猜你喜欢
      • 2018-10-09
      • 2017-07-11
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多