黒木玄 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月22日(火)
Couldn't wait to try out my favorite #julialang package @TuringLang with TensorBoard. So I tried. And...
It just works!😁
-interactively visualizing Bayesian sampling process
-customizable stats
Thanks lots of hard work by {TuringCallbacks}, {TensorBoardLogger}, {OnlineStats} twitter.com/torfjelde/stat... pic.twitter.com/8qCJLzduN9
タグ: julialang
posted at 22:49:13
@genkuroki 私自身、Juliaは非常に書きやすいと感じています。コードの書きやすさはFortranやC、C++の比較にならないので、速度の面も含めてやはりJuliaは光るものがある言語ですね。
Juliaのマクロについてはもう少し勉強してみます。ご教授頂きありがとうございました。
タグ:
posted at 21:17:28
@vnb15_19hus #Julia言語 試行錯誤の過程も重要なのですが(試行錯誤が易しくなければそもそも最適化自体が行われない可能性さえある)、最終的に速度に効いているのは、コンパイル前のマクロによるコードの自動生成です。
このような理由で、Lisp的な完全なマクロは速度追求なら必須だと思われます。
タグ: Julia言語
posted at 20:57:57
@vnb15_19hus #Julia言語 その模範解答を見れば、
* 視覚化の容易さ
* 数式処理系の援用
* Lisp的なマクロの使用(コードの自動生成)
* mutiple dispatchによる気軽なプログラミング
などのJuliaの特徴が、コードの最適化をどれだけ易しくするかが分かります。
続く
タグ: Julia言語
posted at 20:55:29
@vnb15_19hus #Julia言語 上で証拠1に挙げた例は孤立しておらず、MITの講義の宿題の模範解答では指数積分函数E₁(z)のJuliaによる実装を扱っていて、Fortranで書かれたscipyで使われているライブラリに5~6倍の速さを実現しています(以下のリンク先)。
続く
nbviewer.jupyter.org/github/steveng...
タグ: Julia言語
posted at 20:52:13
@vnb15_19hus #Julia言語 今どきの高速なプログラミング言語では原理的に出る速度に大きな違いはないと思います。
プログラムは人間が書くものなので、書きやすい側のプログラミング言語の方が結果的に速くなりがちということなのでしょう。
例えばLispのような完全なマクロがない言語は速度面で苦しい。続く
タグ: Julia言語
posted at 20:48:27
@genkuroki ご指摘、並びにご教示頂き、ありがとうございます。ご指摘の点については当方の認識不足だと理解しました。ますますJuliaを使おうという気になりました。
C言語等との実行速度の違いは本質的にはコンパイラの性能の差という理解で良いのでしょうか? まだまだ不勉強ですので、ご教授頂けると幸いです。
タグ:
posted at 20:43:09
@vnb15_19hus #Julia言語 証拠2:Juliaで実験的に書かれた数値線形代数のコードはOpenBLASの9割程度の速さで動いた。
OpenBLASは徹底的な最適化が行われているライブラリの典型例だが、Juliaでもほぼ同じ速さを実現できることが実証されている。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 20:12:58
@vnb15_19hus #Julia言語 証拠1:広く使われている基本特殊函数のライブラリはJuliaより速くない。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 20:09:12
@vnb15_19hus 【便利さとそこそこの速さを追求するならJuliaとかを選んで、真に速さが欲しかったらC++を使えば良いと思います。】
私は誤りだと思います。
#Julia言語 が速度的にC, C++, Fortranに劣る証拠はないです。
「マイクロベンチマーク」はあんまりあてにならない。
証拠に続く
タグ: Julia言語
posted at 20:08:07
非公開
タグ:
posted at xx:xx:xx
この発想はなかった… 牛タンがたこ焼き器で悪魔的な背徳感に sirabee.com/2020/09/22/201... 背徳感が甘いぞ。ここは、おろしにんにくにすべき
タグ:
posted at 19:33:32
twitter.com/sekibunnteisuu...
しかし、「数学分からん」と言っている人が、フィールズ賞受賞者に「あなたは数学者に向いていない」と言っちゃうのはすごいよね。
タグ:
posted at 19:31:56
#Julia言語 添付画像1は
qiita.com/ytaki0801/item...
にある最後の例と同じ。
添付画像2は対応するJulia版。JuliaのコードのS式表示を見ると、類似していることも分かる。 pic.twitter.com/TdfouOKbYp
タグ: Julia言語
posted at 18:48:08
#Julia言語
Juliaでよくあるように、
lisp"Lispのコード"
でLispのコードを実行可能にした。
マクロ lisp_str を定義すればそのようなことをできる。 pic.twitter.com/QDg80Mq5qI
タグ: Julia言語
posted at 18:43:17
#Julia言語 このままだとS式をタプルで入力しなければいけない。それでは面倒なので、文字列でS式を書いてSExpr型のオブジェクトを作れるようにした。
SExpr(((1, 2, nul), 3, 4, nil))
の代わりに
SExpr("((1 2) 3 4)")
と入力できる。 pic.twitter.com/qzDDgnLM6y
タグ: Julia言語
posted at 18:40:26
Frames Catherine Whi @oxinabox_frames
@KenoFischer @jeremyphoward Even without the REPL stdlib, there is still the fallback REPL in Base.
And even without Base there is a fallback fallback REPL implemented in C.
I think it is fine to remove REPL stdlib
タグ:
posted at 18:36:44
#Julia言語 簡易Lispインタープリタの実装。七十数行。
quote函数とeval函数については、quoteとevalがJuliaの予約語に入っているので、quote_ と eval_ という名前になっている。
最大の問題はλ式の取り扱い。変数と対応する値の対のリスト a を用意して、λ式の評価を実現している。 pic.twitter.com/wbjfK8Itcl
タグ: Julia言語
posted at 18:36:36
#Julia言語 SExpr型の内部ではタプルで実現されているS式のデフォルトの表示の仕方を Base. show(io::IO, x::SExpr) を定義することによって設定。
Julia言語ではこれを知っていると便利です。
計算結果を独自型で包んでやれば、計算結果のデフォルトでの表示の仕方を独自に設定できます。 pic.twitter.com/NXX7wFyT3T
タグ: Julia言語
posted at 18:29:52
#Julia言語 Lispを全然知らない人のために、タプルの側で car, cdr について説明。Expr()は略。長さが1のタプルは出て来ないようにする。
car(((1, 2), 3, 4, nil)) = 最初の成分(1, 2)
cdr(((1, 2), 3, 4, nil)) = 二番目以降(3, 4, nil)
car((1, 2)) = 1
cdr((1, 2)) = 2
添付画像はS式表示版。 pic.twitter.com/BaG2aQRZ9c
タグ: Julia言語
posted at 18:25:16
#Julia言語 S式をタプルで実現。
(1 2 3 4) ↔ (1, 2, 3, 4, nil)
(1 2 3 . 4) ↔ (1, 2, 3, 4)
という対応。ただし、SExpr型で包む。
Base.getindex(x::SExpr, i) の定義で、SExpr型のxについて、x[1] や x[2:end] が使えるようになる。
後で、それぞれによって car, cdr を定義してやります。 pic.twitter.com/ADZkggygZI
タグ: Julia言語
posted at 18:15:55
#Julia言語
定数 nil を singleton の(すなわちその型のオブジェクトが1つしかない)型 Nil のオブジェクトとして定義。
さらにそれの表示の仕方を Base. show の定義で設定。
定数 t についても同様。 pic.twitter.com/We3TSeixX6
タグ: Julia言語
posted at 18:08:55
#Julia言語
nbviewer.jupyter.org/gist/genkuroki...
Minimal Lisp in Julia - Part 2
Part 1ではS式をナマのタプルで実現しましたが、Part 2ではSExpr型を用意して、それに対して、car, cdr, null, atomなどの基本函数を定義し直しました。目次もつけた。
SExpr型のデフォルトの表示の仕方も定義した。 pic.twitter.com/pyiU286rro
タグ: Julia言語
posted at 18:03:48
「求残と求差、どちらも同じ引き算と言うのは理解している大人の視点であって、子供にとっては違うものなんです」と言いつつ「子供が求残と求差を区別していないようだ。これはまずい」と言う。
タグ:
posted at 18:00:55
だから、彼らは
ある時は「順序指導は現場の教員が工夫した結果だ」といい、別の時は「指導要領で決められているのだから、そう教えざるを得ない」という。
ある時は「直接教員に言うべきでSNSで晒すな」と言い、別の時には「教員に言うのではなく文科省に言え」という。
タグ:
posted at 17:55:58
ごまふあざらし(GomahuAzaras @MathSorcerer
ひとまず end + 1 しておけば layout の本当のサイズを意識しなくても拡張が容易
Makie.jl Tip
#Julialang
#Julia言語 pic.twitter.com/nOSIVBYT4B
posted at 17:54:01
なぜこういうことになるかというと理由は簡単なことで、
彼らは思いついた「順序擁護・順序批判批判」を述べているだけで、それらの整合性など考えちゃいないから。
そんなこと考えられるなら、順序指導を擁護したりしないんだけどね。
タグ:
posted at 17:53:26
数学者は算数教育に口出しするな。
順序はどっちでもいいと言っている人は数学者に向いていない。
自分は数学が分からない。
これを同じ人が主張しているんだよ。すごいよね。 pic.twitter.com/rRm2qVfMCy
タグ:
posted at 17:51:33
一方で、「掛け算順序はできない子のための指導。順序どっちでもいいと言うのは、算数教育が分かっていない数学ができる連中の傲慢な主張」という逆の主張もある。
で不思議なことに、両者は対立や相互批判しない。
同一人物が両方の意見を言っているケースまである。
タグ:
posted at 17:47:29
Oh, apparently keyword arguments are not considered by multiple dispatch in #JuliaLang. Somehow missed that. This should be written in big, bold letters somewhere in the documentation @JuliaLanguage discourse.julialang.org/t/multiple-dis...
タグ: JuliaLang
posted at 17:46:40
この連ツイざっと見ると
掛け算の順序でバツに文句を言っている奴は数学ができないやつなんだねwwww
という、二重三重に捻じれた考えの人が一定数いることが分かる。 twitter.com/kale_aojiru/st...
タグ:
posted at 17:42:23
ベイズ法も使って研究してますが最尤法も検定も使ってますし僕はベイジアンのつもりはありません。ほんとは論文タイトルにもBayesianとは入れたくなかったがレフリーの要望で…主義者というニュアンスもありますし使いたくない。誤差を測る規準を選ぶことは主義に基づいているわけでもありません。
タグ:
posted at 17:01:19
ごまふあざらし(GomahuAzaras @MathSorcerer
いろいろ修正したので gist の方
gist.github.com/terasakisatosh...
をどうぞ twitter.com/MathSorcerer/s...
タグ:
posted at 16:57:13
ようやく Julia で Unix Time から日本時間に変換する方法が分かった。初めて学ぶ言語は慣れるまでが大変。
using Dates
using TimeZones
utime = 1599696000
zdt = ZonedDateTime(unix2datetime(utime),tz"UTC")
astimezone(zdt, tz"Asia/Tokyo")
タグ:
posted at 16:46:42
ごまふあざらし(GomahuAzaras @MathSorcerer
makie.juliaplots.org/dev/makielayou...
を見るともっと細かくUIの設定ができることがわかります.
タグ:
posted at 16:43:10
ごまふあざらし(GomahuAzaras @MathSorcerer
MakieLayout (今はAbstractPlotting の中に吸収された)
を使うとMakie.jl における UI を構築することができます.
lift 関数と LSlider を使うことで対話的なプロットをするアプリが25行ほどで出来上がります.
#Julialang #Julia言語 pic.twitter.com/hE88Hs6m6X
posted at 16:39:52
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
Dr. Chris Rackauckas @ChrisRackauckas
@betanalpha @SimonPJByrne @Viral_B_Shah @KristofferC89 There's nothing to complain about. Turing.jl almost supersets the functionality already due to its integration with the package ecosystem and we found it faster in actual applications. I would highly recommend for any #julialang user, especially those doing #sciml!
posted at 14:47:59
#掛算 が可換なことは小2の導入直後に教わるし、
「算数≠数学」を前提にする議論は以降を読む必要なし twitter.com/Ura_Aka_000000...
タグ: 掛算
posted at 14:26:26
非公開
タグ:
posted at xx:xx:xx
#Julia言語 しかもこれはデモ専用の例ではなく、楕円曲線暗号で使われているEdwards楕円曲線のファミリーのアニメーションです。
数学ではこういうものをファミリー(family)と呼びます。😊 pic.twitter.com/7qb26UdBqv
タグ: Julia言語
posted at 14:18:34
#Julia言語 「論よりコード」なのでGIFアニメ作成のためのシンプルなコードの例。
アニメ作成のためのマクロを作用させたforループの内側で単にプロットするだけでアニメーションを作れます。
おそろしくシンプル!
これに慣れるとmatplotlibに戻れなくなる。続く
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/dF3bWbrje3
タグ: Julia言語
posted at 14:18:30
@skboyj2 @nekoyamanao 先生を暴走させる可能性だってある内申。しかも全部の中学で一律全く同じ評価といえばそうでもなく生徒だって同じような子供でも先生の心証で変わることもありますよね。過敏性大腸炎で透析受けるから学校行けない子だっているわけですよ。なのに、健康な子と同じ土俵。色々おかしいと思っています。
タグ:
posted at 13:27:33
This was prompted by some discussion with PETSc developers (gitlab.com/petsc/petsc/-/...), and makes use of the great PackageCompiler.jl (github.com/JuliaLang/Pack...).
タグ:
posted at 12:55:40
A little side project: a proof-of-concept building dynamic libraries in Julia to be called from C or other languages:
github.com/simonbyrne/libcg
Thanks to @Viral_B_Shah and @KristofferC89
タグ:
posted at 12:53:43
中3の長男、模試だけで判断すると志望校の合格率70%だが、内申を考慮すると20%。塾の資料にどこまで信頼性があるか知らんが、やはり、内申って、部活終えて受験に向け頑張ってる今を否定する制度だ。統一基準もない恣意的評価の塊が重視されるのは理不尽。私情が入ってるけどやはり廃止すべき。
タグ:
posted at 12:06:21
#Julia言語 相互リンク
Juliaをshell scriptのようにも使いたい人にとって、2013年の記事(少し前にJulia v1用に書き直された)
julialang.org/blog/2013/04/p...
は必読。 twitter.com/genkuroki/stat... pic.twitter.com/kA3yeviGij
タグ: Julia言語
posted at 11:29:15
@hayato_VTA @nycity1022 以下のリンク先にJupyter上での #Julia言語 による実行結果のスクショがあります。
非常に気楽に使えるので、シェル・スクリプトのようにも使っています。(Imagemagickで写真をまとめてPDFに変換するために大活躍) twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 11:18:52
Mark Kittisopikul ht @markkitti
Something else that came out of the discussion was how to get help with #JuliaLang .
Here's a short list:
slackinvite.julialang.org
discourse.julialang.org
julialang.zulipchat.com/#
gitter.im/JuliaLang/julia
stackoverflow.com/questions/tagg...
www.youtube.com/user/JuliaLang...
julialang.org/community/ twitter.com/Ulrike_Boehm/s...
タグ: JuliaLang
posted at 10:22:33
Prof. Tim Holy is one of the unsung heroes of the @JuliaLanguage community - he's contributed to just about everything! The only question is how he finds the time to write code AND run a lab #JuliaLang twitter.com/Ulrike_Boehm/s...
タグ: JuliaLang
posted at 10:09:01
ごまふあざらし(GomahuAzaras @MathSorcerer
Apple Pencilの入力でアルファベットを変換できた r pic.twitter.com/hWNVZ35DZx
タグ:
posted at 09:57:03
Today @markkitti & @preibischs hosted @JuliaLanguage’s Tim Holy at @HHMIJanelia - It was impressive to see the power of #Julialang - Let’s make a deep dive into the language 👩🏻💻💪😀 Check out @JeffBezanson et al.’s blog post 👉 julialang.org/blog/2012/02/w... pic.twitter.com/gZqPxtC0n4
タグ: Julialang
posted at 09:24:15
@jeremyphoward The default precompile statements are generated by github.com/JuliaLang/juli.... You could tweak that or just set `JULIA_PRECOMPILE=0` to skip it entirely.
タグ:
posted at 08:20:05
@jeremyphoward No, it isn't, but it can be useful for debugging. Depends on the workflow I suppose :).
タグ:
posted at 08:18:53
@jeremyphoward You'll probably want to keep the REPL. Statistics is also pretty small.
タグ:
posted at 08:16:06
非公開
タグ:
posted at xx:xx:xx
@jeremyphoward You'll also have to comment out anything that depends on LinearAlgebra. At least SparseArrays and SharedArrays. That's probably the biggest native dependency. You may also want to build a leaner sysimg which will trade some memory for the potential for longer compile times.
タグ:
posted at 08:14:22
Type 52.68.96.58 into your browser and hit enter for a surprise ~ ✨ pic.twitter.com/9DacIvH2fe
タグ:
posted at 08:12:57
@jeremyphoward If you don't want LinearAlgebra at all, you can comment it out at github.com/JuliaLang/juli.... Otherwise, the easiest way is probably to build reference BLAS.
タグ:
posted at 08:09:05
@KenoFischer How would I go about turning it off?
I'm interested in how far I can take Julia. I'm kinda interested in maybe implemented a set of basic network servers with it.
タグ:
posted at 08:05:40
@quinn_jacobd @pcwalton Yeah, a lot of the recent compiler direction is precisely to make it easy for people to re-arrange the compiler to make this kind of multi-targeting work.
タグ:
posted at 08:02:16
@jeremyphoward A lot of that is BLAS buffers being preallocated. That can definitely be turned off. That said, it's definitely not optimized for low-memory environments.
タグ:
posted at 07:38:20
Is there a way to make Julia use <140MB, by changing settings, recompiling, or anything like that?
I'd love to run Julia programs on a 512MB machine, but this might be pushing it... pic.twitter.com/DuzPRhHyIz
タグ:
posted at 07:19:12
@pcwalton IMO, #julialang has built a pretty compelling story around enabling these kind of seamless workflows; I'm not aware of easier ways for someone to "hook in" GPU processing or simd-fy some code.
タグ: julialang
posted at 05:43:57
パラメタの事後分布が狭かったり,予測分布の標準偏差が小さいとしても,それはそのモデルがそう思っているだけで,現実的にどれくらい予測が正しいかはわからないってのに気をつけないといけないよね。
タグ:
posted at 05:14:02
#数楽 #Julia言語
Kullback-LeiblerとWassersteinの違いを示すためのアニメーション↓ twitter.com/genkuroki/stat...
posted at 04:10:55
#統計 1次元のWasserstein距離は、1次元の特殊性から、累積分布函数の間のL¹距離になるのでとても易しい。 twitter.com/hidekikawahara...
タグ: 統計
posted at 04:09:29
Hideki Kawahara: WAS @hidekikawahara
一次元のWasserstein distanceを使ったら、懸案があっけなく解決。1972年の論文(letter?)を見たら簡単に見えたので、数行で実装したけれど、またいつものドジを踏んでいるのではないかと、眉唾状態。それにしても、非常に都合の良い振る舞いをしてくれる。これも、10年前に知っていれば、の案件。
タグ:
posted at 03:59:59
@nakayoshix #msfd31
#Julia言語 では printf もマクロ。
docs.julialang.org/en/v1/stdlib/P...
posted at 03:15:32
In Julia, you can write these constraints down in one line, almost exactly the same way you would write down those constraints in a paper. I’m still buzzing over how simple that was. (4/n, n = 4)
タグ:
posted at 02:39:09
This is a nightmare to think about, and you’re never really sure if you’ve managed to write down that matrix correctly. (3/n)
タグ:
posted at 02:38:46
I think my favourite thing about #JuliaLang is how easy it is to do linear programming with.
Say you have a mechanism design problem with n types, and you don’t know if your problem has enough monotonicity for you to ignore some incentive constraints. #EconTwitter (1/n)
タグ: EconTwitter JuliaLang
posted at 02:37:33
#Julia言語
docs.julialang.org/en/v1/manual/n...
Noteworthy differences from Common Lisp
このページにはMATLAB, R, Python, C/C++との違いについても書かれています。 pic.twitter.com/7qDA0ckYZL
タグ: Julia言語
posted at 02:36:28
ちゃんと調べてないけど次はLisp、Dart、Swift、Haskell、Julia、Java、Scala、ML、Ada、Goのうちで面白そうなのを触ってみようと思ってるのでメモ
#DenTakuNote
タグ: DenTakuNote
posted at 02:22:38
#Julia言語 私によるタプルの使い方では、リストの最後にオールオーバーでnilがくっつくことを除けば、タプルの表示のままでもそう見難くないです。
実はそういう手抜きで終わらせようと最初は思っていた。
最初から手抜きする気が満々だったので、このタプルの使い方になった。 pic.twitter.com/VyXiTad8TZ
タグ: Julia言語
posted at 02:19:08
非公開
タグ:
posted at xx:xx:xx
Im(Nyarn)@linuxナニモワカ @Imaginary_Nyarn
最近は電卓用途にもJuliaを使うようになってしまいPythonがいらない子になった
タグ:
posted at 02:07:06
One of the cool features of #JuliaLang is that out-of-the-box it supports animated plots. You just need to write a for loop and annotate it with a macro docs.juliaplots.org/latest/animati... Can't imagine better way of showing what "distribution over functions" means. pic.twitter.com/2B4Wk1HeI3
タグ: JuliaLang
posted at 02:00:06
@twovillage #Julia言語 これに限らず、行全体を @. で包むとよくない場合もあって、そういう場合には
@ views A[1:length(B)] .= B[:]
のように書けばよいと思います。
いずれにせよ、公式ドキュメントの Performance Tips のページだけは読んでおいた方が得です。Juliaを始める人が最初に読むべき文書かも。
タグ: Julia言語
posted at 01:44:56
#Julia言語 滝沢さんと私の簡易Lispのコードを比較する場合には、タプルによるリストの実現の仕方が異なることに注意して下さい。私のやり方では
((1 2) 3 4) <---> ((1, 2, nil), 3, 4, nil)
のように最後がnilで終わるタプルがlistになります。 pic.twitter.com/jVbQVeufyh
タグ: Julia言語
posted at 01:30:19
#Julia言語 簡易Lispの実行例に類似のJuliaのコードを書いてみました。
JuliaのコードのS式表示にも注目!(添付画像2,3)
それらのツリー表示が添付画像4にある。
car, cdrなどの函数の定義は
nbviewer.jupyter.org/gist/genkuroki...
にあります。スクショもこれより。
twitter.com/ytaki0801/stat... pic.twitter.com/ErqjGH4Dez
タグ: Julia言語
posted at 01:00:50
@ytaki0801 #Julia言語 ちなみに femtolisp は
julia --lisp
で実行できます。実用にはなりませんが。
あと、Juliaでは
Meta. show_sexpr(:(s = 0; for i in 1:10 s+=i end; s))
(. の後の空白は除く)
などで、コードのS式表示を見れます。
Juliaは明らかにLispの影響も受けています。 pic.twitter.com/x79sPYsnke
タグ: Julia言語
posted at 00:57:16
はてなブログに投稿しました #はてなブログ
変分法の直接法で、ラプラシアンの第一固有関数と第一固有値を手に入れる - わかばめにっき wakabame.hatenablog.com/entry/2020/09/...
タグ: はてなブログ
posted at 00:56:47
加藤公一, 가토우 기미카즈(はむかず) @hamukazu
いま学校の英語教育が文法を悪者にしすぎたせいで、塾に行ける子と行けない子の格差が開いているという認識です。 twitter.com/five_schools/s...
タグ:
posted at 00:52:10