我目前想在我拥有的简单Keras神经网络上进行超参数搜索。我目前的计划是使用sklearn GridSearchCV功能,并使用keras.utils.multi_gpu_model将其拆分到我可以访问的2个GPU中。我相信这会很好,但是可能仍需要很长时间才能完成搜索。
有没有更有效的方法可以做到这一点?我似乎无法将GridSearch中的n_jobs标志设置为-1,这将使作业并行运行,我只是无法在GPU上执行此操作?
我正在使用 CP-Sat 求解器来优化我正在制定的时间表。然而,现在这个问题需要很长时间才能解决。是否可以用旧结果为求解器提供种子,作为起点,以减少找到最佳结果所需的时间?
我一直在使用 Google OR-tools 并尝试遵循他们的示例来解决调度问题。然而,python 文档有时很难理解,更复杂的例子 ( https://github.com/google/or-tools/blob/master/examples/python/shift_scheduling_sat.py ) 没有很好地描述。
我希望能够对员工的轮班工作量设置硬限制和软限制。在上面的例子中,我相信这个函数add_soft_sum_constraint()(我已经把它的确切代码放在下面)做了我想做的事情。我想复制它的功能,但我不明白它是如何做到的。
在 2 if 语句中,我不确定delta和excess变量代表什么,以及为什么它们要添加更多约束,而不是仅向 2 个成本列表添加更多约束,这将在稍后最小化目标时使用。
如果有人对此示例有任何见解,我将不胜感激,谢谢。
def add_soft_sum_constraint(model, works, hard_min, soft_min, min_cost,
soft_max, hard_max, max_cost, prefix):
cost_variables = []
cost_coefficients = []
sum_var = model.NewIntVar(hard_min, hard_max, '')
# This adds the hard constraints on the sum.
model.Add(sum_var == sum(works))
# Penalize sums below the soft_min target.
if soft_min > hard_min and min_cost > 0:
delta = model.NewIntVar(-len(works), len(works), '')
model.Add(delta == soft_min - …Run Code Online (Sandbox Code Playgroud) 在谷歌 OR-tools 库中,“原始”CP-Solver(此处讨论: https: //developers.google.com/optimization/cp/original_cp_solver)可以使用重新播种.ReSeed()。然而,较新的版本,CP-SAT 不能。
我的假设是 CP-SAT 将详尽地尝试您问题中的每个选项,从可行的选项中选取最大值或最小值(取决于您的优化目标)。因为它会尝试所有这些,所以不需要做种,因此该选项对您不可用。
这种理解正确吗?如果是的话,为什么原始求解器有种子?.ReSeed()如果我的说法不正确,那么新 CpSolver 中缺少 是否是一个疏忽?
我曾经docker-compose创建过一个包含 redis 和 celery 的 docker 实例。这将成功构建,但是,在我的 python 脚本中,当我尝试将某些内容添加到队列中时,出现以下错误:
Error 8 connecting to redis:6379. nodename nor servname provided, or not known.
Run Code Online (Sandbox Code Playgroud)
我尝试更改我的 celeryconfig 文件地址,并尝试了此处建议的解决方案: https: //github.com/mozilla-services/cliquet/issues/664但我无法修复它。
还有其他人遇到过这样的问题吗?
** example.py 的一部分 **
app = Celery('server', broker='redis://redis:6379/0')
app.config_from_object(celeryconfig)
@app.task(trail=True)
def count_words_at_url(url):
time.sleep(50)
resp = requests.get(url)
return len(resp.text.split())
Run Code Online (Sandbox Code Playgroud)
celeryconfig.py
result_backend = 'redis://redis:6379/0'
broker_url = 'redis://redis:6379/0'
worker_prefetch_multiplier = 1
worker_concurrency =1
Run Code Online (Sandbox Code Playgroud)
Dockerfile.celery
FROM python:3.6-alpine
WORKDIR /usr/src/app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ulimit -n …Run Code Online (Sandbox Code Playgroud)