小编for*_*ger的帖子

单元测试机器学习代码

我正在为计算机视觉论文编写一个相当复杂的机器学习程序.它工作得很好,但我需要继续尝试新的东西并添加新的功能.这是有问题的,因为我在扩展代码或尝试简化算法时有时会引入错误.

显然,正确的做法是添加单元测试,但目前尚不清楚如何做到这一点.我的程序的许多组件产生了一些主观的答案,我无法自动进行健全性检查.

例如,我有一些代码使用较低分辨率的曲线近似曲线,因此我可以在较低分辨率的曲线上进行计算密集型工作.我不小心在这段代码中引入了一个错误,只有当我整个程序的结果稍差时,才会通过艰苦的搜索找到它.

但是,当我尝试为它编写单元测试时,我不知道应该做什么.如果我制作一个具有明确正确的低分辨率版本的简单曲线,那么我并没有真正测试出错的一切.如果我做一个简单的曲线,然后稍微扰乱点,我的代码开始产生不同的答案,即使这个特定的代码片段现在似乎真的很好.

unit-testing machine-learning

30
推荐指数
4
解决办法
4508
查看次数

Ocaml如何确定用户定义运算符的优先级?

我想要复杂算术的好运算符,以使我的代码更具可读性.Ocaml有一个Complex模块,所以我只想添加调用这些函数的运算符.

对我来说最直观的方法是通过将"&"附加到运算符符号,从所有常用运算符创建一个新的复杂运算符.因此+&和*&将是复杂的加法和乘法.我也想〜和复杂的共轭.

如果我要使用这些运算符,我希望它们与普通算术关联的方式相关联.基于以下会话,它们会按照我想要的方式自动运行,但我想了解原因,以便在引入更多运算符时不会出现可怕的错误.

我目前的猜测是,它们的优先级是通过根据与正常算术优先级一致的排序对操作符号进行词法排序来完成的.但我无法证实这一点.

第一节:

# open Complex;;
# let (+&) a b = add a b;;
val ( +& ) : Complex.t -> Complex.t -> Complex.t = <fun>
# let ( *&) a b = mul a b;;
val ( *& ) : Complex.t -> Complex.t -> Complex.t = <fun>
# one +& zero *& one +& zero *& one;;
- : Complex.t = {re = 1.; im = 0.}
# zero +& one *& zero +& one *& …
Run Code Online (Sandbox Code Playgroud)

ocaml

11
推荐指数
2
解决办法
3207
查看次数

使用带有tf.Estimator的Tensorflow分析器

我需要使用Tensorflow分析器来分析一些由于某种原因而运行缓慢的代码.不幸的是,有问题的代码使用tf.Estimator,所以我无法弄清楚如何注入运行元数据对象到会话中的run()调用,以获取信息的探查需求.

我该怎么办?

python tensorflow tensorflow-estimator

5
推荐指数
1
解决办法
2356
查看次数

Emacs折叠模式错误

我希望能够使用http://www.emacswiki.org/emacs/FoldingMode中的folding.el提供的emacs折叠模式

我将以下内容放在我的.emacs文件中:

(setq load-path (cons (concat (getenv "HOME") "/.emacs.d") load-path))
(load "folding")
(folding-mode-add-find-file-hook)
(folding-add-to-marks-list 'latex-mode   "%{"  "%}"  nil t)
Run Code Online (Sandbox Code Playgroud)

然后,当我选择一个区域并运行时

M-x folding-fold-region
Run Code Online (Sandbox Code Playgroud)

我收到了错误

Wrong type argument: char-or-string-p, nil
Run Code Online (Sandbox Code Playgroud)

emacs elisp dot-emacs emacs23

3
推荐指数
1
解决办法
679
查看次数