足够的J Matrix性能

2021-06-11 13:07:03

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与阵列环境相比相当几个差异。