Twitter APIの仕様変更のため、「いいね」の新規取得を終了いたしました

黒木玄 Gen Kuroki

@genkuroki

  • いいね数 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年10月17日(土)

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 これは非常に面白そうです。

遊べそうな「Juliaの深淵」ネタが満載されています。

evalは結構難しい函数です。

添付画像は以下より↓
janvitek.org/pubs/oopsla20-...
World Age in Julia Optimizing Method Dispatch in the Presence of Eval (Extended Version) twitter.com/j_v_66/status/... pic.twitter.com/zBtcpQPXUm

タグ: Julia言語

posted at 00:26:35

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 線形代数へのインターフェースとして、MATLABのスタイルは非常に優れており、MATLABは非常に有名な製品。

Juliaは多くのプログラミング言語の良い点を取り入れているのですが、線形代数のスタイルはMATLABスタイルになっています。

NumPyを真似しなくて非常に良かった!本当に良かった!

タグ: Julia言語

posted at 00:37:56

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 行列のかけ算に普通に * を使わせてくれないようなスタイルをJuliaが採用しなくて、本当によかったと思います。

関連スライド↓
www.slideshare.net/mobile/acidfla...

Juliaでは線形代数を扱うスタイルをさらに改善するためにファンデルヴェルデン著『現代代数学』まで戻って考え直されています! pic.twitter.com/ozCCANrqKI

タグ: Julia言語

posted at 00:53:11

黒木玄 Gen Kuroki @genkuroki

20年10月17日

私の個人的な感覚では、線形代数へのインターフェースとしてのNumPyのスタイルのひどさは、教育用プログラミング言語として、#Julia言語 をPythonより推したくなるかなり強い理由の1つです。

タグ: Julia言語

posted at 01:07:45

Julia Bloggers @juliabloggers

20年10月17日

New post: Should I use mutable or immutable containers for agent based models in Julia? - www.juliabloggers.com/should-i-use-m... #julialang

タグ: julialang

posted at 01:12:16

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 解説

struct Foo{S,T,U} ~ end

としてあるとき、

Foo{S} == Foo{S,T,U} where U where T

Foo{S,T} == Foo{S,T,U} where U

となる。だから、

Array{T} == Array{T,N} where N

VectorとMatrixはそれぞれ

Array{T,1} where T
Array{T,2} where T

と同じ。

gist.github.com/genkuroki/4423... twitter.com/HShinaoka/stat... pic.twitter.com/71AXud09wF

タグ: Julia言語

posted at 01:26:35

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 配列を作るときには

Array{Float64, 2}(undef, 3, 4)

の代わりに

Array{Float64}(undef, 3, 4)

と書いても同じ。この場合には Array{T}とArray{T,N}の違いを気にする必要はない。

多重ディスパッチでは気にする必要がある。あと

struct Foo{T}
A::Array{T}
end

ともしたくない。

タグ: Julia言語

posted at 01:29:25

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 あと、これは止めた方が良いと思う書き方に

function f(x::Array{Float64,2})::Array{Float64,3}

end

がある。

このような書き方をすると、Array型ではない配列に使えない函数ができあがり、メモリ割当を節約するためにviewで切り出した部分配列に結果に適用できなくなる!

タグ: Julia言語

posted at 01:33:18

ぽぽんた∈ @poponta_1218

20年10月17日

julia進捗
確率統計の課題のグラフはこれで作ることにしたけど
やり方がわからないので試行錯誤 pic.twitter.com/A0aqqf3kPg

タグ:

posted at 01:39:41

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 Juliaの型システムをほとんど理解していない段階では

function f(x)

end

のような書き方をした方が無難。このように書いても計算速度の劣化は起こらない。

どうしても引数の型を書きたいなら

function f(x::AbstractArray{T,2}) where T<:Number

end

のような感じ。

タグ: Julia言語

posted at 01:46:33

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 添付画像

1. f(x::Array{T,1}, d) where T と書いたせいで、UnitRangeで使えない函数ができあがった。

2. 引数の型を指定しなければそういうトラブルは起こらない。

3. f_AbstractArray_Number(x::AbstractArray{T,1}, d) where T<:Number と書いた場合。

gist.github.com/genkuroki/fd96... pic.twitter.com/JnZNshw4pq

タグ: Julia言語

posted at 02:06:02

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 添付画像

1. f_AbstractArray_Number(x::AbstractArray{T,1}, d) where T<:Number の T<:Number という制限のせいで、行列成分の配列に使えない函数になっていた。

2. 引数の型の記述を無くせばそのようなトラブルで困ることはない。

gist.github.com/genkuroki/fd96... pic.twitter.com/D4Afxk7RB6

タグ: Julia言語

posted at 02:06:03

鍋 @watanany

20年10月17日

JuliaでPyCall経由でcv2を使おうと、Conda経由でインストールしたらうまくいかなかった。
Condaパッケージが最新のPython(=v3.8)を使おうとして、それがバージョン指定の範囲外だったからだった。

