为什么我的 GradientDescentOptimizer 会产生 NaN?

2024-06-24

我目前正在修改 Andrew Ng 教授在 Coursera 上的“机器学习”课程作业,但我陷入了逻辑回归部分。

filename = 'data/ex2data1.txt'
data = np.loadtxt(filename, delimiter = ",", unpack = True)

# Data matrices
xtr = np.transpose(np.array(data[:-1]))
ytr = np.transpose(np.array(data[-1:]))

# Initial weights
W = tf.Variable(tf.zeros([2,1], dtype = tf.float64))

# Bias
b = tf.Variable(tf.zeros([1], dtype = tf.float64))

# Cost function
y_ = tf.nn.sigmoid(tf.matmul(xtr,W) + b)

cost = -tf.reduce_mean(ytr*tf.log(y_) + (1-ytr)*tf.log(1-y_))
optimize = tf.train.GradientDescentOptimizer(0.01).minimize(cost)

corr = tf.equal(tf.argmax(ytr,1), tf.argmax(y_,1))
acc = tf.reduce_mean(tf.cast(corr, tf.float64))

init = tf.initialize_all_variables()

with tf.Session() as sess:
    sess.run(init)
    print(sess.run(cost))
    for _ in range(3):
        sess.run(optimize)
        print(sess.run(cost))

这产生了答案:

0.69314718056
nan
nan
nan

成本函数的第一个结果是正确的,但接下来的结果应该是:

3.0133
1.5207
0.7336

相反,我得到了一堆 NaN。我尝试过降低学习率,但都无济于事。我究竟做错了什么?是否可以在 TensorFlow 中重现此作业?

PS:其他 python 解决方案似乎正在使用 scipy.optimize,但我不知道如何将其与 TensorFlow 值一起使用,并且如果可能的话,我只想使用 TensorFlow。

编辑:我也尝试将偏差设置为 tf.ones 而不是 tf.zeros,但它也不起作用。


您的对数没有净化输入。很有可能您的负输入值很快就会导致任何浮点数算术 NaN。

我在 Java 代码中所做的大量使用类似域中的日志: https://github.com/thomasjungblut/thomasjungblut-common/blob/master/src/de/jungblut/math/MathUtils.java#L302

  • 检查 NaN 或无穷大并假设输出为零
  • 如果输入为负,则将输出剪辑为某个静态数字,例如。 log(1e-5) ~= -11.51
  • 否则只取日志

在 Java 中,代码如下所示,应该不难翻译为 tf:

