首页 > 解决方案 > 使用 multiprocessing.Process 返回一个对象

问题描述

这可能吗?我想修改它以返回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()

(我正在尝试这样做,因为我读到这是加载此 Keras 模型后无法释放我的 GPU 内存的一种解决方案,这最终会导致 ResourceExhaustedError 稍后。)

标签: python-3.xkeraspython-multiprocessing

解决方案


如果您将其加载到全局变量并保留内存转储,我认为您的问题将得到排序。

`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
`

之后,您将能够在您的代码中调用全局变量。


推荐阅读