numeric_column shape = 2和两个数字列之间的差异

时间:2018-08-22 00:24:18

标签: tensorflow tensorflow-estimator feature-engineering

最初与时间相关的数据的格式为整数:

1234 # corresponds to 12:34
2359 # corresponds to 23:59

1)第一种选择是将时间描述为“数字列”:

tf.feature_column.numeric_column(key="start_time", dtype=tf.int32)

2)另一个选择是将时间分为小时和分钟,分为两个独立的功能列:

tf.feature_column.numeric_column(key="start_time_hours", dtype=tf.int32)
tf.feature_column.numeric_column(key="start_time_minutes", dtype=tf.int32)

3)第三种选择是维持一个功能列,但让tensorflow知道可以分为几小时和几分钟来描述它:

tf.feature_column.numeric_column(key="start_time", shape=2, dtype=tf.int32)

这种划分是否有意义,选项2)和3)之间有什么区别?

还有一个问题,我面临着如何从csv解码矢量数据的问题:

1|1|FGTR|1|1|14,2|15,1|329|3|10|2013
1|1|LKJG|1|1|7,2|19,2|479|7|10|2013
1|1|LKJH|1|1|14,2|22,2|500|3|10|2013

如何让张量流知道应该将“ 14,2”,“ 15,1”视为张量shape = 2?

编辑1:

我找到了一种从csv解码类似“数组”的数据的解决方案。 在训练和评估功能中,我添加了.map步骤来解码某些列的数据:

dataset = tf.data.Dataset.from_tensor_slices((dict(features), labels)).map(parse_csv)

其中parse_csv实现为:

def parse_csv(features, label):
    features['start_time'] = tf.string_to_number(tf.string_split([features['start_time']], delimiter=',').values, tf.int32)
    return features, label

我认为两行分开的列和shape=2的一列之间的区别在于“权重”的分配方式。

0 个答案:

没有答案