python - 如何按文本长度过滤Tensorflow TextLineDataset
问题描述
我想过滤为 3 <= length_of_text <=15 但我不能这样做。
import tensorflow as tf
dataset = tf.data.TextLineDataset("data.txt")
def drop_outliers(line):
return (3<= tf.size(line) <=15).numpy()
dataset = dataset.filter(lambda line: tf.py_function(func = drop_outliers,
inp=[line],
Tout = tf.bool))
iterator = iter(dataset)
print(iterator.get_next())
运行此代码时出现“序列结束”错误。
解决方案
在官方文档中Iterator.get_next()
,您会看到OutOfRangeError
到达序列末尾的时间,
Raises
tf.errors.OutOfRangeError
:如果已经到达迭代器的末尾。
所以,错误不是因为TextLineDataset
or dataset.filter()
。你可以使用dataset.as_numpy_iterator()
喜欢,
out = list( dataset.as_numpy_iterator() )
或者用块包围dataset.get_next()
方法,try except
for i in range( seq_length ):
try:
element = iterator.get_next()
except tf.errors.OutOfRangeError:
print( "End of sequence reached" )
break
推荐阅读
- android - 找不到 Gradle DSL 方法:'androidTestImplementation()'
- python - 如何修复 TypeError:'str' 对象在 Python 中不可调用
- javascript - 删除 VS 代码中的“\u200b”
- fabricjs - Fabricjs,选择手柄显示但在与其他形状一起选择之前不可点击
- python - 如何在 Python 中腌制一个函数?
- mysql - SQL:按列别名排序
- similarity - 实体有相似词的问题
- c# - 声音文件路径 - C# .Net
- python-3.x - django 除了匹配的查询不存在
- bash - 如何从 bash 脚本中的引用字符串中获取环境变量?