public static double guardedLogarithm(double input) {
    if (Double.isNaN(input) || Double.isInfinite(input)) {
      return 0d;
    } else if (input <= 0d || input <= -0d) {
      // assume a quite low value of log(1e-5) ~= -11.51
      return -10d;
    } else {
      return FastMath.log(input);
    }
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的 GradientDescentOptimizer 会产生 NaN? 的相关文章

随机推荐

  • Angular ng-repeat 导致闪烁

    我正在使用以下代码显示缩略图列表 div class channel img class channel img div 在控制器中 我有一个 ajax 请求 它可以获取新的缩略图 因此 Angular 会更新图像 但会导致闪烁 有没有办法
  • 如何在 Docpad 中处理路线

    这应该是非常明显的 但我就是无法理解它 如何在 Docpad 中添加额外的路线 我正在寻找相当于express js的Docpad app post function res req next Do stuff 据我所知 我需要为此创建一个
  • dynamodb:如何增加地图中的值

    我正在尝试使用 dynamodb 来维护map名称及其值 eg scores player a 10 我还希望使用增量运算符来执行原子增量 但是 我找不到关于如何使用 更新 dynamodb 地图的文档 这是我到目前为止的Python代码
  • DOMXPath 根据前一个同级值获取同级

    假设我有这个
  • 如何使用 Calc 列规则在 Emacs Org 模式中实现行索引列

    我希望在组织模式表中有一个列是一个简单的单调递增值 即行号 这样当我插入和删除随机行时索引值会自动调整 我怀疑这应该很简单 但看起来我让它变得太困难了 请注意 我是使用 Emacs 和 org 模式构建电子表格的新手 因此 一个简单的电子表
  • d3-sankey 链接在拖动事件时未更新

    问题一 我无法更新拖动事件上的 d3 sankey 链接 我正在尝试复制与此类似的 d3 垂直和水平拖动事件 https bl ocks org d3noob 5028304 https bl ocks org d3noob 5028304
  • 如何使用 angularjs 动态添加行?

    我使用代码通过单击 添加行 来添加行和 2 列 我的需要是 首先在输入字段中填写值 单击 添加项目 按钮后 值必须显示在表结构中 我是初学者 无法使用 for 循环 任何人都可以解决这个问题吗 尝试代码 https jsfiddle net
  • 如何有效地将图像从服务器加载到tableView?

    我有一个表格视图 其中所有单元格都有 UITableViewCellStyleSubtitle 所有细胞的图像均从服务器获取 然而 这些图像并不经常改变 有人可以告诉我如何改善用户体验吗 每次用户向下滚动表格时 就好像它再次上网检查和下载图
  • Windows 上的 DLL Main 与 Windows 上的 DLL Main Linux 上的 __attribute__((constructor)) 入口点

    考虑代码 EXE int main printf Executable Main loading library n ifdef HAVE WINDOWS HMODULE lib LoadLibraryA testdll dll elif
  • 以科学计数法的格式显示数组

    我想以科学计数法显示我的结果 例如 1 2e3 我的数据是数组格式 有没有类似的函数tolist 可以将数组转换为浮点数 以便我可以使用 E 来格式化输出 这是我的代码 import numpy as np a np zeros shape
  • 如何将wiremock POST 请求与一些可选的JSON 参数和任何值相匹配?

    我需要使用wiremock 来测试发送数据的POST 请求 如下所示 name known fixed value dateOfBirth 5123456789000 email known fixed value currentDate
  • 如何在RESTEasy客户端框架中设置HTTP标头?

    RESTEasy 一个 JAX RS 实现 有一个很好的客户端框架 http docs jboss org resteasy docs 2 0 0 GA userguide html RESTEasy Client Framework ht
  • 单击按钮文本并释放按钮时按钮元素不会触发单击事件(但仍在按钮内部)?

    在 WebKit 浏览器上 我在 Mac 上的 Chrome 和 Safari 上进行了测试 按钮元素的行为很奇怪 温在这把小提琴中http jsfiddle net 5ReUn 3 http jsfiddle net 5ReUn 3 您执
  • Mysql 选择记录的倒数对,不重复

    我有一个包含两列的表 人物ID person id 第一个字段 id 正在与谁合作 我需要选择所有合作对 这很容易 但问题出在哪里 表有如下数据 987 102 103 104 104 103 21 102 根据这些数据 我应该有 3 个合
  • Facebook Opengraph og 的动态图像:图像元标记

    我正在尝试在 Facebook 上分享我网站上的图片 图像可以是动态的 但其他元将保持不变 有没有办法可以在 OG IMAGE 标签中拥有动态数据 或者我必须使用 FB Post API 的其他选项 是和不是 Facebook 会抓取您的网
  • 使用 ViewModel 屏蔽可为 null 的域属性

    我正在使用 Entity Framework 4 0 并使用 POCO 对象 当我从数据库填充 POCO 对象时 我将属性值转换为我自己的域对象 我们可以将其称为我的模型 当然 我的模型的字段是否可为空取决于它在数据库中映射到的值是否来自
  • 不允许 CREATE 操作

    我正在尝试利用CloudKit在我的 iOS 应用程序中 但是当我尝试为User记录类型 记录类型名为Users 我收到此错误
  • 在django上无损压缩图像

    我正在做优化 Google 建议对图像进行无损压缩 正在寻找一种在 Django 中实现这一点的方法 这是他们指定的图像 我认为为了有效地完成它 需要在系统范围内实现 可能使用中间件类 想知道以前是否有人这样做过 这是谷歌页面速度分析的链接
  • 从外部函数访问 QLCDNumber 对象

    每次线程 t1 每秒调用函数 wait thread v1 时 我的 python 脚本都需要更改一个对象 lcd p1 但是如何做到这一点呢 我不知道如何在函数内访问这个对象 有人可以帮忙吗 vazao1 12 global pulses
  • 为什么我的 GradientDescentOptimizer 会产生 NaN?

    我目前正在修改 Andrew Ng 教授在 Coursera 上的 机器学习 课程作业 但我陷入了逻辑回归部分 filename data ex2data1 txt data np loadtxt filename delimiter un