Successfully reported this slideshow.
Your SlideShare is downloading. ×

関数プログラマから見たPythonと機械学習

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 29 Ad

関数プログラマから見たPythonと機械学習

Download to read offline

2018-02-27に開催された 機械学習・ディープラーニングでPythonを使う嬉しさとツラミを分かちあう会 https://mlxse.connpass.com/event/77315/ での発表資料。

2018-02-27に開催された 機械学習・ディープラーニングでPythonを使う嬉しさとツラミを分かちあう会 https://mlxse.connpass.com/event/77315/ での発表資料。

Advertisement
Advertisement

More Related Content

Advertisement

More from Masahiro Sakai (20)

Advertisement

関数プログラマから見たPythonと機械学習

  1. 1. Python (2018-02-27) Masahiro Sakai ( ) PYTHON
  2. 2. • Twitter: @masahiro_sakai github: https://github.com/msakai/ G+: https://plus.google.com/+MasahiroSakai • : ( ) • : – ( Haskell) – –
  3. 3. • • Python • Python • ……
  4. 4. • Haskell – Haskell ( ) • Ruby – ( Python ) – Ruby-GNOME2 • Python – Chainer + α – PyPI
  5. 5. DISCLAIMER • Python – – – • Python –
  6. 6. • • • •
  7. 7. • – R MATLAB • – numpy/scipy, pandas, scikit-learn, matplotlib, Jupyter Notebook, –
  8. 8. Python • …… Python • ) numpy.array == – numpy … – Python ⇒ – sorted([np.zeros(2), np.zeros(2)]) • ( collections-extended RangeMap )
  9. 9. : …… • …… • …… • ) pandas itertuples type(next(pd.DataFrame({"x" + str(i): [i] for i in range(253)}).itertuples())) #=> pandas.core.frame.Pandas type(next(pd.DataFrame({"x" + str(i): [i] for i in range(254)}).itertuples())) #=> tuple
  10. 10. : Lisp-1 • – Scheme, JavaScript – Common Lisp, Ruby Lisp-2 ( ) • Python Ruby obj.foo(args) obj.foo(args) ( ) obj.foo() obj.foo(), obj.foo obj.foo obj.method(:foo) m(args) m.call(args), m[args]
  11. 11. : Lisp-1 • …… → → • Ruby Lisp-2 • • Python Ruby obj.foo(…) obj.foo(…), obj.foo … ( ) obj.foo() obj.foo(), obj.foo obj.foo obj.method(:foo) m(…) m.call(…), m[…]
  12. 12. • (PEP 484) • mypy def greeting(name: str) -> str: return 'Hello ' + name print(greeting(0)) # => error: Argument 1 to "greeting" has incompatible type "int"; expected "str"
  13. 13. • Haskeller – – • – → • Python Haskell – • List Tuple List ……
  14. 14. • (gradual typing) – (dynamic typing) (static typing) – Jeremy G. Siek and Walid Taha, Gradual Typing for Functional Languages, in Proceedings of the 2006 Scheme and Functional Programming Workshop • – dynamic type: Any … Any – type consistency relation: A B • A = B Any ( : int→Any Any→str) – int ⊑ Any ⊑ str • (1)
  15. 15. (2) • – Python (mypy), TypeScript, Closure, Hack, Flow, C#? – • Python – • Python (mypy) • …… – (Any ) • e.g. Blame Calculus ( ) • Python (mypy)
  16. 16. • : • (np.array, chainer.Variable ) ⇒ • shape – shape • ( : forward backward ) (1) def __call__(self, x : np.array) -> np.array:
  17. 17. • shape Array(m,n,o) …… – reshape ⇒ (c.f. ) – Haskell hmatrix API † …… • (2) † https://hackage.haskell.org/package/hmatrix-0.18.2.0/docs/Numeric-LinearAlgebra-Static.html
  18. 18. : Chainer • Chainer DSL – – type_check.expect(in_types[0].shape == in_types[1].shape) Expect: in_types[0].shape == in_types[1].shape Actual: (3,) != (2,) http://blog.unnono.net/2015/10/chainer-typecheck.html
  19. 19. (3) • • … •
  20. 20. • CPython • GPU CPU – Python …… – NN CPU – GPU ……
  21. 21. numpy • numpy • numpy ( numpy ) – : x[np.arange(x.shape[0])[:, None], p] – •
  22. 22. • ( 1 540 2.1GB ) parsy-1.1.0 290m7.032s pyparsing-2.2.0 562m41.623s funcparserlib-0.3.6 79m45.315s megaparsec-5.3.1 (Haskell) 18m12.025s attoparsec-0.13.1.0 (Haskell) 15m46.415s : Python str Haskell ByteString(bytes )
  23. 23. • : – – …… • Cython – –
  24. 24. • – CPython (Go ) • GIL (Global Interpreter Lock) – CPython …… ONNX-Chainer ……
  25. 25. • Python • Python – – Python •

×