繁体   English   中英

Erlang生成过程错误(人工神经网络)

[英]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:runann: 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM