如何正确设置Tensorflow中Adadelta算法的参数?

2024-06-28

我一直在使用 Tensorflow 进行回归。 我的神经网络非常小,有 10 个输入神经元、单层 12 个隐藏神经元和 5 个输出神经元。

  • 激活函数是relu
  • 成本是产出与实际价值之间的平方距离
  • 我的神经网络可以与其他优化器(例如 GradientDescent、Adam、Adagrad)正确训练。

然而,当我尝试使用 Adadelta 时,神经网络根本无法训练。每一步的变量都保持不变。

我尝试过每个可能的初始学习率(从 1.0e-6 到 10)和不同的权重初始化:它总是相同的。

有人知道发生了什么事吗?

非常感谢


简短回答:不要使用 Adadelta

今天很少有人使用它,你应该坚持:

  • tf.train.MomentumOptimizer with 0.9动量非常标准并且效果很好。缺点是你必须找到自己最好的学习率。
  • tf.train.RMSPropOptimizer:结果较少依赖于良好的学习率。这个算法是与阿达德尔塔非常相似,但在我看来表现更好。

如果您确实想使用 Adadelta,请使用论文中的参数:learning_rate=1., rho=0.95, epsilon=1e-6。一个更大的epsilon一开始会有帮助,但要准备好比其他优化器等待更长的时间才能看到收敛。

请注意,在论文中,他们甚至没有使用学习率,这与保持它等于1.


长答案

Adadelta 的起步非常缓慢。完整的算法来自paper http://www.matthewzeiler.com/pubs/googleTR2012/googleTR2012.pdf is:

问题是它们累积了更新的平方。

  • 在第 0 步,这些更新的运行平均值为零,因此第一次更新将非常小。
  • 由于第一次更新很小,所以一开始更新的运行平均值会很小,这在开始时是一种恶性循环

我认为 Adadelta 在更大的网络上表现得比你的更好,并且经过一些迭代后它应该等于 RMSProp 或 Adam 的性能。


这是我使用 Adadelta 优化器的代码:

import tensorflow as tf

v = tf.Variable(10.)
loss = v * v

optimizer = tf.train.AdadeltaOptimizer(1., 0.95, 1e-6)
train_op = optimizer.minimize(loss)

accum = optimizer.get_slot(v, "accum")  # accumulator of the square gradients
accum_update = optimizer.get_slot(v, "accum_update")  # accumulator of the square updates

sess = tf.Session()
sess.run(tf.initialize_all_variables())

for i in range(100):
    sess.run(train_op)
    print "%.3f \t %.3f \t %.6f" % tuple(sess.run([v, accum, accum_update]))

前 10 行:

  v       accum     accum_update
