data_utils.is_generator_or_sequence всегда возвращает False - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь использовать последовательность для обучения нейронной сети с использованием пакетов и keras fit_generator. Однако моя последовательность не распознается как одна. В какой-то момент сценария training_generator.py он запускает тест data_utils.is_generator_or_sequence и получает значение False. Как ни странно, когда я запускаю тест непосредственно на объекте Sequence, у меня тот же результат:

print(data_utils.is_generator_or_sequence(Sequence()))

False

Я реплицировал исходный код функции, извлеченный из https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/keras/utils/data_utils.py, и когда я запускаю его, он работает нормально:

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

Есть какие-нибудь подсказки по этому поводу?

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Я не смог воспроизвести вашу ошибку, но я думаю, что знаю, в чем вы ошиблись.

когда вы вызвали метод data_utils.is_generator_or_sequence вы передали ему новую последовательность, но вы не показали, откуда вы импортировали эту последовательность. Я предполагаю, что вы использовали другой класс Sequence (вероятно, collections.Sequence), но файл data_utils содержит свой собственный класс Sequence и использует этот класс в этом методе.

попробуйте это:

print(data_utils.is_generator_or_sequence(data_utils.Sequence()))
0 голосов
/ 01 октября 2019

Как вы импортируете 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...