タグ:

posted at 02:07:31

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 四則演算や絶対値やノルムなどの基本的な演算が定義されていれば動くようにプログラムを書くように心掛けて、引数の制限を可能な限り撤廃した方が使い回しの効く函数ができあがる。抽象化は重要。

特殊なケースについてのみ通用する方法については多重ディスパッチで対処する。

タグ: Julia言語

posted at 02:08:43

OpenSourcES @opensourcesblog

20年10月17日

Sometimes it's too much fun to create random stuff with Javis #JuliaLang

Check it out:
github.com/Wikunia/Javis.jl pic.twitter.com/KEHpxh6yA9

タグ: JuliaLang

posted at 02:21:45

Jiahao Chen 陈家豪 @acidflask

20年10月17日

The @JuliaLanguage compiler is really the secret sauce to making abstractions free (or cheap), resulting from deliberate and delicate language design and expressivity. Great to see acknowledgement of the compiler technology in #JuliaLang by the academic PL community twitter.com/kdwkshh/status...

タグ: JuliaLang

posted at 02:23:04

Jiahao Chen 陈家豪 @acidflask

20年10月17日

Even more important is the socio-PLT aspect of compiling away the cost of abstraction in #JuliaLang. Discovery of speed approaching raw bare-metal performance incentivizes users to optimize their codes to exploit compilability, thus driving convergence toward idiomatic programs

タグ: JuliaLang

posted at 02:27:38

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 実戦的な事例

github.com/JuliaMath/HCub...
HCubatue.jl は +, -, 実数倍, ノルムが定義されている任意の型に値を持つ函数に適用可能な多重数値積分のパッケージなのですが、引数の型を制限し過ぎていてdual numberに適用できなくなっていた。

プルリクエスト→ github.com/JuliaMath/HCub...

タグ: Julia言語

posted at 02:28:02

Jiahao Chen 陈家豪 @acidflask

20年10月17日

And the friction in that iterative refinement is reduced by working in a dynamic language

タグ:

posted at 02:28:14

Kiichi @Ki_chi

20年10月17日

PandasのDataFrameのそれぞれの列について最頻値を計算する | Ki_chi@Blog ki-chi.jp/?p=1080 pandasのmode関数が遅すぎるという話。SciPy使うとだいぶ早くなる。(2分15秒→11秒)

…ちなみにJuliaだと1秒未満。

タグ:

posted at 02:36:31

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語

f(x, y) = iszero(x) && iszero(y) ? zero(x+y) : x^2*y/(x^2+y^2)

における zero(x+y) の x+y の演算はllvmの段階で削除されていることに注目!

これはJuliaのコンパイラが賢い場合。

nbviewer.jupyter.org/gist/genkuroki... twitter.com/genkuroki/stat... pic.twitter.com/AJ0gjaURXT

タグ: Julia言語

posted at 02:52:32

Qiita_Python @qiita_python

20年10月17日

Julia早引きノート[07]try, catch, finally - qiita.com/ttabata/items/...

タグ:

posted at 03:34:13

mathematica_command @mathematica_bot

20年10月17日

StreamPlot[{vx,vy},{x,xmin,xmax},{y,ymin,ymax}] :
ベクトル場{vx,vy}の流線プロットをを x と y の関数としてプロットする

タグ:

posted at 03:35:44

Julia News @julialang_news

20年10月17日

Should I use mutable or immutable containers for agent based models in Julia? www.juliabloggers.com/should-i-use-m... #juliabloggers

タグ: juliabloggers

posted at 04:38:45

Julia Belyakova @julbinb

20年10月17日

Let's try a short thread about the paper :)

— What do we want? OptimizedCode + Eval - HardcoreDeoptimizationStuff
— Wow, is this possible? Yes, @JuliaLanguage found a way!
— How do we do it? We temporarily ignore changes that Eval makes to function definitions.
(1/n) twitter.com/j_v_66/status/...

タグ:

posted at 05:07:10

Julia Belyakova @julbinb

20年10月17日

— But doesn't that make Eval useless?
Not at all. In most cases, those changes are not needed immediately, so you won't even notice that they were ignored for a moment.
(2/n)

タグ:

posted at 05:21:47

Julia Belyakova @julbinb

20年10月17日

— Ok, and how does that help with performance?
Since the compiler knows that function definitions will not change for some time (even if Eval is coming), it can safely optimize the existing functions and function calls.
(3/n)

タグ:

posted at 05:26:45

Julia Belyakova @julbinb

20年10月17日

— And what did you say about deoptimizations?
No on-stack replacements and hardcore stuff are needed! While the effect of Eval is temporarily restricted, the compiler needs not to worry about deoptimizing: what's optimized and already running, can just keep running.
(4/n)

タグ:

posted at 05:42:00

Julia Belyakova @julbinb

20年10月17日

