黒木玄 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月09日(水)
#Julia言語
Karpinskiさん自身が2019年に追記していた。
あと親切な人によるリンクの貼り直しも。
みんな、優しい。
Meta. show-sexpr(:(sin(2x)))
と
dump(:(sin(2x)))
試して比較すれば、どういうことかすぐに「何ができるか」を理解できると思う。
コードをマクロでいじり放題です。 twitter.com/antimon2/statu...
タグ: Julia言語
posted at 00:13:25
#Julia言語 関連
Juliaの構文木の可視化
nbviewer.jupyter.org/gist/genkuroki... twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 00:18:13
ごまふあざらし(GomahuAzaras @MathSorcerer
自分が求めるプログラミング言語の必須要件
#Julia言語 pic.twitter.com/WKpDEID5Va
タグ: Julia言語
posted at 00:20:03
やっぱりJuliaのメタプロ良く分からん。名前解決のアルゴリズムとかescとかがよく分かっていないせいだろう。引数の中に出現するsymbolをprefix.symbolと置換するマクロを書きたいのだけれど、素人考えじゃどうも上手くいかない(そもそもASTの木構造に従ったマクロの再帰ってどうやるんだ?)。
タグ:
posted at 00:25:13
#Julia言語 おもしろクイズ!
以下のMeta. show_sexpr表示させると結構おもろい。
実際に実行した結果も興味深い。
:((0:9) .+ 10 .+ 100)
:(((0:9) .+ 10) .+ 100)
:((0:9) .+ (10 .+ 100))
あと、これの @. 版をmacroexpandしたもの。
どうなるか?
答えは↓にある。
nbviewer.jupyter.org/gist/genkuroki...
タグ: Julia言語
posted at 00:28:00
#Julia言語 このスレッドでは単純に帰納的に
head: Symbol vect
を
head: Symbol row
に置換するマクロの例を扱っています。
gist.github.com/genkuroki/dd31...
twitter.com/mac_wac/status...
タグ: Julia言語
posted at 00:33:57
#Julia言語
nbviewer.jupyter.org/gist/genkuroki...
では、式中の行番号ノードを再帰的に削除して、可視化するマクロを書いて使っています。 twitter.com/mac_wac/status... pic.twitter.com/znT1Mxn0LG
タグ: Julia言語
posted at 00:38:32
Miles Stoudenmire @MStoudenmire
@redrapids The fact that there is a single, well-designed package manager for Julia. As a library developer moving from C++, it lets us have a wide range of dependencies without worrying whether our novice users can get them installed. Also much better than the situation with python.
タグ:
posted at 01:02:41
Mark Kittisopikul ht @markkitti
@tobydriscoll I admit this took a second for me to get. Here it is in #JuliaLang:
julia> reinterpret(UInt,1π)
0x400921fb54442d18
タグ: JuliaLang
posted at 01:20:50
SIRモデルが話題になったら、オイラー法でいいから、さくっとシミュレーションできる程度のスキルは身につけておきたいよね。自分で動かしてみて分かることはあるからね
タグ:
posted at 01:21:50
非公開
タグ:
posted at xx:xx:xx
改めてR、Python、Juliaの速度比較。
集計系の処理はみんなほぼ一緒。RとPythonは他も速度はほぼ同じだがカーディナリティによってパフォーマンスに差がでるっぽい?JuliaはJoin操作苦手。という感じだった。 なるほどなー
具体的な計測値は次のレポジトリのメモ通りです
github.com/MasatoTakahash...
タグ:
posted at 01:39:55
Stefan Karpinski @StefanKarpinski
@MStoudenmire @redrapids A key part is the artifact system and BinaryBuilder.jl which generates platform-specific artifacts. This lets people just download a tarball and have completely reliable working binary dependencies. This system lets people install binary dependencies that Just Work™
タグ:
posted at 01:43:40
Juliaもしかしてバッチ処理弱い?
Torchとかなら逆行列演算をバッチ処理とか出来るんだけど、そういう関数が見当たらない
(ってかそもそもTochのバッチ逆行列がGPUを並列に使ってるのかよく知らないけど)
タグ:
posted at 04:41:38
Dr. Chris Rackauckas @ChrisRackauckas
@tobydriscoll How #julialang sees π:
using OrdinaryDiffEq
cb = ContinuousCallback((u,t,integrator) -> u[2],terminate!)
prob = ODEProblem((u,p,t) -> [u[2],-u[1]],[1.,0.],(0.0,10.0))
solve(prob,Tsit5(),abstol=1e-14,
reltol=1e-14,callback=cb).t[end]
Float64 exact.
タグ: julialang
posted at 04:55:54
CUDASPARSEの存在はJulia使うことの強いモチベーションの一つになるような気がする
PyTorchもSparse対応するつもりらしいけど、まだって感じだしなあ
タグ:
posted at 05:18:06
非公開
タグ:
posted at xx:xx:xx
@misaki70533995 proj=:polarをplot()に渡すだけのようです!
goropikari.github.io/PlotsGallery.j...
タグ:
posted at 07:56:47
@jeremyphoward @aureliengeron @MStoudenmire @redrapids pkg can compile and install system specific binaries. For example, CUDA.jl is a one step install, including all the cuda binaries, from within Julia. From using conda, pkg is faster, more convenient, better UI and has less issues. see : julialang.org/blog/2019/11/a... @StefanKarpinski
タグ:
posted at 08:58:50
非公開
タグ:
posted at xx:xx:xx
@jeremyphoward @aureliengeron @MStoudenmire @redrapids It uses binarybuilder.org to build native binaries for all the platforms and then Pkg just installs the correct version into the Julia artifact directory, which the jll will load. Essentially it maps the native dep tree into the Pkg space. No sudo.
タグ:
posted at 09:01:14
非公開
タグ:
posted at xx:xx:xx
@jeremyphoward @aureliengeron @MStoudenmire @redrapids @StefanKarpinski Correction: Binarybuilder does the compilation, artifacts.jl is a general system for managing containers of data and their connection to julia packages. This includes tarballs. Best to check out this blogpost for details: julialang.org/blog/2019/11/a... But it seems to always just work
タグ:
posted at 09:13:48
#Julia言語 Intであって欲しいグローバル変数aを、函数の中で a::Int と書いて使うことはパフォーマンスに効く。
一方、パフォーマンス的には函数の引数の型は書く必要がない。
function f(x)
~
end
を
function f(x::Float64)
~
end
に書き直しても、計算速度には影響しない。 twitter.com/r9y9/status/13...
タグ: Julia言語
posted at 10:20:58
新しい配列型作る時にBaseとLinearAlgebraの関数を実装しとけばとりあえず他のライブラリと混ぜられるようになるっていうJuliaの戦略は良いよなあ
Pythonもそうあって欲しかった
タグ:
posted at 10:51:19
#Julia言語 もしかして、
function f(x; a.b=123) ~ end
のように書きたいが、a.bでエラーが出るという問題に関係しているのかな?
仮にそういうことなら、
function f(x; var"a.b"=123)
~
g(a, b, c; var"a.b")
~
end
のように書けます。 twitter.com/mac_wac/status...
タグ: Julia言語
posted at 11:17:24
@Hishinuma_t @HShinaoka #Julia言語 PAWさんが正しく指摘しているように、どのようなライブラリであっても、そのために用意したJuliaでの型について基本的な函数群を実装しておくだけで、Juliaで使用できるすべての機能やライブラリと混ぜて使えるようになります。
Juliaはライブラリを貼り合わせるための最強力な道具です。 twitter.com/akhdhys/status...
タグ: Julia言語
posted at 11:30:57
@Hishinuma_t @HShinaoka #Julia言語 素晴らしいライブラリがそのようにJuliaで使えるようになったとすると、Juliaで書かれたコードで微分方程式、統計、機械学習、などをやっている人は、自分が書いたコードに
新たなコードを追加することなく、
その素晴らしいライブラリを使用可能になります。
タグ: Julia言語
posted at 11:35:26
@Hishinuma_t @HShinaoka #Julia言語 の「中の人達」がJulia自慢をするときにも、沢山のパッケージの緊密な貼り合わせに成功していることを強調することが恒例行事になっています。
そのために役に立ったのがmultiple dispatchの仕組み。YouTubeにKarpinskiさんによる分かり易い解説があります。
www.youtube.com/watch?v=kc9Hws...
タグ: Julia言語
posted at 11:41:09
@Hishinuma_t @HShinaoka #Julia言語 デモ用に書いた単純なオイラー法の函数やプロット用のコードを
変更せずに、
Measurements.jlを使って、誤差付きの初期値について微分方程式を数値的に解いてプロットまで行けていることのデモンストレーションが以下のリンク先にあります。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 11:45:26
#Julia言語 速いことはJuliaだけの特徴ではない。
しかし、Juliaで書かれたパッケージの作者達が「他人のパッケージを利用しまくる」という形で緊密な共同作業を自然発生的に実現したという事実は注目に値します。
これは非常に興味深い。
www.youtube.com/watch?v=kc9Hws...
twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 12:07:27
@Hishinuma_t @HShinaoka #Julia言語 Juliaに限らず、PythonやRでも、みんな苦労しているのは、C++で書かれたライブラリの使用です。
ライブラリの作者がCで使えるAPIを用意してくれていれば簡単なのですが……。
その辺の事情は素人なのでよく分かりませんが、現時点では魔法のような解決策はないのだと思います。
タグ: Julia言語
posted at 12:16:51
#Julia言語 RTの内容を日本語でも紹介!
1ツイートにおさまる常微分方程式の数値解法のコードで円周率がFloat64の精度で__完全に正確に__求まってしまっています!
これにはびっくり!
OrdinaryDiffEq.jlを含むDifferentialEquations.jlはPythonでもRでも使えます。
github.com/SciML/Differen... twitter.com/chrisrackaucka... pic.twitter.com/ib8bAMwV0N
タグ: Julia言語
posted at 12:55:05
Juliaのパッケージを紹介するときに「DifferentialEquations.jlはPythonでもRでも使えます」のように言えるのは非常に気分がよい。
タグ:
posted at 12:59:53
#Julia言語 それ、わかります。
しかし、型クラスにまとめるという発想のJuliaとの相性はよくないと思う。
「実装した函数の分だけ機能が増える」であって欲しい。
問題は「この〇〇はどれだけ函数を実装すれば実行可能になるか」が滅茶苦茶分かり難いこと。それを表示してくれる函数が欲しいです。 twitter.com/chor0sk/status...
タグ: Julia言語
posted at 13:10:05
#Julia言語 多変数函数の数値積分のパッケージHCubature.jlは被積分函数の値の型に
+
-
* real
norm
が定義されていれば動くとREADMEに書いてある。
github.com/JuliaMath/HCub...
しかしこれをユーザー側が確認するのは結構大変。 pic.twitter.com/bmxtO8aoBt
タグ: Julia言語
posted at 13:30:11
#Julia言語 行列代数(正方行列の代数)の要素を成分とする行列のLU分解をJuliaにやらせてみました。
問題は、行列代数の実装でメソッドをどれだけ定義すればLU分解してくれるか。
この例を見れば、Juliaの便利な所と既存の解説が不十分な所が非常によく分かると思う。
gist.github.com/genkuroki/4060... pic.twitter.com/xEwXbf65hI
タグ: Julia言語
posted at 15:11:42
#Julia言語 Matrix{Float64}をラップして作った行列代数の要素を成分とする行列のLU分解をLinearAlgebra.luにさせるためには、環構造+αの zero, one, +, -, *, / が必要なのは当然なのですが、abs (もしくは norm) の定義も必要!
素人の私は前もってabsが必要なことを予想できませんでした。
タグ: Julia言語
posted at 15:14:06
ごまふあざらし(GomahuAzaras @MathSorcerer
確かに :call もシンボルだからこんなこともできちゃう(普通はこんなことしないが)
#Julia言語 pic.twitter.com/z2dwvCPykX
タグ: Julia言語
posted at 16:13:37
ごまふあざらし(GomahuAzaras @MathSorcerer
QuoteNode こんな感じか pic.twitter.com/rWcoT2HdqO
タグ:
posted at 16:20:23
ごまふあざらし(GomahuAzaras @MathSorcerer
QuoteNode を入れることで 補完を無効にできるのね(もちろんそういうことも docstring やマニュアルにも記述されてはいる)
Ref: twitter.com/genkuroki/stat... pic.twitter.com/cIjMvl8ksu
タグ:
posted at 16:54:45
ごまふあざらし(GomahuAzaras @MathSorcerer
```
julia> exq = quote 1+1 end
julia> ex = :(1+1)
julia> exq == ex
false
```
となる理由が今までわかんなかったけれど
julia> exq = delete_linenums!(quote 1 + 1 end)
julia> exq.args[1] == ex
true
だったのでその程度の意味では同じってことがわかったので安心できた. pic.twitter.com/09LHUdvp6o
タグ:
posted at 17:06:53
ごまふあざらし(GomahuAzaras @MathSorcerer
show_sexpr の IO をコントロールすることでこんなしょーもないこともできる
```julia
buf = IOBuffer()
Meta.show_sexpr(buf, :(1+1))
ex_str = "Expr" * String(take!(buf))
Meta.parse(ex_str) |> eval |> eval
``` pic.twitter.com/3oKb5wMlpm
タグ:
posted at 17:30:08
非公開
タグ:
posted at xx:xx:xx
ごまふあざらし(GomahuAzaras @MathSorcerer
#Julia言語
パッケージ3つに自明なPR送ったけれど更新頻度遅めのが多いから取り込まれるかな・・・?!首を長くして待とう
タグ: Julia言語
posted at 20:07:48
#Julia言語 小ネタ
行列代数型の表示の仕方を少し頑張ってみた。
display と show の場合をを分けた。
M{2, Float64}:
1.0 2.0
3.0 4.0
と
M[1.0 2.0; 3.0 4.0]
の違い。
gist.github.com/genkuroki/4060... pic.twitter.com/cKYzqPiAW8
タグ: Julia言語
posted at 20:42:28
日本で無痛分娩が普及しないの、痛みを美徳とするとかって理由より、圧倒的にマンパワー不足が理由なんだけどいつになったら知れ渡るんやろか。産婦人科医で無痛やる人もいるけど分娩扱う産婦人科自体減ってるし、産科麻酔やってくれる麻酔科医もいないのよね
タグ:
posted at 20:46:50
#Julia言語 多分、自分でパッケージを書いて貢献してねということなのだと思います。
SparseMatrixCOOの方なら
github.com/QuantumBFS/Lux...
にあります。LILの方
github.com/vvjn/SparseMat...
は古くなっていて使えない。 twitter.com/akhdhys/status...
タグ: Julia言語
posted at 20:56:19
Juliaのsortpermは配列をソートしたときの要素の順番を格納した配列を返す。
x=[1,3,5,2,4]
ならsortperm(x)は[1,4,2,5,3]みたいな感じ。順番をつけてくれるわけね。元の配列を壊さないので便利
タグ:
posted at 21:03:13
JupyterLab上のR kernelでRを使うノートブックの作り方も探っていて、コード補完やインデント(コード整形)が(デフォルトだとほぼ何も)できなくてかなりいらいらしてしまう。せめて括弧くらい閉じて欲しい!これって拡張機能等でRStudioと近いくらい便利にRが書ける環境にならないのでしょうか??
タグ:
posted at 21:38:59
Jupytext良いですよ✨(RStudioでRmd編集してJupyterlabで対応するipynbファイルを開いた際に同期される) twitter.com/u_ribo/status/... twitter.com/fronori/status...
タグ:
posted at 21:57:02
🆕電子版もあります コロナ社
1から始める Juliaプログラミング
www.coronasha.co.jp/np/isbn/978433...
🔗電子版 販売元リンク
kw.maruzen.co.jp/ims/itemDetail...
タグ:
posted at 22:00:23
間違ってないからなぁ。どちらかというと「のこり」の方が間違ってるとすら思う。「はこのなかにのこっているあめ」なら良いけどそれにしては回答欄が狭いしな。 twitter.com/uochumeinan/st...
タグ:
posted at 22:13:18
このバージョンアップしたのは何のライブラリか分かる?マジな話オレは分からない。でもそれってマジでクールなことでさ。オレは知る必要がないのさ。
朝起きてJulia言語のパッケージをアップデートすると、なんか計算早くなってたりする...笑 pic.twitter.com/Gg6LnXQmHZ
タグ:
posted at 22:34:03
I made a video showing how to implement R's dplyr::across in Julia
youtu.be/5MtYO9tUfHw
I hope to demonstrate the power of Julia and easy it is to port some of the R goodness into Julia via powerful features like multiple-dispatch
#julialang #rstats
posted at 23:18:22
データ同化の例題としてローレンツ96モデルの計算をjuliaでやらせてるが、40次元の計算でも1000ステップ、10秒くらいで終わってそう。早いなー。#julialang #データ同化
posted at 23:32:37