我已经提出以下代码来删除张量流数据集中的空行,然后将它们作为CSV输入处理。这到目前为止工作正常。有更好或更有效的方法吗?
printRow
背景信息:许多tensorflow演示脚本假设输入文件干净利落,数据中没有嵌入空行或空格。当添加虚假空格(故意或偶然)时,tf.decode_csv
方法似乎是抱怨的方法,没有关于哪条线不满意的线索。在处理输入文件时,我更喜欢我的代码容忍。因此,我们努力消除空白行。
下面的行不起作用,因为它将删除具有前导空格的有效行。
def filter_blank_lines(line):
import re
# This function will get called once for each separate item in the dataset.
# print("filter_blank_lines line:", line, type(line))
line2 = line.decode() # re wont take byte string!
# Here we search for useful data, ignoring whitespace, commas and
# other special charactars, which is a subset of \S
m = re.search("\w", line2, re.I|re.M)
# print("filter_blank_lines line2:", line2, "m:", m)
if m is None:
return False # search failed, whitespace only
else:
return True # non-blank line
dataset = dataset.filter(lambda line: tf.py_func(filter_blank_lines, [line], tf.bool, stateful=False))
我在Tensorflow V1.7.0中修改了新的tf.regex_replace
。它在这里不起作用,因为过滤器需要一个布尔结果。 dataset2 = dataset2.filter(lambda line: tf.not_equal(tf.substr(line, 0, 1), " "))
也可以提供帮助。
tf.cast