我最初拥有的与时间相关的数据格式为整数:
1234 # corresponds to 12:34
2359 # corresponds to 23:59
1)第一个选项是将时间描述为 numeric_column:
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
如何让tensorflow知道“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
“权重”的分布方式。