【问题标题】:Normalization of tensorflow dataset columntensorflow 数据集列的归一化
【发布时间】:2020-06-23 19:17:10
【问题描述】:

我有一个张量流数据集:

data = tf.data.experimental.make_csv_dataset(r"data.tsv.gz",
                                             field_delim="\t",
                                             compression_type="GZIP",
                                             batch_size=1000, 
                                             label_name="Y", 
                                             num_epochs=1)

我想规范化 X1 列,我试过这样:

columns = []

x1 = tf.feature_column.numeric_column('X1', normalizer_fn=lambda x: (x - xMean) / xStd)
columns.append(x1)

l = tf.keras.layers.DenseFeatures(columns)

nn = tf.keras.Sequential()
nn.add(l)
nn.compile(optimizer="Adam", loss="binary_crossentropy", metrics=[tf.keras.metrics.AUC(name='auc')])
nn.fit(data, epochs=5)

但我不知道如何计算均值和标准值。如何从数据集中获取一列并计算均值和标准值?或者也许 tensorflow 中有一些归一化函数?

【问题讨论】:

  • 你可以试试tf.keras.layers.experimental.preprocessing.Normalization 吗?

标签: python python-3.x tensorflow tensorflow2.0


【解决方案1】:

到目前为止,您可以使用一些解决方法来实现此目的,方法是在之前计算平均值和偏差,然后使用 tf.data.experimental.make_csv_dataset 加载 CSV 数据。

下面是代码sn-p。

import tensorflow as tf
import pandas as pd
import numpy as np

df = pd.read_csv("/content/titanic.csv")

def normalize(data):
  Numeric_column = ["Age"]
  x = df[Numeric_column]
  MEAN = np.mean(x)
  STD = np.std(x)
  return (data-MEAN)/STD

df["normalized_age"] = df["Age"].apply(normalize)
#save the normalized dataframe to csv file
df.to_csv("normalized_data.csv",sep='\t',encoding='utf-8') 

现在使用 tf.data.experimental.make_csv_dataset 加载规范化的 CSV 文件

【讨论】:

    猜你喜欢
    • 2020-11-12
    • 1970-01-01
    • 2021-01-29
    • 2018-04-08
    • 2017-05-11
    • 1970-01-01
    • 2018-03-26
    • 2019-06-28
    • 2017-11-13
    相关资源
    最近更新 更多