[英]How to solve the "ValueError: 0 is not in range" when I fit data with CNN model using custom data generator in python ?(tf.Keras.utils.Sequence))
[英]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.