如何处理来自tf.decode_csv()喜欢数组的张量。

时间:2017-09-25 12:03:50

标签: python tensorflow

import tensorflow as tf
def read_data(file_queue):
    reader = tf.TextLineReader(skip_header_lines=1)
    key, value = reader.read(file_queue)
    defaults = [[0], [0]]
    value1, value2 = tf.decode_csv(value, defaults)
    return tf.stack(value1, value2)

但我想处理一些数据,例如“3胜2失败”转换为[3,2]

1 个答案:

答案 0 :(得分:1)

使用tensorflow,您可以描述计算。 value1value2(以及tf.*调用产生的任何其他操作)是符号变量,指向图表中的节点。

这就是为什么你打印"数据"你得到Tensor("DecodeCSV:0", shape=(), dtype=int32),这是"数据"的蟒蛇表示。

相反,只有在构建图表并将其放入Session后,才会显示实际数据。

简而言之,如果你想提取真实数据"你必须退出tensorflow图并获取值(因此强制执行图中描述的操作)。

您必须执行以下操作:

sess = tf.Session()
v1,v2 = sess.run([value1, value2])
return v2,v2

然而,这是使用张量流的正确方法。

相反,您必须尽可能多地描述计算,然后在需要时将所有内容都执行到图形中。 (创建一个会话,分配内存,将图形放入其中,执行操作,数据传输......是繁重的操作,应该不那么频繁地进行)

因此,我建议您查看一下tensorflow提供的控制流操作:https://www.tensorflow.org/api_guides/python/control_flow_ops#Comparison_Operators

您可以使用它们控制值流入图表,避免在tensorflow和python之间强制进行无用的数据交换