— Are there any other benefits of this approach?
Yes: the programmer knows exactly when function definitions can change. If Eval decides to replace "mute" with "turn-on video" function, this at least won't happen during the current video call :)
(5/n)

タグ:

posted at 05:47:30

Julia Belyakova @julbinb

20年10月17日

— But what if I really need that Eval-introduced function straight away?
That is possible, but you have to pay for it with performance.

— And how do I do it?
By using so-called invokelatest function, or by using Eval again—to call the newly-defined function.
(6/n)

タグ:

posted at 06:01:01

Yoshihiko Kunisato/国 @KunisatoY

20年10月17日

@kosukesa できるけど,重いはずです。jupyter使いましょう。
おっとこんなものが。
hub.docker.com/r/ykunisato/cc...
TensorFlowも動くし,最近出たRNNで認知課題の学習をするPsychRNNもはいっている。juliaもあるし,juliaでcmdstanもはしる。こんな設定面倒そうなものが1行のコードで用意できる!

タグ:

posted at 06:02:38

Roger Luo 罗秀哲 @rogerluorl18

20年10月17日

Wow this is a very nice and clear explanation on how world ages works. I learned a lot! twitter.com/j_v_66/status/...

タグ:

posted at 06:04:49

Julia Belyakova @julbinb

20年10月17日

What we talked about is called World Age in Julia. More things in the OOPSLA'20 paper:
* explanation of world age (WA)
* formalization of WA semantics + optimizations and their correctness
* analysis of eval-usage in Julia, patterns and anti-patterns
julbinb.github.io/projects/julie...

タグ:

posted at 06:12:17

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 最適化の定番ネタ

834 ms ← In[2] 以下のリンク先と本質的に同じ
578 ms ← In[3] hypotをx^2+y^2に
193 ms ← In[4] rand(rng, 2)を2つのrand(rng)に
32 ms ← In[5] 上の2つを両方

26倍速くなりました。

ほんのちょっとしたことで一桁以上遅くなる。

gist.github.com/genkuroki/2ac6... twitter.com/atsushi_twi/st... pic.twitter.com/UeOtR98257

タグ: Julia言語

posted at 07:34:16

黒木玄 Gen Kuroki @genkuroki

20年10月17日

おそらく(本音を言えばほとんど確実だと思っている)、#Julia言語 に限らず、「ほんのちょっとしたことで一桁以上遅くなっている場合」は普通にあるものと思われる。

Juliaを使うことの利点は、最適化のコツが公式ドキュメント化されており、一桁を取り戻すことが容易なことだと思う。

タグ: Julia言語

posted at 07:36:51

黒木玄 Gen Kuroki @genkuroki

20年10月17日

C, C++, Fortranを普段使っている人たちは、自分が書いたコードは十分速いと思っているかもしれないが、その確信にどの程度の証拠があるのだろうか?

#Julia言語 ならば最適化の試行錯誤が恐ろしく楽である。

そのせいでJuliaを使い始めた人達はすぐに最適化に挑戦し出す。😊

タグ: Julia言語

posted at 07:40:46

宮原篤 6th「小児科医ママとパパのやさ @atsushimiyahara

20年10月17日

検査前確率を上げて検査

無造作にPCR検査を拡大するリスクよりも、経過観察および症状の有無を確認した後、最終判定のためにPCR検査を使うことを説いたのである。

新型コロナを封じた台湾、日本との「決定的な違い」とは | DOL特別レポート | ダイヤモンド・オンライン diamond.jp/articles/-/250...

タグ:

posted at 07:41:30

宮原篤 6th「小児科医ママとパパのやさ @atsushimiyahara

20年10月17日

日本もそれなりに頑張っているけど、台湾のPCRは「何時でもどこでも何度でも」じゃないのに非常に感染を抑えていますよ。

タグ:

posted at 07:45:49

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 添付画像にある情報で最適化時に有用なのは、実行時間よりもメモリアロケーションの数値の方。

無駄なメモリ割当は計算効率を大幅に悪化させることが多いし、慣れればプロファイリング抜きにどの辺が原因なのかすぐに分かることが多い。 pic.twitter.com/VqTZRQsVNu

タグ: Julia言語

posted at 07:47:33

Atsushi Sakai @Atsushi_twi

20年10月17日

ifelseっていう関数初めて知った twitter.com/genkuroki/stat...

タグ:

posted at 07:58:23

Stefan Karpinski @StefanKarpinski

20年10月17日

@johnmyleswhite Overflow checking for integers would be nice if compilers were good enough at optimizing them away when they can’t actually happen, or at least hoisting them out of loops. Alas they are not

タグ:

posted at 08:16:51

Kosuke Sawa @kosukesa

20年10月17日

@KunisatoY 404でした…

タグ:

posted at 08:33:32

Yoshihiko Kunisato/国 @KunisatoY

20年10月17日

@kosukesa hub.docker.com/r/ykunisato/cc...

