Python Keras自定义Lambda层包装预处理函数tf.placeholder()运行时错误
我已经编写了一个Keras lambda层,用于封装一个使用pandas数据帧功能的自定义预处理函数。它意味着获取一个numpy输入数据数组,该数组被包装在数据帧中并通过自定义函数传递 考虑以下函数,prepare_data(),它接收原始数据输入: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']]
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()
功能