【问题标题】:multi-threading with multiple CNN call weights具有多个 CNN 调用权重的多线程
【发布时间】:2019-09-02 01:39:43
【问题描述】:

我有每个类别的 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())

如何将每个调用发送到单独的线程中以并行模式进行处理。谁能帮帮我,我会感谢他的。 我希望很清楚。谢谢。

【问题讨论】:

    标签: python multithreading deep-learning conv-neural-network


    【解决方案1】:

    您可以使用 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()
    

    【讨论】:

      猜你喜欢
      • 2021-11-09
      • 2013-03-02
      • 2018-11-14
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多