渾身の誘い文句が無駄に・・・

タグ:

posted at 08:39:04

勝川 俊雄 @katukawa

20年10月17日

311の時も、放射能デマと戦ったのは、研究者の有志・個人でした。君子危うきに近寄らずで、箝口令を敷いた学会もありました。たとえ世論の反発を招くとも、学術的に正しいことを主張して欲しかったです。

タグ:

posted at 08:47:14

Kosuke Sawa @kosukesa

20年10月17日

@KunisatoY 保育園の運動会終わったら試します、ありがとうございます!

タグ:

posted at 08:50:42

Yoshihiko Kunisato/国 @KunisatoY

20年10月17日

@kosukesa 運動会楽しんでください!なお,裕福な研究室の場合は,1回の使用につき,100円かセブンのホットスナック1つになります。

タグ:

posted at 08:52:38

Mark Kittisopikul ht @markkitti

20年10月17日

@johnmyleswhite julia> Int128(2)^63
9223372036854775808

タグ:

posted at 09:03:58

EARLの医学ツイート @EARL_med_tw

20年10月17日

発熱外来やってたら不定愁訴もちゃんと聞かないとやってられないですよ twitter.com/joyriochan/sta...

タグ:

posted at 09:43:37

EARLの医学ツイート @EARL_med_tw

20年10月17日

不定愁訴と思われてたものの中に疾患が隠れてたことなんてざらにあります。不定愁訴とスルーされて見逃され続けて発熱外来にたどり着いたわけで。機能性高体温症とかたくさんいますよ

タグ:

posted at 09:45:53

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 すでに解決済みのようですが、JuliaのことはJuliaに聞くのが早くて確実です。

julia> ?
help?> ?
a ? b : c
Short form for conditionals; read "if a, evaluate b otherwise evaluate c". Also known as the ternary operator.

?でヘルプモードになります。 twitter.com/dynyanko/statu... pic.twitter.com/2L4gfK2W83

タグ: Julia言語

posted at 10:27:26

madfish @madfish19

20年10月17日

何とjuliaは会話機能もついているのです。 twitter.com/genkuroki/stat...

タグ:

posted at 10:29:39

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 Juliaの

a ? b : c



if a b else c end

と同等です。

x ≥ 0 ? x : -x



if x ≥ 0 x else -x end

と書いても同じ。この場合はセミコロンが無くても大丈夫。 pic.twitter.com/DtD6OnC4W3

タグ: Julia言語

posted at 10:32:40

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語

if a
A
elseif b
B
elseif c
C
else
Z
end



a ? A :
b ? B :
c ? C :
Z

に書き直される。必要に応じて A, B, C, Z を () でかこむ。 pic.twitter.com/pb0orK4JsP

タグ: Julia言語

posted at 10:42:02

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語

if a
return A
elseif b
return B
elseif c
return C
else
return Z
end

の代わりに

a && return A
b && return B
c && return C
return Z

と書ける。

タグ: Julia言語

posted at 10:44:39

rithmety @rithmety

20年10月17日

だれか良い方法知りませんか #Julia言語 pic.twitter.com/Wn9ynySBjr

タグ: Julia言語

posted at 10:51:56

エピネシス @epinesis

20年10月17日

スペインの公園でポプラの綿毛を燃やしている様子。ポプラの綿毛は燃えやすく火災の原因にもなるため、このように焼き払う作業を行います。綿毛は瞬時に燃え尽きるため、芝生が燃える心配はありません。
pic.twitter.com/UFgaJxYZtl

タグ:

posted at 11:17:13

rithmety @rithmety

20年10月17日

日常的に使うなら RandomExtensions が良さそう。
julia にはまともなパッケージマネージャがついてる。
競技プログラミングしたいときとかに良い書き方が思いつかない。

タグ:

posted at 11:52:31

rithmety @rithmety

20年10月17日

大きく勘違いしてたかもしれない…。

タグ:

posted at 12:00:47

eijit @eijit

20年10月17日

到着した。
Julia か Rust で競プロを再開したい。 pic.twitter.com/tsz8UGk7qM

タグ:

posted at 12:01:20

rithmety @rithmety

20年10月17日

10 行目は DataType のタプルで 11 行目は Float のタプルだ。
DataType のタプルに Float を入れながら作れれば良さそう。

タグ:

posted at 12:09:11

rithmety @rithmety

20年10月17日

N=100 のときは 3 番目は 4 番目の半分くらいの時間になる…。
github.com/JuliaLang/juli...

タグ:

posted at 12:37:38

rithmety @rithmety

20年10月17日

やはりマクロでなんとかするのが一番かも。 #Julia言語 pic.twitter.com/AyvMpcYw1q

タグ: Julia言語

posted at 13:02:07

アニ @gorotaku

20年10月17日

例えばうちの大学では、全ての授業のコマについてZoomの固有IDを振って配布し、授業一覧表からリンクをクリックしたらその「教室」に行けるようにした。授業内容はクラウド録画され、録画は日ごとにまとめられて公開される。

