Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PythonライブラリをElixirで開発してみた

Cddce6ee5ec153c8dade038f6f75ff04?s=47 yujikawa
December 22, 2017

 PythonライブラリをElixirで開発してみた

PythonのnumpyをElixirで開発を行いました。

Cddce6ee5ec153c8dade038f6f75ff04?s=128

yujikawa

December 22, 2017
Tweet

Transcript

  1. &MJYJSͰ։ൃͯ͠Έͨ 1ZUIPOϥΠϒϥϦΛ GVLVPLBFY Ώ͔͡Θ!ZVKJLBXB@QZ

  2. ࣗݾ঺հ w ໊લ w ઒্༞࢘ Ώ͔͡Θ  w ॴଐ w

    ΧϥϏφςΫϊϩδʔ w ৬छ w όοΫΤϯυΤϯδχΞ w 5XJUUFS w !ZVKJLBXB@QZ w ීஈͷ͓࢓ࣄ w 1ZUIPOΛ࢖ͬͨγεςϜ։ൃ w ͦͷ͏ͪ&MJYJSͷγεςϜ։ൃ΍ΔΑɾɾʁ w ϓϥΠϕʔτ w &MJYJSษڧதʢ̎Χ݄͙Β͍ʁʣ w 1Z'VLVPLBͷ؅ཧਓ΍͍ͬͯ·͢
  3. ͳͥϥΠϒϥϦ։ൃʁ w ϓϩάϥϛϯά&MJYJSΛڭՊॻʹຖ೔ίπίπษڧ w ڭՊॻͷ಺༰Λͣͬͱ΍͍ͬͯͯ๞͖͖ͯͨɻʢେࣄ͚ͩͲʣ w Կ͔࡞Δ͜ͱͰ৭ʑௐ΂ΔͷͰɺษڧʹͳΔͱࢥͬͨɻ w Կ͔࡞Δ͜ͱ͸Ϟνϕʔγϣϯ্͕͕Δɻ w

    8FCΞϓϦΑΓखܰͳ੒Ռ෺ʹ͔ͨͬͨ͠ɻ
  4. ԿΛ࡞ͬͨͷ͔ʁ w 1ZUIPOͷ/VNQZΛ&MJYJSͰ࣮૷ͯ͠Έ·ͨ͠ɻ w /VNQZ w ߦྻܭࢉͳͲΛߦ͑ΔϥΠϒϥϦʔ

  5. ͦͷ໊΋ʮ/VNFYZʯ w ಡΈํ͸ʮφϝΫγʔʯͰ͢

  6. ͲΜͳײ͔͡ʁ ϕΫτϧΛ࡞Δ &MJYJS iex> x = Numexy.new([1,2,3]) %Array{array: [1, 2,

    3], shape: {3, nil}} 1ZUIPO In [1]: numpy.array([1,2,3])
  7. ͲΜͳײ͔͡ʁ ϕΫτϧͷ಺ੵ &MJYJS iex> x = Numexy.new([1,2,3]) %Array{array: [1, 2,

    3], shape: {3, nil}} iex> y = Numexy.new([1,2,3]) %Array{array: [1, 2, 3], shape: {3, nil}} iex> Numexy.dot(x, y) 14 1ZUIPO In[1]: numpy.dot(x, y)
  8. ͲΜͳײ͔͡ʁ ࿦ཧճ࿏ʢ903Λ࡞Δʣ ANDճ࿏ def lgAND(x1,x2) do x = Numexy.new([x1, x2])

    w = Numexy.new([0.5, 0.5]) b = -0.7 Numexy.mul(x, w) |> Numexy.sum |> Kernel.+(b) |> output end NANDճ࿏ def lgNAND(x1,x2) do x = Numexy.new([x1, x2]) w = Numexy.new([-0.5, -0.5]) b = 0.7 Numexy.mul(x, w) |> Numexy.sum |> Kernel.+(b) |> output end ORճ࿏ def lgOR(x1,x2) do x = Numexy.new([x1, x2]) w = Numexy.new([0.5, 0.5]) b = -0.2 Numexy.mul(x, w) |> Numexy.sum |> Kernel.+(b) |> output end
  9. ͲΜͳײ͔͡ʁ ࿦ཧճ࿏ʢ903Λ࡞Δʣ iex> lgXOR(0,0) 0 iex> lgXOR(1,0) 1 iex> lgXOR(0,1)

    1 iex> lgXOR(1,1) 0 ࣮ߦ݁Ռ XORճ࿏ def lgXOR(x1,x2) do lgAND(lgNAND(x1, x2), lgOR(x1, x2)) end
  10. ͦͷଞؔ਺ ৄࡉ͸υΩϡϝϯτʹॻ͍͍ͯ·͢ɻIUUQTIFYEPDTQNOVNFYZ/VNFYZIUNM w BEE w NVM w POFT w [FSPT

    w TVN w BWH w USBOTQPTF w BSHNBY
  11. ผࢴɿϥΠϒϥϦ։ൃखॱ ৽نϓϩδΣΫτ࡞੒ NJYOFXQSPKFDU@OBNF ޷͖ͳΑ͏ʹ։ൃɾɾɾ

  12. ผࢴɿϥΠϒϥϦެ։खॱ ᶃ)FYΞΧ΢ϯτͷ࡞੒ʢαΠτͰొ࿥΋Մʣ ίϚϯυͰ΍Δ৔߹ NJYIFYVTFSSFHJTUFS )FYͷαΠτͰొ࿥ͨ͠৔߹͸ೝূ͢Δ NJYIFYVTFSBVUI

  13. ผࢴɿϥΠϒϥϦެ։खॱ ᶄNJYFYʹFY@EPDϥΠϒϥϦΛEFQTʹ௥Ճ \FY@EPD  POMZEFW^ NJYEJQTHFU ᶅ)FY΁ެ։͢Δ NJYIFYQVCMJTI

  14. ·ͱΊ w ਺ࣜΛؔ਺Λ࢖ͬͯදݱ͢Δͱ͍͏ͷ͸ָ͘͠·͍͍ͨײ ͡ʹߟ͑ΔςʔϚͩͬͨͨΊඇৗʹษڧʹͳΓ·ͨ͠ɻ w ϥΠϒϥϦ։ൃલͱൺ΂Δͱ&OVNͷ࢖͍ํ্͕ୡͨ͠ɻ w 'MPXͰॻ͖௚ͨ͘͠ͳͬͨɻ

  15. ྑ͍ϥΠϒϥϦ։ൃϥΠϑΛʂ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