torch7 gnuplot 包中的错误? (Ubuntu 16.04)

Posted

技术标签:

【中文标题】torch7 gnuplot 包中的错误? (Ubuntu 16.04)【英文标题】:Bug in torch7 gnuplot package? (ubuntu 16.04) 【发布时间】:2017-10-27 01:59:06 【问题描述】:

似乎 gnuplot 正在将所有浮点值四舍五入为整数。绘制线条或曲面时,例如使用documentation

中的这两行
x=torch.linspace(-2*math.pi,2*math.pi)
gnuplot.plot(torch.sin(x))

我得到

而不是

正如预期的那样,print(torch.sin(x):type()) 说张量确实是 torch.FloatTensor,所以我不明白在哪里可以进行舍入。

我尝试了最新的torch7版本并使用luarocks安装了gnuplot,但结果是一样的。我不认为问题出在 gnuplot 本身,因为例如,我可以毫无问题地从 octave 使用它。

【问题讨论】:

我对这段代码没有任何问题。你能打印torch.sin(x)看看值是否正确吗? 这不是真正的四舍五入,sin(-2*pi) 应该是 0 而不是 -1,同义的 sin(2*pi) 不是 1 是的,这些值是正确的。你对 sin(x) 的事情是绝对正确的,但这就是为什么我选择了舍入这个词,而不是 ceil 或 floor。不过,我承认这也不是一个好的选择。我不知道它如何决定向更低或更高的值舍入,但从我所看到的(例如,通过观察训练错误图)来看,它无法表示浮动值。我使用的粗俗技巧只是将我的值乘以一个非常大的因子,所以我可以看到情节中发生了什么...... 这很奇怪......你的电脑上安装的是什么版本的 gnuplot (gnuplot --version)?如果您对您的 hack 不完全满意,您可以查看显示包 (github.com/szym/display#plotting),它提供了很好的功能来绘制曲线、缩放等... gnuplot 5.0 补丁级别 3。感谢您的提示,该软件包看起来是个不错的选择。 【参考方案1】:

我终于找到了问题所在。默认使用的语言环境是法语,因此浮点数使用逗号而不是点表示(例如 1,2 而不是 1.2)。这似乎导致 Gnuplot 截断数字(它丢弃了逗号后的所有内容)。所以,解决办法就是

os.setlocale('C')

【讨论】:

以上是关于torch7 gnuplot 包中的错误? (Ubuntu 16.04)的主要内容,如果未能解决你的问题,请参考以下文章

馈送图像时torch7尺寸不匹配

torch7 的意外行为

这个钻石继承UB是MinGW中的一个错误吗?

安装torch7时出现致命错误:errno.h: No such file or directory

Torch7,如何计算一个convNet中的参数个数

gnuplot:静默错误读取(非标准形式)科学格式数字