タグ:

posted at 13:03:03

アニ @gorotaku

20年10月17日

各授業へのアクセスは(録画も含め)g suite for educationのアカウント基準で管理される。そのため非常勤講師にもzoomとg suiteのアカウントを発行。考えてみたらかなりの手間なんだけど、手作業で組み上げたシステムなのよ

タグ:

posted at 13:05:23

アニ @gorotaku

20年10月17日

すごいじゃない?「優れたICT活用の取り組み」とかって表彰されても良さそうじゃない?でも現実には「対面50%以下の大学」って晒されるんですよー残念ー

タグ:

posted at 13:06:20

アニ @gorotaku

20年10月17日

教員がzoomミーティングのアドレスを学生に連絡する必要もないし、自分で録画を用意して学生が見られるようにお膳立てする必要もない、授業の時間になったら時間割からそのリンクをクリックすればOK、でもアクセス管理/セキュリティはきっちりやってる、というとこまで自前でシステム作ったのよ

タグ:

posted at 13:11:01

アニ @gorotaku

20年10月17日

勿論各教員にはそれぞれ自分で選んだ方法(Google ClassroomとかYouTubeとか)で授業をやる裁量は与えられてて好きに選べるんだけど、「自分が何も準備しないでも授業が成り立つハコは大学が用意してくれてる」ってことの安心感凄いよね、僕ですらそう思った

タグ:

posted at 13:13:30

yamazaks @yamazaksv2

20年10月17日

@garapago03 ◯ 出題者は教科書(学習指導要領)で習っていない内容を使わないと解けない問題を出してはいけない。

×解答者は教科書で習っていない内容を使って解いてはいけない。

だと考えます。

タグ:

posted at 13:18:21

アニ @gorotaku

20年10月17日

これってさっきの動画でおっさんが煽ってた「使えるものは何でも使って、できることからできる人から、既存のルールにとらわれず臨機応変に、何でも取り組んでみる」そのものじゃないんですかね。でもそう煽ってた連中は褒めてくれないどころか後ろから撃って来るのよ

タグ:

posted at 13:23:47

アニ @gorotaku

20年10月17日

後ろから撃って来る連中が何がしたいかというと、「小中校は対面できてるのに大学はけしからんな?大学の連中はサボってるからな?」と騒ぎたいおっさんメディアに生贄を投げ込みたいのよ。そうして自分たちに矛先が向かないようにしたい

タグ:

posted at 13:29:28

アニ @gorotaku

20年10月17日

繰り返しになるけどうちの大学のシステム、そういうパッケージが予め提供されているわけじゃなくて、教職員のチームが四月から必死で作ってくれたのよ。で今も毎日ちゃんと保守してくれてるのよ。そのこと考えるともう腸煮えくりかえるよね

タグ:

posted at 13:33:41

非公開

タグ:

posted at xx:xx:xx

みゅう⛩狼欒 @myu65_laurant

20年10月17日

JuliaのDataFrameってPandasと互換性あるのかな?

タグ:

posted at 13:55:03

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 完璧な互換性はないですが、そこそこ実用になる感じで、PandasのデータフレームのJuliaへの変換ならできます。

nbviewer.jupyter.org/gist/genkuroki... の方法2がお勧め。

juliadata.github.io/DataFrames.jl/... にPandasとJulia DataFrames.jlの比較があります。似たような感じで使えます。 twitter.com/myu65_laurant/...

タグ: Julia言語

posted at 14:08:18

yamazaks @yamazaksv2

20年10月17日

「減点されるかもしれないから使わない方がいい」と言う論理は「いじめられる側にも原因があるから、まずはそれを除くべき」と言うのと変わらないロジックだと考えます。

タグ:

posted at 14:08:39

アニ @gorotaku

20年10月17日

ああ一つ追加。「教員がフォームで申請するだけで、その授業に履修登録してる学生が全員入ったGoogle Classroomを建ててくれるサービス」もあります。すごい便利。

タグ:

posted at 14:20:13

非公開

タグ:

posted at xx:xx:xx

Pt @drift_ing_cloud

20年10月17日

Juliaをちょっと触ってみる。。。

タグ:

posted at 14:45:30

黒木玄 Gen Kuroki @genkuroki

20年10月17日

@rithmety #Julia言語

gist.github.com/genkuroki/d69f...

using Random: rand!

して、前もって確保していた配列aにrand!(a)すれば追加のメモリ割当が何度も起こることを防げます。

無駄なメモリ割当を防ぐ定跡はin-place函数を使うこと。

公式文書の解説↓
docs.julialang.org/en/v1/manual/p... twitter.com/rithmety/statu... pic.twitter.com/oRCH70uZLc

タグ: Julia言語

posted at 14:46:27

黒木玄 Gen Kuroki @genkuroki

20年10月17日

