【发布时间】:2016-10-05 15:08:50
【问题描述】:
我有一个基本的input_fn,可以与下面的 Tensorflow Estimators 一起使用。无需设置num_epochs 参数即可完美运行;获得的张量具有离散的形状。传入num_epochs,因为None 以外的任何内容都会导致未知形状。我的问题在于在使用num_epochs 时构造稀疏张量;在不知道输入张量的形状的情况下,我无法弄清楚如何一般地创建所述张量。
谁能想到这个问题的解决方案?我希望能够通过num_epochs=1 能够仅对数据集进行一次评估,以及传递给predict 以产生一组数据集大小的预测,不再没有少。
def input_fn(batch_size):
examples_op = tf.contrib.learn.read_batch_examples(
FILE_NAMES,
batch_size=batch_size,
reader=tf.TextLineReader,
num_epochs=1,
parse_fn=lambda x: tf.decode_csv(x, [tf.constant([''], dtype=tf.string)] * len(HEADERS)))
examples_dict = {}
for i, header in enumerate(HEADERS):
examples_dict[header] = examples_op[:, i]
continuous_cols = {k: tf.string_to_number(examples_dict[k], out_type=tf.float32)
for k in CONTINUOUS_FEATURES}
# Problems lay here while creating sparse categorical tensors
categorical_cols = {
k: tf.SparseTensor(
indices=[[i, 0] for i in range(examples_dict[k].get_shape()[0])],
values=examples_dict[k],
shape=[int(examples_dict[k].get_shape()[0]), 1])
for k in CATEGORICAL_FEATURES}
feature_cols = dict(continuous_cols)
feature_cols.update(categorical_cols)
label = tf.string_to_number(examples_dict[LABEL], out_type=tf.int32)
return feature_cols, label
【问题讨论】:
标签: python tensorflow skflow