[英]Erlang spawn process error (artificial neural network)
您好Erlang初学者,在这里尝试根据Wil Chung的本教程实现基本的ANN(人工神经网络)。 该代码与他的github repo中的代码完全相同。
运行此:
1> ann_test:run()。
导致一堆(准确地说是五个)错误,如下所示:
=错误报告===== 2015年2月18日:: 07:11:49 ===进程<0.60.0>中的错误,退出值为:{undef,[{ann,perceptron,[[],[], []],[]}]}
=错误报告==== 2015年2月18日:: 07:11:49 ===进程<0.61.0>中的错误,退出值为:{undef,[{ann,perceptron,[[],[], []],[]}]}
以某种方式在ann_test.erl中生成进程:
X1_pid = spawn(ann,perceptron,[[],[],[]]),
会引起麻烦,但我不确定如何找到它。 尝试使用redbug将问题指向ann_test:run和ann: perceptron来定位问题,但是它什么也没有显示。 还尝试将process_flag(trap_exit,true)添加到run()中,但是再也没有。 还尝试添加-compile(export_all)以防万一。
谁能指出我正确的方向? 非常感谢。
这段代码有错误。 此错误意味着没有与参数匹配的导出函数ann:perceptron/3
。 只有ann:perceptron/4
。 可以在ann_test:setup/0
正确使用它,因此要修复它,只需添加另一个空列表:
run() ->
ann_graph:start(),
X1_pid = spawn(ann, perceptron, [[],[],[]]),
X2_pid = spawn(ann, perceptron, [[],[],[]]),
H1_pid = spawn(ann, perceptron, [[],[],[]]),
H2_pid = spawn(ann, perceptron, [[],[],[]]),
O_pid = spawn(ann, perceptron, [[],[],[]]),
改成:
run() ->
ann_graph:start(),
X1_pid = spawn(ann, perceptron, [[],[],[],[]]),
X2_pid = spawn(ann, perceptron, [[],[],[],[]]),
H1_pid = spawn(ann, perceptron, [[],[],[],[]]),
H2_pid = spawn(ann, perceptron, [[],[],[],[]]),
O_pid = spawn(ann, perceptron, [[],[],[],[]]),
请注意,该代码在执行后不会清除,并且最终在同一会话中重新执行后会出现错误。 要杀死已注册的进程ann_grapher
,可以使用exit(whereis(ann_grapher), kill).
您可以通过以下方式读取此错误消息{undef,[{ann,perceptron,[[],[],[]],[]}]}
:
undef
) ann
perceptron
[[], [], []]
这是正确的,因为只有一个定义需要4个参数,而不是3个。 在ann_test:setup
,产生了带有四个空列表的perceptron
。 你可以试试看。
换句话说,错误按摩中的元组具有结构{Module, Function, ListOfArguments, NotSureWhatThatIs}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.