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]
答案 0 :(得分:1)
使用tensorflow,您可以描述计算。 value1
,value2
(以及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之间强制进行无用的数据交换