NB。输入Datax =:4 2 $ 0 0 0 1 1 0 1 1
NB。初始化权重B / W _1和1NB。请参阅https://code.jsoftware.com/wiki/vocabulary/dollar#dyadicinit_weights =:3:' scale" 0 y?@ $ 0'
w_hidden =:init_weights 2 2w_output =:init_weights 2b_hidden =:init_weights 2b_output =:scale? 0.
sigmoid =:monad定义%1 + ^ - y)sigmoid_ddx =:3:' y *(1-y)'
NB。向前Bulforward =:Dyad定义' wh wo bh bo' =。 x hidden_layer_output =。 SIGMOID(BH +" 1 x(点" 1 2)wh)预测=。 sigmoid(bo + wo dot" 1 hidden_layer_output)(hidden_layer_output;预测))
火车=:Dyad定义' x y' =。 x' wh wo bh bo' =。 Y' hidden_layer_output预测' =。 y转发x l1_err =。 y - 预测l1_delta =。 l1_err * sigmoid_ddx预测hidden_err =。 l1_delta * / wo hidden_delta =。 hidden_err * sigmoid_ddx hidden_layer_output wh_adj =。 wh +(|:x)点hidden_delta wo_adj =。 WO +(|:hidden_layer_output)点l1_delta bh_adj =。 + / bh,hidden_delta bo_adj =。 + / bo,l1_delta(wh_adj; wo_adj; bh_adj; bo_adj))
在发生时,该J码的速度远远超过等效使用Numpy(0.13s与0.59s)。
我非常好奇为什么J为什么更加表现。我从1978年开始阅读APL,并且与传统的编程语言相比,APLHA与阵列环境相比相当几个差异。