@rithmety #Julia言語 の最高にマニュアルはソースコードです。

オープンソースの最大の強み!

多くの函数が「in-place版を先に定義して、in-place版から非in-place版を作る」という方針で作られています。

だから、使用する函数のin-place版を見付けて使うだけで、無駄なメモリ割当が解消することが多い。

タグ: Julia言語

posted at 14:50:11

永井 @HNagai1108

20年10月17日

Juliaのマクロに入門したい(最近TLでよく見る)

タグ:

posted at 14:50:35

CT1 @mb_checker

20年10月17日

Juliaは積極的に新しいバ-ジョンにしてけば良いな。ラズパイ4 での1.0→1.5.2の速度差が凄いな。簡単なル-プで、0.042205sec→0.000001secの改善だと。。。

タグ:

posted at 14:57:16

黒木玄 Gen Kuroki @genkuroki

20年10月17日

@rithmety #Julia言語

マクロを使うとデバッグが大変になることの方が多いです。

乱数をN個まとめて生成するならin-place rand!が分かり易い。

あと、配列を経由する必然性がないのに配列経由にすると遅くなる。複雑な工夫は大抵失敗する。

以下のリンク先のIn[5]の書き方がシンプルで良いと思います。 twitter.com/genkuroki/stat...

タグ: Julia言語

posted at 15:29:07

はつしま @love_and_sessue

20年10月17日

"Julia"でググるとちゃんと言語に関するサイトが出て、えらいってなった

タグ:

posted at 15:31:48

黒木玄 Gen Kuroki @genkuroki

20年10月17日

@rithmety #Julia言語 どうしてもマクロを使いたいなら、rand以外にをも一般的に使えるマクロを

macro repeat(N, expr)
Expr(:tuple, (expr for _ in 1:N)...) |> esc
end

@ repeat 10 rand(rng)

と使う手もあると思いました。

push!やforループは可能な限り書きたくないです。

gist.github.com/genkuroki/d69f... pic.twitter.com/FSyFcaLyb1

タグ: Julia言語

posted at 15:39:59

黒木玄 Gen Kuroki @genkuroki

20年10月17日

@rithmety この程度のことでは「抽象化」という呼び方は好ましくないと思いました。

少なくともrand専用のマクロは特殊過ぎて「抽象化」になっていないと思います。

目的のために楽をできるかどうかが重要。

煩雑な割に汎用的になっていない工夫は大抵失敗する。

タグ:

posted at 15:53:12

非公開

タグ:

posted at xx:xx:xx

Sakaguchian @SndTECH1

20年10月17日

Juliaはじめました。
とりあえずPythonとの計算速度比較やってみる。(やってみたかった)

タグ:

posted at 16:18:07

rithmety @rithmety

20年10月17日

@genkuroki 確かに
1) x と y が直書きされている mcpi の例では rand を2回書く方が
2) rand専用のマクロより repeat マクロの方が
分かりやすいと思います。

個人的な関心は「コンパイル時に必要な乱数の数が分かっている場合にヒープを使わず、かつ読みやすく書くには」という点にあります。

タグ:

posted at 16:22:13

Yuki Nagai @cometscome_phys

20年10月17日

cとかfortranのコードをJuliaで使うためにdockerを使ってクロスコンパイルしてくれるパッケージBinaryBuilder.jlがすごい。

youtu.be/3IyXsBwqll8

タグ:

posted at 16:22:57

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 マクロの作り方

@ rep 3 f(x)



(f(x), f(x), f(x))

を実行するようにしたい。マイ野良パッケージ使用で

(A, A, A)



Expr(:tuple, :A, :A, :A)

で作れ、exprのN回の繰り返しタプルは

Expr(:tuple, (expr for _ in 1:N)...)

で作れることが分かる。

gist.github.com/genkuroki/a7ef... pic.twitter.com/7DssjHwKe1

タグ: Julia言語

posted at 16:51:11

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語

rep_naive と rep の違いは esc の有無(前者にescがない)。

@ rep-naive 10 rand(rng)



@ rep 10 rand(rng)

も意図通りに動いているように見える。

しかし、@ macroexpand の結果を見ると異なる。この違いの影響が生じる場合はあるか?

答え: ある。

続く pic.twitter.com/ZvZsjIplBO

タグ: Julia言語

posted at 16:55:10

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 esc無しだと、module Hoge内のθに

Main.@ rep_naive 3 sin(θ)

でアクセスできない。escありの

Main.@ rep 3 sin(θ)

なら大丈夫。

しかし〜続く pic.twitter.com/1fv7sgNEH1

タグ: Julia言語

posted at 17:11:12

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 しかし、

@ rep N rand()

でエラーが出てしまう。Nの部分がナマの10とかなら大丈夫だが、変数になった途端にアウト。続く pic.twitter.com/31P5q7ucJK

タグ: Julia言語

posted at 17:12:52

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 そこで、

macro rep_revised(nexpr, expr)
N = eval(nexpr)
Expr(:tuple, (expr for _ in 1:N)...) |> esc
end

とすると、添付画像で試した範囲内ではうまく行く。

ただし、evalは各モジュール(名前空間)ごとに別に定義されていることに注意が必要になる。 pic.twitter.com/XQ2yOeCGEB

タグ: Julia言語

posted at 17:15:11

Yuki Nagai @cometscome_phys

20年10月17日

BinaryBuilder.jlを使ってあるオープンソースのc言語のソフトウェアをクロスコンパイルできた。無事うまくいけば任意のプラットフォームでJuliaから実行できるようになるはず。ライブラリ化してなくても実行ファイルを引数つきで実行できるはず

タグ:

posted at 18:42:19

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 メモ

discourse.julialang.org/t/get-the-name...
Get the name of the invoking module

evalを使いこなすには、この辺のことに触れなければいけないような感じ。evalには色々ある。

* 各モジュール(名前空間)ごとのeval(x)
* Base.MainInclude.eval(x)
* Core.eval(m, x)

タグ: Julia言語

posted at 18:45:52

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語

うまく行っていないですね。 N が 5 だと解釈されている。 twitter.com/genkuroki/stat... pic.twitter.com/bPOA6YgG9j

タグ: Julia言語

posted at 18:49:43

k @musicisthebest_

20年10月17日

これけっこう新種じゃないですか。指導者は超算数をどれだけ理解しているのか。 twitter.com/tanetane666/st...

タグ:

posted at 18:53:20

Authns @authns_sukoshi

20年10月17日

大学のcent OSにjulia入れて、Plots.jl入れられなくて詰んでた。

タグ:

posted at 18:54:17

OokuboTact 大久保中二病中年 @OokuboTact

20年10月17日

@musicisthebest_ チョー算数初心者の新人教師なのでは?

タグ:

posted at 18:55:32

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語

macro rep_revised2(nexpr, expr)
N = Core.eval(__module__, nexpr)
Expr(:tuple, (expr for _ in 1:N)...) |> esc
end

これなら、module内でのevalが実行される。

こんな感じで eval が出て来ると難しくなる。

マクロとevalについては全然理解した気分になれない。 pic.twitter.com/i0ALU5w1Kp

タグ: Julia言語

posted at 18:59:02

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 以上を読めば、シンプルなマクロであっても、意図していなかったバグが容易に発生する場合があることがよく分かると思う。

理想は

* マクロやevalについて十分に理解した上でマクロを使用する。

なのですが、現実は

* マクロは多用しないようにする。
* 不都合を承知で使う。😭

タグ: Julia言語

posted at 19:03:31

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 私のようなど素人ではなく、よく分かっている人によるマクロの易しい解説があった方が良いと思う。

以上で私がやって見せたように「どのように失敗する可能性があるか」に関する説明が重要。

タグ: Julia言語

posted at 19:06:14

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 函数は実行後の値を引数として受け取り、マクロは実行前の式を引数として受け取る仕様なのですが、実際には両方が混じった組み合わせが多いので、そに辺についての定跡があれば教えて欲しい感じ。

タグ: Julia言語

posted at 19:09:57

k @musicisthebest_

20年10月17日

@OokuboTact 以前から「かけ算順序の本領発揮は結合法則が絡んでからである」と思っていたので初めてちょっと絡んだやつを観測できてうれしいです。

タグ:

posted at 20:07:57

Mehmet Hakan Satman @mhsatman

20年10月17日

Ben kamerayı kapatsam daha iyi.. twitter.com/iuistarmer/sta...

タグ:

posted at 20:13:39

乳鉢 @nyubachi

20年10月17日

#Julia言語 nightly buildを1.6.0-DEV.1260にアップデートしたらTuring.jlのPrecompilingでコケるようになった。1.5.2に戻す。

タグ: Julia言語

posted at 21:01:07

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語

Juliaの「あなたも今日から開発者❤️感」が半端ない。 twitter.com/msekino_ml/sta...

タグ: Julia言語

posted at 21:13:10

とりさん @biochem_fan

20年10月17日

Julia の GC が遅い問題、1.5.2 で同じテストをしたら、5 秒未満まで速くなっていた。完璧とはいいがたい(GUI や Web アプリケーションとかで stop the world GC は辛い)が、だいぶマシになっている twitter.com/biochem_fan/st...

タグ:

posted at 21:59:48

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 for-loop内で大域変数のΓ1,Γ2を使っているせいでfor-loop側が数十倍遅くなっているのですが、そこを訂正してもTensorOperations.jlが非常に速いですね!

n=20
@ tensor → 0.59 ms
for-loop → 2.95 ms

n=100
@ tensor → 0.64 s
for-loop → 10.73 s

gist.github.com/genkuroki/f503... twitter.com/yanagimotor/st... pic.twitter.com/0OVNW42BNq

タグ: Julia言語

