packages feed

apple-0.2.0.0: test/examples/xor.apple

-- see: https://towardsdatascience.com/implementing-the-xor-gate-using-backpropagation-in-neural-networks-c1f255b4f20d
{ X ⟜ ⟨⟨0,0⟩,⟨0,1⟩,⟨1,0⟩,⟨1,1⟩⟩;
  Y ⟜ ⟨0,1,1,0⟩;
  sigmoid ← [1%(1+ℯ(_x))];
  sDdx ← [x*(1-x)];
  sum ⇐ [(+)/x];
  forward ← λwh.λwo.λbh.λbo.
    -- ho: 4x2
    { ho ← sigmoid`{0} ([(+)`bh x]'(X%.wh))
    -- prediction: 4
    ; prediction ← sigmoid'((+bo)'(ho%:wo))
    ; (ho,prediction)
    };
  -- wh: 2x2 wo: 2 bh: 2 bo: (scalar)
  train ← λinp.
    { wh ← inp->1; wo ← inp->2; bh ← inp->3; bo ← inp->4
    ; o ← forward wh wo bh bo
    ; ho ⟜ o->1; prediction ⟜ o->2
    ; l1E ← (-)`prediction Y
    ; l1Δ ← (*)`(sDdx'prediction) l1E -- 4
    ; he ← l1Δ (*)⊗ wo -- 4x2
    ; hΔ ← (*)`{0,0} (sDdx`{0} ho) he -- 4x2
    ; wha ← (+)`{0,0} wh ((|:X)%.hΔ)
    ; woa ← (+)`wo ((|:ho)%:l1Δ)
    ; bha ← sum'((<|)`{0,1} bh hΔ)
    ; boa ← bo + sum l1Δ
    ; (wha,woa,bha,boa)
    };
  wh ⟜ 𝔯_1 1;wo ⟜ 𝔯_1 1;bh ⟜ 𝔯_1 1;bo ⟜ 𝔯_1 1;
  train^:10000 (wh,wo,bh,bo)
}