Я использую Keras с fit_generator()
.Мой генератор подключается к базе данных (в моем случае MongoDB) для получения данных для каждого пакета.Если я использую флаг многопроцессорной обработки fit_generator()
, я получаю это предупреждение:
UserWarning: MongoClient opened before fork. Create MongoClient only after forking.
Я подключаюсь к базе данных во время __init__()
:
class MyCustomGenerator(tf.keras.utils.Sequence):
def __init__(self, ...):
collection = MagicMongoDBConnector()
def __len__(self):
...
def __getitem__(self, idx):
# Using collection to fetch data from mongoDB
...
def on_epoch_end(self):
...
Я бы предположил, что мне нужноесть отдельное соединение для каждой эпохи, но, к сожалению, обратный вызов on_epoch_begin(self)
недоступен (как видно здесь ).
Итак, два вопроса:
Как и когда разветвляется KerasГенератор, если используется многопроцессорная обработка?Как я могу избавиться от предупреждения MongoClient и подключиться внутри каждой вилки?