posted at 22:15:50

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語

docs.julialang.org/en/v1/devdocs/... に書いてあるように、axes(A, i) とか

similar(Array{T}, axis1, axis2, ...)

のような書き方をして、1始まりインデックスに依存しない書き方をしてみた。

その書き方なら、Array{T}(undef, size1, size2, ...) のようにundefがいらない。 pic.twitter.com/9nq2TaZaws

タグ: Julia言語

posted at 22:24:36

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語

n_i = size(A, 1) とおいて for i in 1:n_i の形で使うくらいなら、最初から is = axes(A, 1) とおいて for i in is の形で使う方がシンプルでより抽象化されている。

抽象化したせいで手間が増える場合はトレードオフの問題になるが、この場合にはメリットしか無さそう。

タグ: Julia言語

posted at 22:28:24

Yuki Nagai @cometscome_phys

20年10月17日

BinaryBuilder.jlがすごい〜自動でDockerでクロスコンパイルしてcやFortranのコードをJuliaライブラリ化 on @Qiita qiita.com/cometscome_phy...

タグ:

posted at 22:38:37

tomi rss @tomirss

20年10月17日

Docker - Qiita BinaryBuilder.jlがすごい〜自動でDockerでクロスコンパイルしてcやFortranのコードをJuliaライブラ qiita.com/cometscome_phy...

タグ:

posted at 22:41:23

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 これはCSV.jlのような基本パッケージを使ってもそうなるということなのだろうか?

メモリ割当のコントロールは自前で行うのは面倒な場合が結構あると思う。 twitter.com/biochem_fan/st...

タグ: Julia言語

posted at 22:48:55

sorae 宇宙へのポータルサイト @sorae_jp

20年10月17日

まさに星の海への冒険。天の川の中心に向かって拡大し続ける動画
sorae.info/astronomy/2020...

タグ:

posted at 22:49:28

Shuhei Kadowaki @kdwkshh

20年10月17日

同じ論文を1週間何度も何度も読んでるけど、一箇所どうしても分からない...
"A Graph-Free Approach to Data-Flow Analysis"読んだ方いらっしゃいませんか...

www.semanticscholar.org/paper/A-Graph-...

タグ:

posted at 23:03:41

Shuhei Kadowaki @kdwkshh

20年10月17日

抽象解釈のアルゴリズムについての論文なんですが、アルゴリズムのトレース例(具体的にはp.56の表)が一箇所どうしても理解できていません。今この論文のアルゴリズムをJuliaで実装しているんですが、そこが理由で期待する出力が得られません...

github.com/aviatesk/aviat...

タグ:

posted at 23:07:57

黒木玄 Gen Kuroki @genkuroki

20年10月17日

@rithmety 【#Julia言語 公式マニュアルに書いてあったマクロを使ったら一番速かった。】というのは計測誤差を無視しているからそう見えているに過ぎず、私の簡易マクロとビルトインの@ ntupleはその場合には同じコードを生成します。

gist.github.com/genkuroki/a7ef... pic.twitter.com/ZmXnougcfM

タグ:

posted at 23:26:09

smj_tcBt @smj_tcBot

20年10月17日

BinaryBuilder.jlがすごい〜自動でDockerでクロスコンパイルしてcやFortranのコードをJuliaライブラリ化
qiita.com//cometscome_ph...

タグ:

posted at 23:35:25

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 の Base.Cartesian.@ ntuple の定義は

github.com/JuliaLang/juli...
macro ntuple(N::Int, ex)
vars = Any[ inlineanonymous(ex,i) for i = 1:N ]
Expr(:escape, Expr(:tuple, vars...))
end

なので

N = 4
@ ntuple N _->rand()

とは使えない。

gist.github.com/genkuroki/a7ef... pic.twitter.com/lTTHmcJa6E

タグ: Julia言語

posted at 23:36:38

黒木玄 Gen Kuroki @genkuroki

20年10月17日

#Julia言語 以前は Expr で直接Juliaの実行可能なexpressionを作る方法を理解していなかったので、@ ntuple マクロの定義を見ても「簡単だ」とは思えなかったが、今だとものすごくシンプルに見える。

マイ野良パッケージの github.com/genkuroki/Meta... で遊べば容易。

タグ: Julia言語

posted at 23:41:17

非公開

タグ:

posted at xx:xx:xx

マナマの生マナマコ @chor0sK

20年10月17日

Julia言語、かなりいろいろな「こんなことできたらいいな」が解決されている気がする。

タグ:

posted at 23:59:46

@genkurokiホーム
スポンサーリンク
▲ページの先頭に戻る
ツイート  タグ  ユーザー

User

» More...

Tag

» More...

Recent

Archive

» More...

タグの編集

掛算 統計 超算数 Julia言語 数楽 JuliaLang 十分 と教 モルグリコ 掛け算

※タグはスペースで区切ってください

送信中

送信に失敗しました

タグを編集しました