gpt4 book ai didi

tensorboard - 将 TensorBoard 与 Keras Tuner 结合使用

转载 作者:行者123 更新时间:2023-12-04 03:28:02 26 4
gpt4 key购买 nike

在使用 Keras Tuner 完成的超参数搜索期间,我遇到了明显的循环依赖,试图将日志数据用于 TensorBoard。 , 对于使用 TF2 构建的模型。后者的典型设置需要在调谐器的 search() 中设置 Tensorboard 回调。方法,包装模型的 fit()方法。

from kerastuner.tuners import RandomSearch
tuner = RandomSearch(build_model, #this method builds the model
hyperparameters=hp, objective='val_accuracy')
tuner.search(x=train_x, y=train_y,
validation_data=(val_x, val_y),
callbacks=[tensorboard_cb]

在实践中, tensorboard_cb回调方法需要设置将记录数据的目录,并且该目录对于每个试验必须是唯一的。一种常用的方法是根据当前时间戳命名目录,代码如下。
log_dir = time.strftime('trial_%Y_%m_%d-%H_%M_%S')
tensorboard_cb = TensorBoard(log_dir)

这在训练具有已知超参数的模型时有效。但是,在进行超参数搜索时,我必须在调用 tuner.search() 之前定义和指定 TensorBoard 回调。 .这是问题: tuner.search()将调用 build_model()多次,每个试验都应该有自己的 TensorBoard 目录。理想定义 log_dir将在 build_model() 内完成但是 Keras Tuner 搜索 API 强制 TensorBoard 在该函数之外定义。

TL;博士: TensorBoard 通过回调获取数据,每次试验需要一个日志目录,但 Keras Tuner 需要在执行之前为整个搜索定义一次回调,而不是每次试验。在这种情况下,如何定义每次试验的唯一目录?

最佳答案

keras 调谐器为每次运行创建一个子目录(语句可能取决于版本)。

我想找到正确的版本组合很重要。

这是它在 jupyterlab 中对我的工作方式。

先决条件:

  • 点数要求
  •     keras-tuner==1.0.1
    tensorboard==2.1.1
    tensorflow==2.1.0
    Keras==2.2.4
    jupyterlab==1.1.4

    (2.) jupyterlab 安装、构建和运行 [标准编译参数:生产:最小化]

    这是实际的代码。首先我定义日志文件夹和回调
    # run parameter
    log_dir = "logs/" + datetime.datetime.now().strftime("%m%d-%H%M")

    # training meta
    stop_callback = EarlyStopping(
    monitor='loss', patience=1, verbose=0, mode='auto')

    hist_callback = tf.keras.callbacks.TensorBoard(
    log_dir=log_dir,
    histogram_freq=1,
    embeddings_freq=1,
    write_graph=True,
    update_freq='batch')

    print("log_dir", log_dir)

    然后我定义我的超模,我不想透露。然后
    我设置了超参数搜索

    from kerastuner.tuners import Hyperband

    hypermodel = get_my_hpyermodel()

    tuner = Hyperband(
    hypermodel
    max_epochs=40,
    objective='loss',
    executions_per_trial=5,
    directory=log_dir,
    project_name='test'
    )

    然后我执行

    tuner.search(
    train_data,
    labels,
    epochs=10,
    validation_data=(val_data, val_labels),
    callbacks=[hist_callback],
    use_multiprocessing=True)

    tuner.search_space_summary()

    当带有此代码的笔记本搜索足够的超参数时,我控制了 中的损失另一个笔记本 .由于可以通过 magic function 调用 tf V2 tensorboard

    单元格 1
    import tensorboard

    单元格 2
    %load_ext tensorboard

    单元格 3
    %tensorboard --logdir 'logs/'

    站点说明:由于我在 docker 容器中运行 jupyterlab,因此我必须为 tensorboard 指定适当的地址和端口,并在 dockerfile 中转发它。

    结果对我来说并不能真正预测......我还不明白,当我可以期待张量板中的直方图和分布时。
    有些运行加载时间似乎真的过长...所以有 耐心

    在标量下,我找到如下转弯列表

    “logdir”/“model_has”/execution[iter]/[train/validation]

    例如。
    0101-1010/bb7981e03d05b05106d8a35923353ec46570e4b6/execution0/train
    0101-1010/bb7981e03d05b05106d8a35923353ec46570e4b6/execution0/validation

    关于tensorboard - 将 TensorBoard 与 Keras Tuner 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59294251/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com