1、tensorflow(不定长)文本序列读取与解析
tensorflow读取csv时需要指定各列的数据类型。
但是对于RNN这种接受序列输入的模型来说,一条序列的长度是不固定。这时如果使用csv存储序列数据,应当首先将特征序列拼接成一列。
例如两条数据序列,第一项是标签,之后是特征序列
[0, 1.1, 1.2, 2.3] 转换成 [0, '1.1_1.2_2.3']
[1, 1.0, 2.5, 1.6, 3.2, 4.5] 转换成 [1, '1.0_2.5_1.6_3.2_4.5']
这样每条数据都只包含固定两列了。
读取方式是指定第二列为字符串类型,再将字符串按照'_'分割并转换为数字。
关键的几行代码示例如下:
def readMyFileFormat(fileNameQueue): reader = tf.TextLineReader() key, value = reader.read(fileNameQueue) record_defaults = [["Null"], [-1], ["Null"], ["Null"], [-1]] phone1, seqlen, ts_diff_strseq, t_cod_strseq, userlabel = tf.decode_csv(value, record_defaults=re