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)的主要内容,如果未能解决你的问题,请参考以下文章