9.994    20.000      0.000001
9.988    38.975      0.000002
9.983    56.979      0.000003
9.978    74.061      0.000004
9.973    90.270      0.000005
9.968    105.648     0.000006
9.963    120.237     0.000006
9.958    134.077     0.000007
9.953    147.205     0.000008
9.948    159.658     0.000009
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何正确设置Tensorflow中Adadelta算法的参数? 的相关文章

  • python sqlite ValueError:无法解析日期时间字符串

    我有一个 txt 文件 用于填充 sqlite 表 FoodConsumed tb class FoodConsumed Tb db Model tablename foodconsumed tb id db Column db Integ
  • async for 的语义等价物

    从相对于的文档async for根据 Python 3 5 中的语法 我发现引入它是为了迭代可等待的迭代器 不过 在描述之后的语义等价物中 我没有得到一些东西 iter ITER iter type iter aiter iter runn
  • PyCharm 中基于类型的自动补全

    我正在使用 PyCharm 进行 python 编码 PyCharm 中的自动完成功能不如 IntelliJ Java 中的自动完成功能 考虑下面的代码 a 1 2 3 4 a 在这种情况下 当我按下dot PyCharm 提供了全套自动完
  • Python中字典转小写

    我希望这样做 但为了一本字典 My string lower 是否有内置函数或者我应该使用循环 您将需要使用循环或列表 生成器理解 如果你想将所有的键和值都小写 你可以这样做 dict k lower v lower for k v in
  • Python 中的双 SSH 隧道

    今天 我在命令行中使用 ssh 将端口从远程服务器转发 使用中间服务器到我的本地计算机 这是我在 shell 中使用的命令 ssh user remote server L 2443 localhost 433 此 ssh 会话使用 ssh
  • 如何获取 Tkinter 标签文本?

    我正在制作一个用户将从中选择的地址列表 并且将返回地址文本 我需要使用Tkinter Label因为Tkinter Listbox不允许换行 关键是没有 get Label 类中的类似方法 我知道我可以做类似的事情 v StringVar
  • Keras Lambda 层何时生成随机数?

    我想将简单的数据增强 输入向量乘以随机标量 应用于 Keras 中实现的完全连接的神经网络 Keras 具有很好的图像增强功能 但尝试使用它对于我的输入 1 张量 来说似乎很尴尬且缓慢 其训练数据集适合我的计算机内存 相反 我想象我可以使用
  • 为什么线性读-混洗写并不比混洗读-线性写快?

    我目前正在尝试更好地了解内存 缓存相关的性能问题 我在某处读到 内存局部性对于读取比对于写入更重要 因为在前一种情况下 CPU 必须实际等待数据 而在后一种情况下 它可以将它们发送出去并忘记它们 考虑到这一点 我做了以下快速而肮脏的测试 我
  • 如何在条形图上添加值标签

    我正在创建一个条形图 但我不知道如何在条形图上添加值标签 在条形图的中心或正上方 我相信解决方案是使用 文本 或 注释 但我 a 不知道该使用哪一个 一般来说 还没有弄清楚何时使用哪一个 b 无法看到任何一个来呈现值标签 这是我的代码 im
  • matplotlib中有制作散点图矩阵的函数吗?

    散点图矩阵示例 matplotlib pyplot中有这样的函数吗 对于那些不想定义自己的函数的人来说 Python 中有一个很棒的数据分析库 称为Pandas http pandas pydata org 在那里可以找到分散矩阵 http
  • 设置ntlk代理

    我正在关注第一章NLTK书 http www nltk org book ch01 html frequency distributions 它要求我们通过运行来安装图书语料库nltk dowwnload 我正进入 状态getattrinf
  • 如何找到 libstdc++.so.6: 包含适用于 RHEL 6 的 GLIBCXX_3.4.19 ?

    我使用 Linux 服务器 gt cat etc redhat release Red Hat Enterprise Linux Server release 6 7 Santiago 来自维基百科 红帽企业 Linux 6被分叉自软呢帽
  • RuntimeError:期望后端 CUDA 对象,但获得后端 CPU 作为参数:ret = torch.addmm(torch.jit._unwrap_Optional(bias), input, Weight.t())

    当 的时候forward我的神经网络的功能 训练阶段完成后 正在执行 我正在经历RuntimeError Expected object of backend CUDA but got backend CPU for argument 4
  • 在Python中根据等级和花色对一手牌进行排序

    我正打算制作一款纸牌游戏 目前我正在着手开发它 我感到困惑的是 按牌的等级对手中的牌进行排序 然后按花色排序 以及如何减少重复 目前 我可能可以创建一个 for 循环来组织卡片 然后为每种可能性设置 52 个不同的 if 但我想知道它们是否
  • f2py:公开“已使用”模块的参数

    我认为这个问题已经在某个地方得到解决 但我花了大量的时间四处寻找答案 包括深入研究源代码 我试图将问题放在第一段中 其余部分显示了问题的基本示例 我正在尝试编译一个包含USE指向另一个更通用的模块的语句 我更愿意将使用的模块分开 以便它可以
  • 为什么不使用输出张量的最大值而不是 Softmax 函数?

    我在图像一类分类上建立了 CNN 模型 输出张量是一个包含 65 个元素的列表 我将这个张量输入到 Softmax 函数中 并得到分类结果 我认为这个输出张量中的最大值就是分类结果 为什么不使用这种方式来做分类任务呢 只是Softmax函数
  • 传递到 Flask 的可能路线列表?

    我正在学习 Flask 有一个关于动态路由的问题 是否可以传入接受的路由列表 我注意到any转换器具有潜力 但很难找到使用中的示例 基本上我有不同的端点组 它们应该在它们之间触发相同的操作 这就是我的意思 cities New York L
  • 为什么我不能将 addstr() 添加到 pythoncurses 窗口中的最后一行/列?

    使用Python 我尝试使用addstr 将光标位置写入curses 窗口的右下角 但出现错误 ScreenH 2工作正常 但打印在窗口底部的第二行 ScreenH 1根本不起作用 我究竟做错了什么 import curses Screen
  • Python,将 mongodump 的 bson 输出转换为 json 对象数组(字典)

    我已经使用转储了 mongodb 集合mongodump命令 输出是一个转储目录 其中包含以下文件 dump coll bson coll metadata json 如何将导出的文件打开到在 python 中工作的字典数组中 我尝试了以下
  • 在Python中使用argparse解析整个JSON

    我正在尝试使用 ARGPARSE 库在一个简单的参数中解析整个 Json 问题是当它遇到儿子内部的不同元素 例如 和 时 它会突然停止 这是测试代码 parse py import argparse parser argparse Argu

