Почему мой питон зависает, когда я использую zip ()? - PullRequest
0 голосов
/ 15 мая 2019

Я использую Keras с бэкэндом тензорного потока. Мне нужно извлечь из каталога кучу изображений, как входных, так и выходных, и использовать их для соответствия модели. Я использую функцию ImageDataGenerator.flow_from_directory () из библиотеки Keras для создания двух генераторов, один для извлечения входных файлов и один для извлечения выходных файлов.

Функция Keras model.fit_generator () принимает только один генератор, поэтому я использовал zip (generator_1, generator_2), чтобы объединить его в один генератор. Однако это привело к тому, что моя программа зависла и никогда не заканчивала работу.

def fit_model(self, batch_size, epochs, initial_epoch, callbacks):
    short_generator = self.train_datagen.flow_from_directory('../screenshots/short', class_mode=None, target_size=(self.x_res,self.y_res))
    long_generator = self.train_datagen.flow_from_directory('../screenshots/long', class_mode=None, target_size=(self.x_res,self.y_res))
    print('zipping generators')
    generator = zip(short_generator, long_generator)
    print('done zipping generators')
    self.model.fit_generator(generator, steps_per_epoch=math.ceil(1190/self.batch_size), epochs=10)
    self.model.save('./weights/finished.h5')

Это приводит к тому, что «распаковывающиеся генераторы» распечатываются, но никогда не «распаковываются по генераторам»

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Вы могли бы решить свою проблему, не переходя на 3.X, заменив zip на itertools.izip.

zip в Python 2.X стремится и возвращаетсписок, тогда как itertools.izip (который стал zip в Python 3.X`) производит ленивую последовательность.

1 голос
/ 15 мая 2019

Я решил эту проблему и хотел бы объяснить кому-либо еще, как:

Я не знаю, всегда ли это так, но для меня zip () зависает, потому что работает в Python 2.7,В Python 3.x он буквально запускается за секунду или две.Я не удалял Python 2, но я загрузил все необходимые мне зависимости в их формах Python 3, выполнив:

python3 -m pip install tensorflow-gpu, keras, numpy, etc...

Затем я вызвал скрипт:

python3 myscript.py

Вместо

python myscript.py

и это прекрасно работало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...