Возврат объекта с помощью мультипроцессинга. Процесс - PullRequest
0 голосов
/ 31 октября 2018

Возможно ли это? Я хотел бы изменить это, чтобы вернуть model

from tensorflow.keras.models import load_model
import tensorflow as tf
import multiprocessing
import numpy as np

def get_model():
    model = load_model("./model.h5")
    optimizer = tf.keras.optimizers.SGD(lr=0.0001, momentum=0.99, nesterov=True)
    model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
    return model # can I get this back?

# option 1: execute code with extra process
p = multiprocessing.Process(target=get_model)
p.start()
p.join()

# wait until user presses enter key
input()

(Я пытаюсь сделать это, потому что я прочитал, что это одно из решений, которое заключается в том, что я не могу освободить память GPU после загрузки этой модели Keras, что в конечном итоге приводит к ошибке ResourceExhaustedError.)

1 Ответ

0 голосов
/ 31 октября 2018

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

`global model
model = init()
def get_model():
    model = load_model("./model.h5")
    optimizer = tf.keras.optimizers.SGD(lr=0.0001, momentum=0.99, nesterov=True)
    model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
returnt model
`

и после этого вы сможете вызывать глобальную переменную в вашем коде.

...