随机推荐

  • 在 Blazor SPA 上嵌入 Leaflet 地图

    如何在 Blazor SPA 上嵌入 Leaflet 地图 使用 JSInterop 应定义哪些对象以及如何将表示在地图上单击的位置的数据从 JavaScript 传递到 Blazor 注意 下面的示例代码是在独立的 WebAssembly
  • 使用 dplyr 进行括号转义的表名称

    我正在以编程方式获取一堆数据集 其中许多数据集都有以数字开头的愚蠢名称 并且其中包含特殊字符 例如减号 因为没有一个数据集特别大 而且我希望 R 能够对数据类型做出最好的猜测 所以我使用 dplyr 将这些表转储到 SQLite 中 我使用
  • 在 Oracle SQL Developer 中连接表

    我有四个表 我想将它们连接起来并一起显示输出 我不确定 Oracle SQL Developer 的语法如何工作 我知道这对于程序员来说是一个简单的问题 我希望有人可以就代码的外观提出建议 The tables are JNL1 JNL2
  • 如何仅对元素的子元素运行 getElementsByTagName?

    我无法让选择器正常工作 我有这个 HTML
  • nginx 服务器配置:子域到文件夹

    我从 Apache2 迁移到 nginx 在处理子域控制时遇到问题 我想要什么 当请求 x domain tld 时 内部重写为domain tld x 我遇到的问题是 nginx 总是通过告诉浏览器重定向到来重定向页面 但我真正想要的是在
  • C# 求解最简单的方程

    在 C 中 我正在寻找一种方法来求解这样的简单方程 Z A B 我正在尝试构建一个类 如果我给出其他两个参数中的任何一个 它会给我第三个参数 给定示例Z A B 如果你知道的话A 3 and B 6那么你知道Z 9 如果你知道的话A 4 a
  • 如何让 GELFJ 附加器在 log4j 中工作?

    我需要让我的 Java 应用程序将日志记录写入 Graylog2 服务器 该应用程序使用 log4j 配置 我尝试过将日志写入 Graylog2 服务器的几件事 我所做的事情是将测试消息直接发送到服务器 如图所示here https git
  • .hasMany 调用的内容不是 Sequelize.Model 的子类

    我正在尝试在两个模型之间引用外键 但我收到此错误 throw new Error this name hasMany called with something that s not a subclass of Sequelize Mode
  • 与 Selenium 的模糊截图比较

    我正在使用 Selenium 来自动化网页功能测试 当我们推出新代码时 进行逐像素比较非常重要 因此我们使用 Selenium 来截取屏幕截图并比较 Base64 编码的字符串以查看是否有任何更改 我们发现在实践中 很难获得完全的像素一致性
  • 如何通过 jq 使用特殊字符访问属性? [复制]

    这个问题在这里已经有答案了 给定这个 json 文件wtf json I am test v2 exist true works exist true 我可以通过以下方式验证它是否具有这些密钥 jq keys wtf json I am t
  • Python:如何在未处理的异常后控制命名空间?

    有什么方法可以控制在未处理的异常之后最终进入哪个命名空间 例如 在 IPython 提示符中 run myscript py在包含以下内容的文件上 def spam ham ham crash 1 0 eggs eggs if name m
  • 将 unicode 转换为 html 实体十六进制

    如何将 Unicode 字符串转换为 HTML 实体 HEX非十进制 例如 转换Fran ais to Fran xE7 ais 对于缺少的十六进制编码相关问题 https stackoverflow com a 11310258 3674
  • jQuery:如何用反斜杠转义单引号和双引号

    我想在一行而不是两行中使用反斜杠转义单引号和双引号 单引号示例 str str replace g 有没有办法同时对包含的双引号执行此操作 嗅探器在下面很好地回答了这个问题 我最终转义了我们需要的所有字符 如下所示 str str repl
  • 如何将照片和视频加载到Iphone Simulator 4.0

    有没有办法将照片和视频加载到iPhone模拟器4 0中 此致 穆罕默德 萨迪克 诀窍是 退出模拟器 使用 Finder 将照片添加到 iPhone Simulator 4 0 1 Media DCIM 100APPLE 文件夹 删除 iPh
  • 呼叫日志返回所有呼叫日志以及短信日志,我如何仅过滤呼叫日志?

    我正在努力获得所有Call Logs excluding SMS但我得到一个合并列表 如何仅过滤通话记录 我正在使用以下代码 String strFields android provider CallLog Calls NUMBER an
  • Android - Firebase - 电子邮件地址格式错误

    Aim 允许用户注册他们的首选显示名称 家庭地址 email and password通过利用Firebase 身份验证 电子邮件和密码 Java类 import android content Intent import android
  • 为什么 CSS 中没有 // 注释? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 注释在样式表中起作用 而 注释则不起作用 https stackoverflow com questions 2479351 why do comments work in styleshee
  • ssh-keygen 找不到 ssh_askpass

    我正在尝试在 Windows 上为 Git 生成 SSH 密钥 我刚刚安装了 2 18 0 但它没有找到名为 ssh askpass 的东西 d src py gt ssh keygen b 4096 C email protected c
  • pytz 时区标签来调整模板中打印的日期

    在我的应用程序中 我使用普通的日期时间对象 在我的模板中 load tz datetimeobject timezone Europe Paris timezone Europe Paris datetimeobject endtimezo
  • 如何正确设置Tensorflow中Adadelta算法的参数?

    我一直在使用 Tensorflow 进行回归 我的神经网络非常小 有 10 个输入神经元 单层 12 个隐藏神经元和 5 个输出神经元 激活函数是relu 成本是产出与实际价值之间的平方距离 我的神经网络可以与其他优化器 例如 Gradie