Tensorflow tf__norm()接受1个位置参数,但给出了2个
我试图向tf数据集传递一个函数,以规范化数据帧中的非数字数据,但我不断收到以下错误: TypeError:在用户代码中: TypeError:tf__norm()接受1个位置参数,但给出了2个Tensorflow tf__norm()接受1个位置参数,但给出了2个,tensorflow,keras,Tensorflow,Keras,我试图向tf数据集传递一个函数,以规范化数据帧中的非数字数据,但我不断收到以下错误: TypeError:在用户代码中: TypeError:tf__norm()接受1个位置参数,但给出了2个 def norm(dataframe): for header in dataframe._get_numeric_data().columns: dataframe[header] = (dataframe[header] - dataframe[header].mean())/
def norm(dataframe):
for header in dataframe._get_numeric_data().columns:
dataframe[header] = (dataframe[header] - dataframe[header].mean())/dataframe[header].std()
return dataframe
train, val= train_test_split( dataframe, test_size =0.2)
def df_to_dataset(dataframe, shuffle=True, batch_size=32):
dataframe = dataframe.copy()
labels = dataframe.pop("target")
ds = tf.data.Dataset.from_tensor_slices((dict(dataframe), labels))
if shuffle:
ds = ds.shuffle(buffer_size=len(dataframe))
ds = ds.batch(batch_size)
ds=ds.map(norm)
return ds
train_ds= df_to_dataset(train, shuffle=False, batch_size=32)
val_ds = df_to_dataset(val, shuffle=False)
按照你的代码,ds的类型是BatchDataSet,它的元素规格是tuple,大小是2,但是你的norm函数只需要一个参数,这就是为什么它会提升
接受1个位置参数,但给出了2个
更详细地说,第一个元素的类型是dict,另一个是TensorSpec。因此,只需如下更新您的norm函数:
def norm(df_as_dict, tensor_spec):
...
do some work for df_as_dict
...