Storages

class optuna.storages.RDBStorage(url, engine_kwargs=None, skip_compatibility_check=False)[源代码]

Storage class for RDB backend.

请注意,用户可以实例化该对象,但是该对象的属性不应被用户直接获取。

示例

用定制的 pool_sizetimeout 创建一个 RDBStorage 实例

import optuna

def objective(trial):
    x = trial.suggest_uniform('x', -100, 100)
    return x ** 2

storage = optuna.storages.RDBStorage(
    url='sqlite:///:memory:',
    engine_kwargs={
        'pool_size': 20,
        'connect_args': {
            'timeout': 10
        }
    }
)

study = optuna.create_study(storage=storage)
study.optimize(objective, n_trials=10)
参数
  • url -- 存储位置URL

  • engine_kwargs -- 一个包含了 keyword 参数的字典,它会被传入 sqlalchemy.engine.create_engine .

  • skip_compatibility_check -- 如果该选项为真,那么 schema 兼容性检测将被跳过。

注解

如果你用 MySQL 的话,在默认情况下,pool_pre_ping 将为 True. 这样可以防止连接超时。 你可以通过 engine_kwargs['pool_pre_ping']=False 来关掉这个设置。但我们推荐打开它,因为有时候目标函数执行时间会超过 MYSQL 的 wait_timeout.

class optuna.storages.RedisStorage(url)[源代码]

Storage class for Redis backend.

请注意,用户可以实例化该对象,但是该对象的属性不应被用户直接获取。

示例

利用 redis 的 URL 这里创建了一个 RedisStorage 的实例。

>>> import optuna
>>>
>>> def objective(trial):
>>>     ...
>>>
>>> storage = optuna.storages.RedisStorage(
>>>     url='redis://passwd@localhost:port/db',
>>> )
>>>
>>> study = optuna.create_study(storage=storage)
>>> study.optimize(objective)
参数

url -- URL of the redis storage, password and db are optional. (ie: redis://localhost:6379)

注解

如果你准备用 redis 来做 optuna 的存储后端的话,请确认 redis 已经安装好并且正在运行中。请用 $ pip install -U redis 来安装 redis 的 Python 库。

注解

v1.4.0 版本中新加入的试验性特性。在未来的版本中,该接口可能在没有预先告知的情况下改变。 具体参见 https://github.com/optuna/optuna/releases/tag/v1.4.0.