读取TFRecord数据集时如何规范化多个y值

2024-10-04 05:34:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我生成了训练数据,都是原始值,我想在读取TFRecord数据集时规范化数据。第一步,我从训练数据中读取所有原始值,循环通过每个iter来连接数组,使用minmaxscaler来拟合训练数据并得到scaler

第二步,我编写一个规范化函数来转换所有数据,代码如下:

def normalizeY(inputs, targets):
    targets['Y1'] = scaler_Y1.transform(tf.cast(targets['Y1'], tf.float32))
    targets['Y2'] = scaler_Y2.transform(tf.cast(targets['Y2'], tf.float32))
    targets['Y3'] = scaler_Y3.transform(tf.cast(targets['Y3'], tf.float32))
        
    return inputs, targets
    
dataset = tf.data.TFRecordDataset(filenames)
dataset = dataset.map(_parse_function, num_parallel_calls=AUTOTUNE)
dataset = dataset.map(normalizeY)
dataset = dataset.prefetch(AUTOTUNE)
dataset = dataset.batch(batch_size)

但是步骤dataset.map(normalizeY)给出了错误:TypeError: __array__() takes 1 positional argument but 2 were given


Tags: 数据maptftransform规范化datasetinputstargets
1条回答
网友
1楼 · 发布于 2024-10-04 05:34:15

我想出了一个解决方案,用最小/最大值来规范化,而不是用定标器来变换

def normalizeY(inputs, targets):
   targets['Y1'] = (tf.cast(targets['Y1'], tf.float32) - Y1_min) / (Y1_max - Y1_min)
   targets['Y2'] = (tf.cast(targets['Y2'], tf.float32) - Y2_min) / (Y2_max - Y2_min)
   targets['Y3'] = (tf.cast(targets['Y3'], tf.float32) - Y3_min) / (Y3_max - Y3_min)

相关问题 更多 >