如何使用 Keras TensorBoard 回调进行网格搜索

2023-11-21

I'm using the Keras TensorBoard callback. I would like to run a grid search and visualize the results of each single model in the tensor board. The problem is that all results of the different runs are merged together and the loss plot is a mess like this: enter image description here

How can I rename each run to have something similar to this: enter image description here

这是网格搜索的代码:

df = pd.read_csv('data/prepared_example.csv')

df = time_series.create_index(df, datetime_index='DATE', other_index_list=['ITEM', 'AREA'])

target = ['D']
attributes = ['S', 'C', 'D-10','D-9', 'D-8', 'D-7', 'D-6', 'D-5', 'D-4',
       'D-3', 'D-2', 'D-1']

input_dim = len(attributes)
output_dim = len(target)

x = df[attributes]
y = df[target]

param_grid = {'epochs': [10, 20, 50],
              'batch_size': [10],
              'neurons': [[10, 10, 10]],
              'dropout': [[0.0, 0.0], [0.2, 0.2]],
              'lr': [0.1]}

estimator = KerasRegressor(build_fn=create_3_layers_model,
                           input_dim=input_dim, output_dim=output_dim)


tbCallBack = TensorBoard(log_dir='./Graph', histogram_freq=0, write_graph=True, write_images=False)

grid = GridSearchCV(estimator=estimator, param_grid=param_grid, n_jobs=-1, scoring=bug_fix_score,
                            cv=3, verbose=0, fit_params={'callbacks': [tbCallBack]})

grid_result = grid.fit(x.as_matrix(), y.as_matrix())

我认为没有任何方法可以将“每次运行”参数传递给GridSearchCV。也许最简单的方法是子类化KerasRegressor做你想做的事。

class KerasRegressorTB(KerasRegressor):

    def __init__(self, *args, **kwargs):
        super(KerasRegressorTB, self).__init__(*args, **kwargs)

    def fit(self, x, y, log_dir=None, **kwargs):
        cbs = None
        if log_dir is not None:
            params = self.get_params()
            conf = ",".join("{}={}".format(k, params[k])
                            for k in sorted(params))
            conf_dir = os.path.join(log_dir, conf)
            cbs = [TensorBoard(log_dir=conf_dir, histogram_freq=0,
                               write_graph=True, write_images=False)]
        super(KerasRegressorTB, self).fit(x, y, callbacks=cbs, **kwargs)

你会像这样使用它:

# ...

estimator = KerasRegressorTB(build_fn=create_3_layers_model,
                             input_dim=input_dim, output_dim=output_dim)

#...

grid = GridSearchCV(estimator=estimator, param_grid=param_grid,
n_jobs=1, scoring=bug_fix_score,
                  cv=2, verbose=0, fit_params={'log_dir': './Graph'})

grid_result = grid.fit(x.as_matrix(), y.as_matrix())

Update:

Since GridSearchCV由于交叉验证,多次运行相同的模型(即相同的参数配置),之前的代码最终将在每次运行中放置多个跟踪。看源码(here and here),似乎没有办法检索“当前 split id”。同时,您不应该只检查现有文件夹并根据需要添加子修复,因为作业是并行运行的(至少可能是这样,尽管我不确定 Keras/TF 是否属于这种情况)。你可以尝试这样的事情:

import itertools
import os

class KerasRegressorTB(KerasRegressor):

    def __init__(self, *args, **kwargs):
        super(KerasRegressorTB, self).__init__(*args, **kwargs)

    def fit(self, x, y, log_dir=None, **kwargs):
        cbs = None
        if log_dir is not None:
            # Make sure the base log directory exists
            try:
                os.makedirs(log_dir)
            except OSError:
                pass
            params = self.get_params()
            conf = ",".join("{}={}".format(k, params[k])
                            for k in sorted(params))
            conf_dir_base = os.path.join(log_dir, conf)
            # Find a new directory to place the logs
            for i in itertools.count():
                try:
                    conf_dir = "{}_split-{}".format(conf_dir_base, i)
                    os.makedirs(conf_dir)
                    break
                except OSError:
                    pass
            cbs = [TensorBoard(log_dir=conf_dir, histogram_freq=0,
                               write_graph=True, write_images=False)]
        super(KerasRegressorTB, self).fit(x, y, callbacks=cbs, **kwargs)

我在用着os需要 Python 2 兼容性,但如果您使用的是 Python 3,您可能会考虑更好的pathlib module用于路径和目录处理。

注意:我忘了之前提到过,但为了以防万一,请注意通过write_graph=True将记录一个图表per run,根据您的模型,这可能意味着很多(相对而言)这个空间。这同样适用于write_images,虽然我不知道该功能需要的空间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Keras TensorBoard 回调进行网格搜索 的相关文章

  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 有没有办法检测正在运行的代码是否正在上下文管理器内执行?

    正如标题所述 有没有办法做到这样的事情 def call back if called inside context print running in context else print called outside context 这将
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from

