Python Keras自定义Lambda层包装预处理函数tf.placeholder()运行时错误

Python Keras自定义Lambda层包装预处理函数tf.placeholder()运行时错误,python,pandas,numpy,tensorflow,keras,Python,Pandas,Numpy,Tensorflow,Keras,我已经编写了一个Keras lambda层,用于封装一个使用pandas数据帧功能的自定义预处理函数。它意味着获取一个numpy输入数据数组,该数组被包装在数据帧中并通过自定义函数传递 考虑以下函数,prepare_data(),它接收原始数据输入: def prepare_data(df): df = df[['userId', 'dataDate','x1', 'x2','x3', 'x4', 'x5','x6', 'x7', 'x8','x9','x10','x11']]

我已经编写了一个Keras lambda层,用于封装一个使用pandas数据帧功能的自定义预处理函数。它意味着获取一个numpy输入数据数组,该数组被包装在数据帧中并通过自定义函数传递

考虑以下函数,prepare_data(),它接收原始数据输入:

def prepare_data(df):
    df = df[['userId', 'dataDate','x1', 'x2','x3', 'x4', 'x5','x6', 'x7', 'x8','x9','x10','x11']]
    df['date'] = pd.to_datetime(df["dataDate"])
    df.sort_values(by=['userId', 'date'], inplace=True, ascending=True)
    df.rename(columns={'x11': 'x12'}, inplace=True)
    df.drop(['dataDate', 'date'], axis=1, inplace=True)
    df['x6'].fillna(method='ffill', inplace=True)
    df['x7'].fillna(0, inplace=True)
    df['x8'].fillna(0, inplace=True)
    df['x9'].fillna(0, inplace=True)
    df['x10'].fillna(0, inplace=True)
    return df 
我已经解释了keras层仅处理张量,方法是返回一个结果,该结果从pd数据帧转换为numpy,然后使用tf.numpy\u函数转换为张量,并且还实例化了tf.enable\u eager\u execution()在我的计划开始时,支持numpy与Keras相邻的运营

当我执行模型时,我遇到运行时错误:tf.placeholder()与即时执行不兼容。当我没有在任何地方使用tf.placeholder时。如果能帮助你度过这一模糊的阶段,我们将不胜感激

def preprocessing(x):
  prepared_data = prepare_data(pd.DataFrame(data=x, index=new_raw_data.index, columns=new_raw_data.columns))
  return prepared_data.values

def preprocessing_tf(x):
  return tf.numpy_function(func=preprocessing, inp=[x], Tout=tf.Tensor)

def create_model():
  model = Sequential()
  model.add(Lambda(preprocessing_tf, input_shape=new_raw_data.shape, output_shape=processed_data.shape))
  return model


model = create_model()
model.compile(optimizer='adam', metrics=['accuracy'])
model.summary

请添加您的
prepare\u data
功能我已经编辑了这篇文章以包含
prepare\u data()
功能