如何使用tf.decode_csv解码张量流中带有长行的csv文件?

yiy*_*o35 5 csv tensorflow

如何csv使用tf.TextLineReader()和tf.decode_csv 解码长行文件(例如,每行有多个项目,以便逐个列出它们以便输出)?

典型用法是:

reader = tf.TextLineReader()    
key, value = reader.read(filename_queue)    
record_defaults = [1,1,1,1,1]    
a,b,c,d,e =  tf.decode_csv(records=value,record_defaults=record_defaults, field_delim=" ")
Run Code Online (Sandbox Code Playgroud)

当我们在一行中有数千个项目时,不可能将它们一个一个地分配为上面的(a,b,c,d,e),是否可以将所有项目解码为列表或类似的东西?

syg*_*ygi 0

好吧,tf.decode_csv返回一个列表,所以你可以简单地执行以下操作:

record_defaults = [[1], [1], [1], [1], [1]]
all_columns = tf.decode_csv(value, record_defaults=record_defaults)
all_columns
Out: [<tf.Tensor 'DecodeCSV:0' shape=() dtype=int32>,
 <tf.Tensor 'DecodeCSV:1' shape=() dtype=int32>,
 <tf.Tensor 'DecodeCSV:2' shape=() dtype=int32>,
 <tf.Tensor 'DecodeCSV:3' shape=() dtype=int32>,
 <tf.Tensor 'DecodeCSV:4' shape=() dtype=int32>
]
Run Code Online (Sandbox Code Playgroud)

然后您可以像往常一样对其进行评估:

sess = tf.Session() 
sess.run(all_columns)
Out: [1, 1, 1, 1, 1]
Run Code Online (Sandbox Code Playgroud)

请注意,您需要通过等级 1 record_defaults。如果您遇到挂起队列的问题。