Python 如何处理tf.decode_csv()中的张量,就像一个数组。

Python 如何处理tf.decode_csv()中的张量,就像一个数组。,python,tensorflow,Python,Tensorflow,但是我想用tensorflow来处理一些数据,比如“3胜2败”转换成[3,2]你在描述一个计算value1、value2(以及由tf.*调用产生的任何其他操作)是符号变量,指向图形中的节点 这就是为什么如果你打印“数据”,你会得到张量(“decodeCV:0”,shape=(),dtype=int32),这就是“数据”的python表示 实际上,只有在构建图形并将其放入会话后,实际数据才会出现 简而言之,如果要提取“真实数据”,必须退出tensorflow图并获取值(从而强制执行图中描述的操作)

但是我想用tensorflow来处理一些数据,比如“3胜2败”转换成[3,2]

你在描述一个计算
value1
value2
(以及由
tf.*
调用产生的任何其他操作)是符号变量,指向图形中的节点

这就是为什么如果你打印“数据”,你会得到张量(“decodeCV:0”,shape=(),dtype=int32),这就是“数据”的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)
但是,这不是使用tensorflow的正确方法

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

因此,我建议您看看tensorflow提供的控制流操作:


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

如果我打印数据,它将显示“Tensor(“decodeCV:0”,shape=(),dtype=int32)”。那么我怎样才能得到真实的数据呢?
sess = tf.Session()
v1,v2 = sess.run([value1, value2])
return v2,v2