Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow tf__norm()接受1个位置参数,但给出了2个_Tensorflow_Keras - Fatal编程技术网

Tensorflow 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())/

我试图向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())/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
    ...