Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

20190907 Julia the language for future

158 visualizaciones

Publicado el

Talk in AIA Taichung

Publicado en: Software
  • Sé el primero en comentar

20190907 Julia the language for future

  1. 1. 1
  2. 2. 2
  3. 3. 3
  4. 4. python ★ 26,156 golang ★ 62,354 nodejs ★ 63,620 rust ★ 38,548
  5. 5. 5
  6. 6. 6
  7. 7. 7
  8. 8. 8 Rapid development Performance
  9. 9.       9
  10. 10. a = [1, 2, 3, 4, 5] function square(x) return x^2 end for x in a println(square(x)) end 10
  11. 11. https://julialang.org/benchmarks/ 11
  12. 12. 12
  13. 13. https://juliacomputing.com/case-studies/laketide.html  
  14. 14. https://juliacomputing.com/case-studies/mit-robotics.html  
  15. 15.  https://juliacomputing.com/case-studies/ny-fed.html 15
  16. 16. https://juliacomputing.com/case-studies/rna.html  
  17. 17. https://juliacomputing.com/case-studies/circuitscape.html    http://maps.tnc.org/migrations-in-motion/
  18. 18.   https://juliacomputing.com/case-studies/intel-astro.html 22
  19. 19. https://www.nature.com/articles/d41586-019-02310-3
  20. 20. http://pkg.julialang.org/pulse.html 24
  21. 21. 25
  22. 22. 26
  23. 23. 27
  24. 24. 28
  25. 25. 29
  26. 26. 30
  27. 27. 31
  28. 28. 32 VimEmacsVscodeSublime
  29. 29. 33
  30. 30.        34
  31. 31.       35
  32. 32.   36
  33. 33. for i = 1:100000 do_something() end @parallel for i = 1:100000 do_something() end 37
  34. 34. Julia mode: julia> using Pkg julia> Pkg.update() julia> Pkg.add(“Foo”) julia> Pkg.rm(“Foo”) 38 Pkg mode: v(1.1) pkg> update v(1.1) pkg> add Foo v(1.1) pkg> rm Foo
  35. 35. julia> @code_native add(1, 2) .text Filename: REPL[2] pushq %rbp movq %rsp, %rbp Source line: 2 leaq (%rcx,%rdx), %rax popq %rbp retq nopw (%rax,%rax) function add(a, b) return a+b end 39
  36. 36. julia> @code_llvm add(1, 2.0) ; Function Attrs: uwtable define double @julia_add_71636(i64, double) #0 { top: %2 = sitofp i64 %0 to double %3 = fadd double %2, %1 ret double %3 } function add(a, b) return a+b end 40
  37. 37. 50
  38. 38. 51
  39. 39. 52
  40. 40. 53
  41. 41. 54
  42. 42. 55
  43. 43. julia> using DataFrames julia> df = DataFrame(A = 1:4, B = ["M", "F", "F", "M"]) 4× 2 DataFrame │ Row │ A │ B │ ├─────┼───┼───┤ │ 1 │ 1 │ M │ │ 2 │ 2 │ F │ │ 3 │ 3 │ F │ │ 4 │ 4 │ M │ 56
  44. 44. julia> df[:A] 4-element Array{Int64,1}: 1 2 3 4 julia> df[2, :A] 2 57
  45. 45. julia> df = readtable("data.csv") julia> df = DataFrame(A = 1:10); julia> writetable("output.csv", df) 58
  46. 46. julia> names = DataFrame(ID = [1, 2], Name = ["John Doe", "Jane Doe"]) julia> jobs = DataFrame(ID = [1, 2], Job = ["Lawyer", "Doctor"]) julia> full = join(names, jobs, on = :ID) 2× 3 DataFrame │ Row │ ID │ Name │ Job │ ├─────┼────┼──────────┼────────┤ │ 1 │ 1 │ John Doe │ Lawyer │ │ 2 │ 2 │ Jane Doe │ Doctor │ 59
  47. 47. julia> q1 = @from i in df begin @where i.age > 40 @select {number_of_children=i.children, i.name} @collect DataFrame end 60
  48. 48.                   61
  49. 49.        62
  50. 50.                 63
  51. 51. 64 julia> data = DataFrame(X=[1,2,3], Y=[2,4,7]) 3x2 DataFrame |-------|---|---| | Row # | X | Y | | 1 | 1 | 2 | | 2 | 2 | 4 | | 3 | 3 | 7 |
  52. 52. 65 julia> OLS = glm(@formula(Y ~ X), data, Normal(), IdentityLink()) DataFrameRegressionModel{GeneralizedLinearModel,Float64}: Coefficients: Estimate Std.Error z value Pr(>|z|) (Intercept) -0.666667 0.62361 -1.06904 0.2850 X 2.5 0.288675 8.66025 <1e-17
  53. 53. 66 julia> newX = DataFrame(X=[2,3,4]); julia> predict(OLS, newX, :confint) 3× 3 Array{Float64,2}: 4.33333 1.33845 7.32821 6.83333 2.09801 11.5687 9.33333 1.40962 17.257 # The columns of the matrix are prediction, 95% lower and upper confidence bounds
  54. 54. 67
  55. 55. 68 # initialize the attractor n = 1500 dt = 0.02 σ, ρ, β = 10., 28., 8/3 x, y, z = 1., 1., 1. # initialize a 3D plot with 1 empty series plt = plot3d(1, xlim=(-25,25), ylim=(-25,25), zlim=(0,50), xlab = "x", ylab = "y", zlab = "z", title = "Lorenz Attractor", marker = 1) # build an animated gif, saving every 10th frame @gif for i=1:n dx = σ*(y - x) ; x += dt * dx dy = x*(ρ - z) - y ; y += dt * dy dz = x*y - β*z ; z += dt * dz push!(plt, x, y, z) end every 10
  56. 56.       69
  57. 57. 70
  58. 58. 71 https://julialang.org/blog/2017/12/ml&pl-zh_tw
  59. 59.   72Ref: https://venturebeat.com/2019/02/18/facebooks-chief-ai-scientist-deep-learning-may-need-a-new-programming-language/ Pic: https://xconomy.com/boston/2017/11/01/as-facebook-fights-fake-news-lecun-sees-bigger-role-for-a-i/
  60. 60. 2019.2.20 10 a.m.
  61. 61.    74
  62. 62.      75
  63. 63.       76
  64. 64. 77 Pic: https://blog.algorithmia.com/introduction-to-loss-functions/ Loss function Pic: http://dsdeepdive.blogspot.com/2016/03/optimizations-of-gradient-descent.html Gradient
  65. 65.        78     for-loop, while-loop
  66. 66.     79
  67. 67.    80
  68. 68.      81
  69. 69.     Next: Machine Learning and Deep Learning on Quantum Computing 82 https://github.com/QuantumBFS/Yao.jl
  70. 70. 83
  71. 71.            84
  72. 72.   85 http://www.stochasticlifestyle.com/co mparison-differential-equation-solver- suites-matlab-r-julia-python-c-fortran/
  73. 73.    86 Objective types • Linear • Convex Quadratic • Nonlinear (convex and nonconvex) Constraint types • Linear • Convex Quadratic • Second-order Conic • Semidefinite • Nonlinear (convex and nonconvex) Variable types • Continuous • Integer-valued • Semicontinuous • Semi-integer
  74. 74. 87
  75. 75. 88
  76. 76.   89
  77. 77. 90 https://mobile.twitter.com/KenoFischer/status/1158517084642582529
  78. 78. 91
  79. 79. https://julialang.org/teaching/
  80. 80.  Lack of users and developers  Lack of internet resources
  81. 81.     96
  82. 82. https://www.books.com.tw/products/0010824245

×