黒木玄 Gen Kuroki
- いいね数 389,756/311,170
- フォロー 995 フォロワー 14,556 ツイート 293,980
- 現在地 (^-^)/
- Web https://genkuroki.github.io/documents/
- 自己紹介 私については https://twilog.org/genkuroki と https://genkuroki.github.io と https://github.com/genkuroki と https://github.com/genkuroki/public を見て下さい。
2020年09月04日(金)
×無駄
○活かせていない
だと思うけどな。この方の資質の問題か、あるいはシステムの問題か、もしくは勘違いしているだけかもしれないが twitter.com/shagamication/...
タグ:
posted at 00:11:11
#Julia言語 「2つのAbstractVectorの連結」という問題は結構面白かった。
* vcat(a, b) (これは [a; b] と同じ)
* collect(Iterators.flatten((a, b)))
と自前で定義した My Cat (添付画像)を使った
* collect(My.cat(a,b))
を比較してみました。続く
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/SRSbs0GIbx
タグ: Julia言語
posted at 00:28:20
#Julia言語
aもbもVectorのときの連結は vcat の勝利。
しかし、私の cat も検討しています。
collect flatten は遅い。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/Im5MQMBTQp
タグ: Julia言語
posted at 00:32:19
#Julia言語
a は Vector だが、b は Vector ではなく a の SubArray の場合にも vcat が勝利し、私の cat も相当に検討しています。
しかし、なぜかこの場合に collect flatten は大量のメモリ割当を発生させ、ひどく遅くなっている!
理由を誰か教えて!
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/mlTHRvVriV
タグ: Julia言語
posted at 00:35:32
#Julia言語 次に成分の2乗和を計算させてみました。
この場合には、Iterators.flattenが非常に速い!
一方、vcatの側はメモリ割当を発生させていて遅い。
私の cat は遅延評価なので vcat よりはずっと速いです。
この場合は Iterators.flatten がとにかく速い。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/jwSed1fG9I
タグ: Julia言語
posted at 00:38:57
#Julia言語 成分の2乗和の続き
aはVectorだが、bはそのSubArrayの場合にも、Iterators.flatten が一番速いのですが、私の cat との差は縮まっています。
全体を通して、私の cat は一番速くなることはないが、安定して好成績を残している感じ。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/wiNh2Q1uFr
タグ: Julia言語
posted at 00:42:44
Stefan Karpinski @StefanKarpinski
@PMel3D Very cool! As someone who has done a lot of programming in 0- and 1-based languages (mostly 0-based until the mid 2000s), you do get used to it and I even find it easier these days—there are more things to keep in your head (length vs. last index)
タグ:
posted at 00:45:40
Mark Kittisopikul ht @markkitti
@StefanKarpinski @PMel3D I really like the begin and end keywords in #JuliaLang 1.5.
julia> a = 1:5
1:5
julia> a[begin+0]
1
julia> a[begin+4]
5
julia> a[begin:end-1]
1:4
タグ: JuliaLang
posted at 01:00:22
#Julia言語
素数を求めるプログラムを書いてみた.
メモリーの取り方を間違えるとこんなに効率が悪いのか.
100000 までの素数.
20 sec と 8 msec.
考えを改めなければならなさそうだ. pic.twitter.com/5TwMlJ0583
タグ: Julia言語
posted at 01:11:18
@jeremyphoward @swairshah @Viral_B_Shah @AriKatz20 @redrapids @essenciary Sure (github.com/Keno/julia-was...) - This UI was literally just some HTML I had lying around (a student put it together about 9 years ago for pre-0.1 julia, but then notebooks became a thing). For the real thing, I'll just hook up Pluto.
タグ:
posted at 03:04:08
「定義」の用法が一般的な数学でのものと違うことはわかりますが、どう勘違いしているかはこれだけでは読み取れません。 twitter.com/hB54xOI3WomoDS...
タグ:
posted at 05:01:27
Posted a blog article comparing #Python and #julialang processing speeds for #hydrology modeling/calibration
Spoiler: Julia blows Python out of the water 🌊 (pun intended)
link.medium.com/lpTZNYRnu9
タグ: hydrology julialang Python
posted at 06:23:16
This comparison was done as part of my #julialang learning process. Personally, I really enjoyed the syntax and process of using Julia!
タグ: julialang
posted at 06:24:35
@giswqs I highly recommend giving #julialang a try! It was easy to pick up and the performance benefits are great!
Also, hinting at my next blog post...you can use #EarthEngine with Julia too 😀
タグ: EarthEngine julialang
posted at 06:44:09
グラフを描くツールはなんでもいいんだけど、エクセルはやめておけ。標準的にはgnuplotかmatplotlibかな。後者はプログラミングの知識が要るけど。プログラミングも言語はなんでもいいのでとにかくなにかひとつ。CでもJavaでもPythonでもJuliaでも
タグ:
posted at 10:35:22
初学者や未経験エンジニア転職界隈でPythonの話ばかりしてるけど(未経験でもPythonエンジニアになれる?みたいなメルマガ来て吹いた)、ガチ勢のTLではJuliaがじわじわ来てる
タグ:
posted at 10:37:49
興味を持った記事: オープンソースのプログラミング言語「Julia 1.5」がリリース - CodeZine(コードジン) buff.ly/2DF3k0R
タグ:
posted at 10:48:00
ruby-type-profilerの発表見ました。実用コードに対して普通にプロファイルできるらしくすごい!
github.com/mame/ruby-type...
完全に便乗で恐縮なのですがこれの #JuliaLang 版(TypeProfiler.jl)を最近書いているのでもし興味ある方はcheckしてみてください :)
github.com/aviatesk/TypeP...
#rubykaigiA
タグ: JuliaLang rubykaigiA
posted at 11:47:15
rubyにしろJuliaにしろabstract interpretationするコードにメタプログラミングされてる部分があると、実際にコード実行しないと正確な解析ができない部分があるはずなので、その辺をどんな感じで調整しているのかとても気になる。
タグ:
posted at 11:50:00
#Julia言語 私の環境では同じコードで10^8以下の素数を求めるのに0.7秒強かかりました(添付画像1)。
微小に改変したバージョン(できあがる配列のサイズが前もってわからない場合なので素直にpush!を使った)でも同じような速さ(添付画像2)。
続く
nbviewer.jupyter.org/gist/genkuroki... twitter.com/eco_tetsu/stat... pic.twitter.com/ZwOddcwZ8D
タグ: Julia言語
posted at 12:26:53
#Julia言語 添付画像は sizehint! を設定した場合と、@ inbounds マクロを付けた場合です。
sizehint! は push! によるメモリ割当の回数を減らし、速度的には微小な改善。
@ inbounds は速度的にそこそこ大きな改善。
両方付けた場合が添付画像3です。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/CtggsDepQV
タグ: Julia言語
posted at 12:26:54
#Julia言語 以上の結果のまとめ
716.023 ms ← primes_eco_tetsu(10^8)
701.156 ms ← primes(10^8)
678.054 ms ← primes_sizehint(10^8)
573.971 ms ← primes_inbounds(10^8)
556.330 ms ← primes_sizehint_inbounds(10^8)
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/7p2xsZNxyM
タグ: Julia言語
posted at 12:26:54
@genkuroki メモリーの確保と解放を繰り返すとひどく遅くなることが今回の実験でわかりました.
push! による解決について,今回は素数を保存するための配列だけに使われているからだと思います.
複数の配列のサイズ変更があるとメモリの取り合いになります.(最初に書いたコードがそれ)…
タグ:
posted at 12:43:30
ごまふあざらし(GomahuAzaras @MathSorcerer
格子状に点が配置された有効グラフを作る Plots.jl レシピを作ってみました.
gist.github.com/terasakisatosh... pic.twitter.com/VgyuEi2bVU
タグ:
posted at 12:44:09
ごまふあざらし(GomahuAzaras @MathSorcerer
続き)
Plots.jl 中の quiver の実現はだいたいここら辺を見る
github.com/JuliaPlots/Plo...
#Julia言語
タグ: Julia言語
posted at 12:45:25
理系とはいわないですけど数学科の学生は,1,2年のうちにLaTeX使えるようになると,使い出があるとおもう.学年が進むと,進学志望じゃないと動機が維持できないかも.
タグ:
posted at 12:58:25
#Julia言語 注意!速度が重要な場合のはずなのに
A = []
for i in 1:N
if ~
push!(A, a)
end
end
としている場合をよく見ます。A = [] は成分がAnyのVectorになってしまうので、速度的劣化の原因になります。aがInt型になるならば
A = Int[]
と書くべきです。 pic.twitter.com/tmjG4CH4vE
タグ: Julia言語
posted at 13:02:25
非公開
タグ:
posted at xx:xx:xx
LaTeXでなくても,LaTeXの数式記法を覚えて,Markdownという手もある.でもインライン数式とディスプレイ数式の両方をサポートするMDエディタがQiitaのそれくらいしか思いつかない.
タグ:
posted at 13:06:34
Oh, you like typed dispatch? Have I got a language for you! But seriously, it's fun to see #julialang inspiring other languages these days! twitter.com/HamelHusain/st...
タグ: julialang
posted at 13:09:35
@eco_tetsu push! が原因で遅くなる場合には P = [] としてから P にpush!している場合が多いように思えます。
P = [] としてから P に大量にpush!すると、メモリ割当の回数がものすごい数になります。
整数をpush!するなら、P = Int[] とか、最初に2をpush!することがわかっているなら P = [2] とすればOK.
タグ:
posted at 13:10:29
@quinn_jacobd Most definitely! I'm on my way to checkout the JuliaLang side. This was just a gateway drug. I never knew what I was missing!
タグ:
posted at 13:21:42
@genkuroki まさにそれをやってました。
Cでいうところの realloc( ) を思い出してます。
Juliaで直ぐに気がつけたのは ◯time でallocations とメモリーの使用量、ガベッジコレクト の表示があったおかげ。
言語に優しいコードを探します。
タグ:
posted at 13:33:04
もなちゃんの英語道場 By ADHDのトリリンガル
@monachansdojo さんには通じないだろうな。
「なぜ唐突に正方形の話?」と思っているだろう。
4枚のカードの問題と密接に関係しているんだけど、わからないだろうな。 twitter.com/golgo_sardine/...
タグ:
posted at 13:41:48
理系の大学生にとってプログラミングは必須のスキルなので、できれば低学年で身につけたい。がっつり計算科学をやる人には「速い言語」が必要だけど、たいていの人が最初に学ぶなら高級電卓的な言語のほうがよくて、それはやはりPythonやJuliaだと思う。Mathematicaという選択肢もあるけど
タグ:
posted at 13:45:47
#Julia言語 数式入りのdocstringは
@ doc raw"""
```math
\LaTeX
```
"""
function f end
のように書ける. @ の後の空白は除く。
@ doc raw""" ~ """ の方法を知らないと \ を \\ と入力しなければいけなくなって面倒になる.
docs.julialang.org/en/v1/manual/d...
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/ltOJqCt7lb
タグ: Julia言語
posted at 14:00:04
前期の日大非常勤(Python 入門)これにて終了。TA さんとのテレビ電話も楽しかった。優秀な学生さんでよかった。講評はここ:
www.comp.tmu.ac.jp/s-yokoyama/lec...
レポート問題、以下にしたかったけどさすがにやめた:
問題A rm ~/.bashrc を実行しなさい(40点)
問題B なんとかして復元しなさい(60点)
タグ:
posted at 14:03:50
#Julia言語 高級電卓的に使えてかつ
「メモリを無駄に使うことを気にせずに
ベクトル化した方が速い」というような
バッドノウハウを学ばずに済む
という選択肢としては、Julia一択だと思います。
「普通」はメモリの無駄遣いは速度劣化の主な原因になりえる。
twitter.com/kikumaco/statu...
タグ: Julia言語
posted at 14:04:59
@eco_tetsu 逆に言えば、Juliaさんは働きもののがんばり屋さんで、かなりの無茶を要求してもガベージコレクションでがんばってそこそこ速く計算してくれます。
それで十分なユーザー層も結構分厚いはず。#Julia言語
タグ: Julia言語
posted at 14:39:15
非公開
タグ:
posted at xx:xx:xx
@HamelHusain @quinn_jacobd man you've been missing out haha (jk); but seriously, this may look "cool" and save you a few lines of code in python, but compiler (interpreter) doesn't use it to make code run faster! whereas in Julia, multi-dispatch is super powerful and compiler can use all the information
タグ:
posted at 14:45:53
#Julia言語 の気楽な使い始め方
① JuliaPro をインストールしてしまう(無料だが登録が必要)
juliacomputing.com/products/julia...
② 公式バイナリをインストール
julialang.org/downloads/
そして
julialang.github.io/IJulia.jl/stab...
の指示に従って、IJulia.jlを入れて、Jupyter notebookを使う。
タグ: Julia言語
posted at 14:49:56
Colorful Julia @colorjulia_bot
Julia set generated on 9/3/2020 at 23:00 PST
Iterations: 70
Coloring mode: "multi_color"
c = 0.3846 + 0.6416i pic.twitter.com/JTVHo7Fp2n
タグ:
posted at 15:03:45
@l_II_llI @HamelHusain @quinn_jacobd I think what is interesting with multiple-dispatch is that in interpreted languages supporting it performance is absolutely terrible and so you only use it as an optional feature when you really need it. While in Julia it is the ONLY way you ever call a function.
タグ:
posted at 15:09:08
LaTeX以外の場面でも(例えばmarkdownでの数式入力でも)、LaTeX方式での数式の入力法が使われるので、数式を扱う人達にとって、LaTeX方式による数式の入力法の習得はさらに重要さを増している感じ。
大学新入生には微積分で出て来た式は全部グラフを描いた方がよいと教えています。続く twitter.com/kikumaco/statu...
タグ:
posted at 15:12:16
@erikengheim @l_II_llI @quinn_jacobd I'm super excited about Julia. I've never had the motivation until being forced to see the potential through this exercise.
Also (at least from twitter), I can see there is tons of enthusiasm and a welcoming group of people 😍
タグ:
posted at 15:14:06
グラフのプロットを含むちょっとしたことには
www.wolframalpha.com
もかなりおすすめ。式を入力するだけで、結構まともにプロットしてくれます。私はiPad用に有料アプリを買いました。
Wolfram言語(Mathematicaの言語)も使えれば次も良いです。
www.wolframcloud.com
タグ:
posted at 15:16:39
一挙に難易度が上がるのですが、Free Wolfram Engine を Jupyter notebook から使えるようにしておくと、Wolfram言語の勉強がすすみます。
nbviewer.jupyter.org/github/genkuro...
その使用例のサンプル↓
nbviewer.jupyter.org/github/genkuro... pic.twitter.com/2bEl5QCcxr
タグ:
posted at 15:21:17
さらに、Julia, Python, R, Ruby もJupyter notebookから使えるようにしてあります。(どれも電卓並に気楽に使える。)
iPadからアクセスして利用可能。 pic.twitter.com/nG9FJSTYo6
タグ:
posted at 15:24:57
@HamelHusain @l_II_llI @quinn_jacobd Very enthusiastic indeed! I create #JuliaLang training material and work with two big #Python fans, so always interesting with comparisons there. As a Julia users I like seeing some Julia like features carried over. Sometimes I can't do Julia for a task, then Python is a nice 2nd
posted at 15:27:29
#Julia言語
Julia set のプロットで重要なのは色の付け方。
パラメータ "c" ごとに調節しなければきれいにプロットできない。
試行錯誤を始めると結構「沼」
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/BMOneykhIM
タグ: Julia言語
posted at 15:37:10
ごまふあざらし(GomahuAzaras @MathSorcerer
WAV.jl あるんだけれど
音響の取り扱いって #Julia言語 だとどれくらいポピュラーなのかな・・・.
タグ: Julia言語
posted at 16:14:52
ごまふあざらし(GomahuAzaras @MathSorcerer
レジスターされている公式パッケージと同名のリポジトリが検索に引っかかって,どのリポジトリにIssue投げればいいかってちょっと迷うよね.UUIDと更新日見ればわかるっちゃわかるけれど,#Julia言語
タグ:
posted at 16:17:22
ごまふあざらし(GomahuAzaras @MathSorcerer
PiZero で動かした結果共有します32ビット環境都合で
オーダーは 10^7 で動かしています.
#Julia言語
gist.github.com/terasakisatosh... twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 19:20:23
#Julia言語
JuliaでODEのEuler法をシンプルに書くとこうなります。
1行だけ非自明な行があります。数値解を格納する配列を初期値と同じ型の成分を持つように作っている行です。
そのおかででこの函数はベクトル値未知函数の場合も効率良く計算してくれます。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/9WKMxN1s3K
タグ: Julia言語
posted at 19:40:46
#Julia言語
添付画像は単振子
d²q/dt² = - sin q, q(0)=0, dq(0)/dt = 2k, k=0.99
を上の方法で数値的に解いた結果。それぞれ時間の刻み幅は Δt = 0.1, 0.01, 0.001, 0.0001 です。
y(t) = sin(q(t)/2).
exact解の方は本質的にJacobiの楕円函数sn(t|k²)です。
kはy(t)の最大の振れ幅に等しい。 pic.twitter.com/9Y69xchLLK
タグ: Julia言語
posted at 19:49:28
#Julia言語 完全に同一のEuler法の函数で行列の指数函数の場合の数値解を計算してみた.
このスレッドのトップで紹介した実質10行にも満たない函数だけで、スカラー値、ベクトル値、行列値の未知函数の常微分方程式の数値解を求められます。 pic.twitter.com/LS9zs1KtUF
タグ: Julia言語
posted at 20:24:02
#Julia言語 自分でコードを書いて色々実験してみて勉強することが目的ではなく、既存のパッケージで楽に常微分方程式を解きたい人は
github.com/SciML/Differen...
DifferentialEquations.jl
を使うとよいです。これは超巨大パッケージ。これはPythonやRでも利用できます。
タグ: Julia言語
posted at 20:28:38
#Julia言語 では
a == b == c
とか
a < b < c
と書けて、
1 == 1 & 2 == 2
は
1 == (1 & 2) == 2
の意味になります。 twitter.com/jinme_fx/statu... pic.twitter.com/urlkATtVRd
タグ: Julia言語
posted at 21:00:10
非公開
タグ:
posted at xx:xx:xx
@johnmyleswhite My thesis from a few years ago was that the only way through the looming explosion of hardware (without drowning ppl in complexity) was to elevate data langs back up to distinguishing between “what” and “how”. Unfortunately imperative data science is still mired squarely in “how”
タグ:
posted at 22:16:01
@johnmyleswhite Maybe Julia could elegantly solve this problem...
I think a functional (or concatenative 😉) core, that is mated with a lightweight data structuring algebra, could be the starting point.
Bonus points for F#-style “type providers” & knowledge graph!
タグ:
posted at 22:20:11
非公開
タグ:
posted at xx:xx:xx
本当に危険な台風が迫っています.
特別警報級の台風10号に伴い,最大瞬間風速は沖縄・奄美で70~85m/s,九州南部で55~70m/sという一部住家が倒壊する暴風に加え,九州南部では総雨量1000mmの大雨が予想されています.「いままで大丈夫だったから今回も大丈夫」は通用しません.必ず万全の備えを!! pic.twitter.com/e68V0HOGEx
タグ:
posted at 22:32:24
REPLとかその類いのもの(jupyterも含む)使ってjulia書いてると、struct作った時、急に仕様変更したくなっても「structは再定義できませ〜ん笑笑」って言われて弾かれてムカつく経験を結構する
タグ:
posted at 22:38:40
非公開
タグ:
posted at xx:xx:xx
@jeremyphoward @ethanhs @HamelHusain @cgarciae88 @tiangolo So, even in Swift the function overloading is fundamentally different than Julia's multiple dispatch, which is why you run into issues like this: forums.swift.org/t/operator-ove... Then you have to fake it with protocol implementations to get dynamic behavior. But back to single dispatch...
タグ:
posted at 23:28:01
@jeremyphoward @ethanhs @HamelHusain @cgarciae88 @tiangolo But in Julia the dynamic behavior gets fully elided so the abstractions are zero cost. And there's also no triangular dispatch, value types etc in swift. This by @StefanKarpinski explains the difference between true MD and overloading in other languages: www.youtube.com/watch?v=kc9Hws...
タグ:
posted at 23:29:34
@jeremyphoward @ethanhs @HamelHusain @cgarciae88 @tiangolo @StefanKarpinski In julia it's one abstraction that creates extremely powerful type and dispatch lattices which can be hooked into and overloaded at any level for custom types across multiple arguments. Much more generic
タグ:
posted at 23:31:12