用python并行训练两个Keras模型

我想建立一个函数,可以并行训练两个Keras模型,我的函数是这样的。

def fit_function(index):
    'some code here'
     print('statrt fitting model1..')
     model_1.fit(X[index],y[index],epochs=1)
     print('statrt fitting model2..')
     model_2.fit(X[index],y[index],epochs=1)
     return

我还使用了python中的多处理库。

import multiprocessing
if __name__ == '__main__':
    jobs = []
    for i in range(0,n):
        p = multiprocessing.Process(target=fit_function, args=(i,))
        jobs.append(p)
        p.start()
        p.join()

在运行这个函数后,它打印出:”statrt fitting model1… “这意味着它进入了函数,但在这个输出之后,它什么也没做! 程序没有停止,也没有给出结果。

我做错了哪部分?如果你能帮助我,我将非常感激。

解决方案:

在你的代码中存在多个不一致的地方,通常情况下,给出一个最小的可重现的代码是有帮助的。你还需要检查你的CPU数量,如果你不知道也你没有对你的模型做任何事情。

这是一个最小的例子,用不同的数据并行训练一个分类器。这里我假设你需要多个版本的模型,你的编码方式。

from sklearn import svm
X = [ [[0, 0], [1, 1]], [[0, 0], [1, 1]] ]
y = [[0, 1], [1, 0] ]


def fit_function(index, return_models):
  print('statrt fitting model1..')
  print(index)
  clf = svm.SVC()
  clf.fit(X[index], y[index])
  return_models[index] = clf

import multiprocessing
if __name__ == '__main__':
  print(f'Number of cpus: {multiprocessing.cpu_count()}')
  jobs = []
  n = multiprocessing.cpu_count()

  manager = multiprocessing.Manager()
  return_models = manager.dict()

  for i in range(0,n):
    p = multiprocessing.Process(target=fit_function, args=(i, return_models))
    jobs.append(p)
    p.start()
    p.join()

  print(return_models)

给TA打赏
共{{data.count}}人
人已打赏
解决方案

如何只在被点击的div中改变按钮?

2022-5-13 5:00:17

解决方案

在Elasticsearch中用regex对_id字段进行查询。

2022-5-13 6:00:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索