繁体   English   中英

data_utils.is_generator_or_sequence 总是返回 False

[英]data_utils.is_generator_or_sequence returns always False

我正在尝试使用序列和 keras fit_generator 来训练神经网络。 但是我的序列没有被识别为一个。 在 training_generator.py 脚本的某个时刻,它运行 data_utils.is_generator_or_sequence 测试并得到 False。 奇怪的是,当我直接在序列 object 上运行测试时,我得到了相同的结果:

print(data_utils.is_generator_or_sequence(Sequence()))

False

我复制了从https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/keras/utils/data_utils.py中提取的 function 源代码,当我运行它时它工作正常:

def my_is_generator_or_sequence(x):

    builtin_iterators = (str, list, tuple, dict, set, frozenset)

    if isinstance(x, (ops.Tensor, np.ndarray) + builtin_iterators):

        return False

    return tf_inspect.isgenerator(x) or isinstance(x, Sequence) or is_iterator(x)
my_is_generator_or_sequence(Sequence())

True

有什么线索吗?

你如何导入data_utils 我在 tf2.0 rc 版本上对其进行了测试,并且无法重现您的结果。

from tensorflow.python.keras.utils import data_utils
from tensorflow.keras.utils import Sequence

data_utils.is_generator_or_sequence(Sequence())  # return True

我无法复制您的错误,但我想我知道您做错了什么。

当您调用方法data_utils.is_generator_or_sequence时,您将一个新序列传递给它,但您没有显示您从哪里导入此序列。 I assume you used a different Sequence class (probably collections.Sequence ) but the data_utils file contains its own Sequence class, and uses that class in this method.

尝试这个:

print(data_utils.is_generator_or_sequence(data_utils.Sequence()))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM