我有一个数据集,每个类别有8张图像,每个图像都输入了相应的CNN(8个CNN),所有模型都在tensorflow-gpu上成功训练。但是,当为了评估或测试模型而调用模型的权重时,它将被卡在特定的位置,gpu内存(2 GB)无法处理它们。我想在CPU处理器(8 GB)上使用多线程处理它们。我的通话模型如下:
model1 = load_model("model_1.model")
lb1 = pickle.loads(open("label_1.pickle", "rb").read())
.
.
.
model8 = load_model("model_8.model")
lb8 = pickle.loads(open("label_8.pickle", "rb").read())
如何将每个调用发送到单独的线程中,以并行方式进行处理。谁能帮我,我将感谢他。 我希望这很清楚。谢谢。
答案 0 :(得分:0)
您可以通过池或直接使用python多处理模块。
import pickle
from multiprocessing import Pool, Process
def load_model(model):
# stubbed for testing
print("model:", model)
def handle_model(n):
model = load_model(f"model_{n}.model")
try:
lb = pickle.loads(open(f"label_{n}.pickle", "rb").read())
except OSError as e:
print(e)
# do work
# ...
# pool style
pool = Pool(processes=8)
results = pool.map(handle_model, range(1,9))
# Process style
procs = []
for i in range(1,9):
procs.append(Process(target=handle_model, args=(i,)))
procs[-1].start()
for proc in procs:
proc.join()