Запуск последовательного или многопоточного model.fit вызывает ValueError в keras - PullRequest
0 голосов
/ 02 января 2019

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

Допустим, я использую 1 поток.После каждой задачи следующая задача будет вызывать

Traceback (most recent call last):
File "C:\Program Files\Python36\lib\threading.py", line 916, in _bootstrap_inner
self.run()
File "C:\Program Files\Python36\lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "C:\Program Files\Python36\lib\multiprocessing\pool.py", line 489, in _handle_results
task = get()
File "C:\Program Files\Python36\lib\multiprocessing\connection.py", line 251, in recv
return _ForkingPickler.loads(buf.getbuffer())
File "C:\Program Files\Python36\lib\site-packages\keras\engine\network.py", line 1266, in __setstate__
model = saving.unpickle_model(state)
File "C:\Program Files\Python36\lib\site-packages\keras\engine\saving.py", line 435, in unpickle_model
return _deserialize_model(f)
File "C:\Program Files\Python36\lib\site-packages\keras\engine\saving.py", line 258, in _deserialize_model
.format(len(layer_names), len(filtered_layers))
ValueError: You are trying to load a weight file containing 21 layers into a model with 0 layers

. Я где-то читал, что это может быть вызвано не указанием правильного input_size, однако перед добавлением каких-либо слоев в модели я всегда добавляю InputLayer(X)к модели.

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

В конце концов я понял, что это было вызвано действием return ввызываемая функция apply_sync.wait(), и .get(), похоже, выдают одну и ту же ошибку.

Поэтому мой вопрос таков: является ли оператор return жизнеспособным при использовании apply_sync и Pooling with Keras (после pydocs .get() работает для меня с простыми функциями), или я должен, например, поместить результаты путем перечисления вглобальная переменная, или я делаю это по своей сути неправильно?

...