随机推荐

  • UTF-8 和 JavaScript

    我使用 Javascript 获取使用字符集 UTF8 定义的 HTML 页面中的数据 我的 javascript 方法使用字符集 UTF8 加载 但是当我使用 innerHTML 获取数据时 我遇到了编码问题 例如 工资 我错过了什么吗
  • 哪个更好:

    哪个更好或更方便使用 or 您是否需要 type 属性 如果您使用的是 HTML5 则不需要 否则 是的 HTML 4 01 和 XHTML 1 0 指定type属性为必填项 而 HTML5 将其作为可选属性 默认为text javascr
  • 钻石上的像素坐标

    我得到了一张图像 其中有几颗钻石并排放置 如下图所示 我知道图像上的唯一坐标是顶角 绿色文本 当我点击图像时 我得到了该点的坐标 但我无法得到我所在的钻石 例如我点击红点 我怎么知道x 260 y 179 顶部菱形 蓝色属于左边 ETC 非
  • 静态链接 libstdc++:有什么问题吗?

    我需要将使用 GCC 4 7 的 libstdc 在 Ubuntu 12 10 上构建的 C 应用程序部署到运行 Ubuntu 10 04 的系统 该系统附带了相当旧版本的 libstdc 目前 我正在编译 static libstdc s
  • f# 重复定义

    在 F powerpack 数学提供程序源代码中 我看到了这个 在lapack service netlib fs member this dgemm a matrix b matrix allocate results let c Mat
  • 如何通过 ant 构建脚本编译 .drl 文件

    我是流口水的新手 我想知道是否可以使用某种可以在 Windows 命令行 shell cmd 中输入的命令来编译 drl 文件 我查看了 drools 发行版附带的二进制文件 但我无法找到编译 drl 文件的方法 我对这样的命令感兴趣的原因
  • C# NUnit 的 BDD

    我一直在使用自制的 BDD Spec 扩展在 NUnit 中编写 BDD 样式测试 我想看看每个人的想法 它能增加价值吗 很烂吗 如果是这样为什么 那里有更好的东西吗 这是来源 https github com mjezzi NSpec 我
  • 如何在 Github Flavored Markdown 上的 URL 中使用尖括号?

    我想在 Github Flavor Markdown 的 URL 中使用尖括号 降价 1 Fork it http github com
  • 使用 Castle Windsor WcfFacility 创建客户端端点

    我创建了三个程序集 一个网站 一个 WCF 服务和一个包含服务实现的接口的契约程序集 我想使用 Castle Windsor 在客户端 网站 上为我创建服务 这样我就不必在网站的 web config 中为我希望使用的每个服务提供端点 我想
  • 如何从二进制文件生成 pdf 文件?

    如何从 php5 数据库中检索的二进制文件生成 pdf 文件 它是 Base64 编码的 我刚刚解码了它 但不知道下一步该怎么做 二进制数据很简单实际文件 或者更确切地说该文件的重要内容 只是没有文件名 base64 some base64
  • iOS 中背景图像无法正确显示

    我在网站上使用可平铺的背景图像 该网站在所有桌面浏览器中的浏览效果都很好 但当我在 iPad Mini 运行 iOS 6 1 3 上查看该网站时 背景图像中有条纹 您可以在大多数页面上看到一种模式 即一条看起来不错的线 背景图像的大小 然后
  • 数据集中 2 点之间的最大距离并识别这些点

    我有一个由几个点的 x y z 坐标组成的矩阵 我想找到极值点 即相距最远的两个点 我可以在 matlab 中找到一种方法 但我需要在 Python 中使用它 这是matlab中的代码 A randint 500 3 5 5 D pdist
  • 使用 imaplib 删除 Gmail 中的电子邮件时出现问题

    我尝试从收件箱文件夹中删除邮件 一切正常 但是当我切换到 所有邮件 文件夹时 删除不起作用 expunge 方法返回 OK None 并且消息未被删除 gt gt gt import imaplib gt gt gt server imap
  • MySQL - 如何在邮政编码前面加上“0”?

    在我的 MySQL InnoDB 数据库中 我有想要清理的脏邮政编码数据 干净的邮政编码数据是指我拥有邮政编码的所有 5 位数字 例如 90210 但由于某种原因 我在数据库中注意到 对于以 0 开头的邮政编码 0 已被删除 So 纽约州霍
  • 如何从谷歌日历获取活动详细信息

    当日历中创建新事件时 我成功地将谷歌日历的推送通知发送到我的系统中 推送通知的 POST 正文中没有数据 POST 标头如下 Host gt xxxxxx xxxx com Content Type gt application json
  • 实现 ICloneable 时是否应该提供深度克隆?

    我不清楚MSDN 文档在实现 ICloneable 时我是否应该提供深克隆或浅克隆 首选方案是什么 简短回答 是的 长答案 不要使用 ICloneable 这是因为 Clone 没有定义为浅克隆或深克隆 您应该实现自己的 IClone 接口
  • 两个指针指向同一个地址[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 当两个指针指向同一个地址时会发生什么 这会导致安全问题吗 事实本身没问题 但是如果你调用
  • 尝试在空对象引用上调用虚拟方法“void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view.PagerAdapter)”

    我正在尝试使用 Android 材料设计来实现滑动选项卡布局 但它给了我NullPointerException 到目前为止 这是我的代码 MainActivity java public class MainActivity extend
  • 在 Matlab 中强制用户输入整数的最佳方法

    我正在 Matlab 中编写一个简单的程序 并且想知道确保用户输入的值是正确整数的最佳方法 我目前正在使用这个 while num dice lt 1 isempty num dice num dice input Enter the nu
  • 如何使用 Keras TensorBoard 回调进行网格搜索

    I m using the Keras TensorBoard callback I would like to run a grid search and visualize the results of each single mode