黒木玄 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月27日(日)
プログラムもいちから書いてるんで、結果のクロスチェックにもなって安心。学生はわしの苦手なC++で書いてたから読めん。わしはJuliaで書いたのでプログラムが短い
タグ:
posted at 23:50:05
学生が置いていった100万ファイルのデータを整理するくらいなら全部計算し直したほうが早いと思って、計算し直しついでにサンプルを5倍に増やしてみたところ、元のデータで統計揺らぎかなと思ってた変なディップは本当にあることが分かった。サンプルサイズが大きいのは正義
タグ:
posted at 23:47:50
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
@genkuroki 自分も先ほど色々試した所,抽象型の定義を間違えて関数にも適用しようとしていたことが原因とわかりました…
完全に自分のケアレスミスなので撤回させていただきます.
きちんと型推論は仕事してました.
タグ:
posted at 23:17:47
はてなブログに投稿しました #はてなブログ
浮動小数点数を足すだけのプログラムがC言語よりJuliaのほうが速い、について - よーる
lpha-z.hatenablog.com/entry/2020/09/...
タグ: はてなブログ
posted at 23:15:00
@zyuer #Julia言語
試してみました!↓
gist.github.com/genkuroki/21db...
エラーメッセージがものすごく分かり易く、エラーの原因はすぐにわかります。
ArgumentError: <:: too few arguments (expected 2)
<: は二項関係なのに引数がFuncの1つしか与えられていない。エラーが出るのは当たり前でした。 pic.twitter.com/r4JHzUW5YT
タグ: Julia言語
posted at 23:12:33
@cometscome_phys @HShinaoka #Julia言語
nbviewer.jupyter.org/gist/genkuroki...
ではπのモンテカルロ計算で
using RandomNumbers
rng = Xorshifts.Xoroshiro128Plus()
for ~
rand(rng)を使うコード
end
としたら、10⁶回ループで
0.80 ms → 0.71 ms
と少しだけ速くなりました(スレッド並列版)。
twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 22:32:11
@dc1394 @unedSCLv2 #Julia言語 私はJuliaどうしの比較が(角も立たず)非常に面白いと思っていて、もとのコードに私が手を入れることによって、結果的に同じJuliaで100倍を軽く超える高速化が実現されています。
* 無駄の削除
* スレッド並列化
* より高速な擬似乱数発生器の選択
twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 22:27:02
#Julia言語
gist.github.com/genkuroki/ab5b...
gcc vs. julia
を更新した。添付画像1の部分が間違っていたのを直した。RandomNumbers.Xorshifts.Xoroshiro128Plus() を使うと少し速くなることを確認した(添付画像2)。 pic.twitter.com/N4GwwrrxA9
タグ: Julia言語
posted at 22:18:06
honeybeesqueen @honeybeesqueen
わざわざお店のおねえさんが、
「せっかくなので!動画とか撮らなくていいですか?」
と勧めてくださったので…
美味しかったのでまた食べに行くよ!
因みに相方さんのはラムレーズンのパンケーキ
タグ:
posted at 21:37:50
honeybeesqueen @honeybeesqueen
プレミアムティラミスパンケーキになるところです。
(音声注意!) pic.twitter.com/MiqDKN6xhn
タグ:
posted at 21:36:26
C++とJuliaで、Gauss-Legendre積分の速度比較をやってみます。JuliaのGauss-Legendre積分には、教えてもらったFastGaussQuadrature.jlを使って、C++のGauss-Legendre積分には、ALGLIBを使います。Fortranも試してみたいけど、数値積分ライブラリにどれを使えばいいのか分からない…。
タグ:
posted at 21:35:47
@dc1394 @unedSCLv2 #Julia言語 「論よりコード」続き
以下のリンク先はC側(gcc)とJulia側の両方で失敗しているせいで、遅くなっている場合です。
Julia側では、複数のプロセスを使う分散処理と、スレッド並列の両方に実演もやってみせています。
gccとJuliaの比較より、Juliaどうしの比較のほうが興味深いです。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 21:35:06
Bruce Tate: grox.io @redrapids
more from of grox.io's first #julialang module:
Delay typing decisions.
f(x) = x^2 + 5x - 3
-> f (generic function with 1 method)
f(6)
-> 63
julia> f(6//7) # rational numbers
-> 99//49
Julia devs think of functions as templates.
タグ: julialang
posted at 21:23:19
@dc1394 @unedSCLv2 #Julia言語 こんな感じでJuliaでも他言語同様に失敗している個所ごとに数倍ずつ遅くなって行きます。
しかし、公式Performance Tipsに忠実に従うだけでそういう失敗をかなり防げます。
docs.julialang.org/en/v1/manual/p...
このPerformace TipsはJuliaを使い始める人が最初に読むべき文書だと思います。
タグ: Julia言語
posted at 21:21:14
@dc1394 @unedSCLv2 #Julia言語 「論よりコード」なので、Juliaで速度的に劣化する典型的なパターンを『経済セミナー』の連載記事関連のJuliaのコードで説明しているのが以下のリンク先。
私が、そのJuliaのコードで使っているパッケージに十数文字変更を加えただけで倍以上速くなっています。
25.5秒→11.2秒
続く twitter.com/genkuroki/stat... pic.twitter.com/oDvsec460b
タグ: Julia言語
posted at 21:17:09
If you use a laser pointer on a diamond or any crystal jewel, you will get an interesting effect that shows you how beam splitters work buff.ly/2JGk59B [source of the gif: buff.ly/2LbL0Qe] pic.twitter.com/6m0oCvB0K7
タグ:
posted at 21:00:15
@genkuroki @unedSCLv2 なるほど。Juliaでも、適当な書き方をすると遅くなるのですね。誤解していました。ご指摘、ありがとうございます。
ただ、「ベストに近いものを末端ユーザーでも楽に使いやすい」と言うのは非常に魅力的です。
タグ:
posted at 20:40:43
@dc1394 @unedSCLv2 #Julia言語
「Juliaでは他言語では遅くなる書き方をしても速い」なんてことは決してない。そんな魔法はないです。しっかり遅くなります。
しかし、開発者達とパワーユーザー達が計算速度に強い関心を持っており、ベストに近いものを末端ユーザーでも色々な意味で楽に使い易いです。これ、結構重要。 twitter.com/dc1394/status/...
タグ: Julia言語
posted at 20:36:29
@genkuroki @unedSCLv2 詳しい情報ありがとうございます。C++とJulia(とFortran)のどちらが速いかは、簡単なコードを書いて実測した方が良さそうなので、ちょっと試してみます。
タグ:
posted at 20:34:38
@dc1394 @unedSCLv2 #Julia言語 『経済セミナー』の記事に付属のJuliaのコードは、Juliaの公式ドキュメントのPerformance Tips (で強調されている型安定性の重要性)に反しているので、それを速度比較の例として持ち出す人が「よく分かっていない人」なので要注意。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 20:27:49
@takusansu @miyuki_MathT #数楽 Z≠0 の X : Y : Z は x : y : 1 と一意的に書けるので、それを平面上の点 (x, y) と同一視すると、無限遠点達は X : Y : 0 達と同一視される。リンク先の (∞, ∞)=(-∞, -∞)は 1 : 1 : 0 = -1 : -1 : 0 という意味のつもり。
双曲線 y²=x²+1 の扱いで役に立つ話。 twitter.com/genkuroki/stat...
タグ: 数楽
posted at 19:13:59
@genkuroki これですね(ユーザー名違いますけれど自分で移植したコードです)
github.com/skypenguins/de...
functions.jlのコメントアウトしてある「バッチ対応版ソフトマックス関数」だと一応動作するので,関数の引数の型指定していないのが原因かな…と推測しました.
タグ:
posted at 18:44:45
@takusansu @miyuki_MathT #数楽
中学校でも教えないみたいですが、同値類で定義する「普通の数学」における比の定義では
1 : 0 = 10 : 0 = 100 : 0 = …
です。1/0 も受け入れるならそれはそれで立派なものだと思いますが、a : b = a/b のスタイルはそういう自由さとは逆向きのスタイルなんだろうね。
タグ: 数楽
posted at 18:27:46
@genkuroki x-->f()
は完全には却下されていないけど採用されそうにない感じ。
入れると、言語が複雑になるデメリットを超えるかどうかの衡量が難しいよう。
タグ:
posted at 18:27:34
@genkuroki 「f(x,y,z) のx,y,zが平等」であることは、x.f(y,z)とf(x,y,z)を同一にする技術的・論理的障害ではない。Mod.fとの構文上の衝突は問題。しかして「.」と異なる記号なら容易。
x.fを認めないのは、多態性はサポートしてもメッセージパッシングの意味でオブジェクト指向を補助する気がないということ。
タグ:
posted at 18:23:03
zennでJuliaの型推論についてちょっとした知見をまとめた簡単な記事を書いてみました。
UIが綺麗だし簡単にGitHubと連携できてとても快適 :-)
よければ読んでみてください:
zenn.dev/aviatesk/artic...
#julialang #zenn
posted at 18:18:24
#Julia言語
Base.@irrational _2π 6.283185307179586476925286766559 2big(π)
const _2pi = _2π
のように定数 _2π を定義してしまうのはダメかな?
τにしてもいいのですが、τが2πの意味で使われることもあることを知らない人にとっては困る。続く
twitter.com/mkashi/status/... pic.twitter.com/D7fb3byUPU
タグ: Julia言語
posted at 18:15:57
はてなブログに投稿しました #はてなブログ #julialang #Algorithms
ユニークな文字列かを判定するアルゴリズムの概要とJuliaサンプルコード - EurekaMoments
www.eureka-moments-blog.com/entry/2020/09/...
タグ: Algorithms julialang はてなブログ
posted at 17:58:16
Juliaで、2 * pi * x みたいに書くとxがBigFloatでもpiが倍精度に落ちてしまう問題なんとかならんかなあ。2 * (pi * x) と書くしかない? 気付かずに精度が落ちちゃってるケースもありそう。
タグ:
posted at 16:53:56
非公開
タグ:
posted at xx:xx:xx
#Julia言語 Juliaは初心者でも楽に使えるように、Int64とFloat64型の数値は特別な配慮抜きで扱えるようになっています。
Int64とかFloat64と型名を書かなくても、気楽に書けばほぼ自動的にInt64とFloat64型の数値が使われることになります。
そういう意味で、型名を書かなくても十分実用的に使える。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 15:26:04
#Julia言語
Juliaでは、初心者向きに、Int64とFloat64を自然に作り易くなっており、数値計算での型の違いについてはInt64とFloat64の違いを認識しておけばよいと思う。
おそらく、初心者のうちは、函数の引数の型は書かない方が無用なトラブルにあう確率は小さくなる。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 14:22:41
モダンな感じで書いたWilsonFermion入りSU(3)の格子QCDのJuliaのコード、ついにFortranのコードより速くなった。4^4,beta=6の10trj、CGの収束eps1e-19で、Fortran版が227.40sでJulia版が213.57sとなった。しかしまだJulia版高速化できそうなのでもう少し遊んでみよう
タグ:
posted at 13:43:18
@Y_F_Acoustics @bicycle1885 @ari23ant #Julia言語 Juliaの「仮想環境」はjulia自身がサポートしていてかつシンプルで分かりやすいです。
一方、正直な話、Pythonの「仮想環境」は私のようなライトユーザーの素人には理解不能な世界。それが原因で多くのトラブルを生んでいるように見えます。これはJulia側の問題ではないです。
タグ: Julia言語
posted at 12:18:44
@Y_F_Acoustics @bicycle1885 @ari23ant #Julia言語 要するに、READMEやドキュメントに従って、Pythonとの連携関係のパッケージを入れていれば、minicondaが自動的にインストールされることはなく、既存のAnacondaをJuliaから使えるようになっていたということです。
私も以前はAnacondaのpythonをJuliaから使っていました。
タグ: Julia言語
posted at 12:15:21
@Y_F_Acoustics @bicycle1885 @ari23ant #Julia言語 IJulia.jlでも似た注意が必要で、juliaにjupyterコマンドの位置を教えるために
julia> ENV["JUPYTER"] = "C:\\Anaconda3\\Scripts\\jupyter.exe"
julia> ]
pkg> add IJulia
pkg> build IJulia
のようにする必要があります。
julialang.github.io/IJulia.jl/stab...
タグ: Julia言語
posted at 12:11:12
@Y_F_Acoustics @bicycle1885 @ari23ant #Julia言語 続き。例えば、Windows環境でJuliaのために用意したAnaconda仮想環境のpython.exeが
C:\Anaconda3\env\julia\python.exe
にあるならば
ENV["PYTHON"] = "C:\\Anaconda3\\env\\julia\\python.exe"
してから、上記の作業をすればよいはずです。
間違っていたらごめんなさい。続く
タグ: Julia言語
posted at 12:06:45
@Y_F_Acoustics @bicycle1885 @ari23ant #Julia言語 具体的には、
julia> ENV["PYTHON"] = "PyCallで使用したいpythonバイナリ(フルパス)"
julia> ]
pkg> add PyCall
pkg> build PyCall
とすれば、PyCall.jlから、指定したpythonバイナリを使うようになります。説明の追加に続く
タグ: Julia言語
posted at 12:02:27
@Y_F_Acoustics @bicycle1885 @ari23ant #Julia言語 続き~、juliaがminicondaを自動的にインストールするのをやめてくれます。
PyCall.jlのインストール時にはPyCall.jlで使うpythonバイナリをENV["PYTHON"]の設定で教えるというような説明が、PyCall.jlのREADME
github.com/JuliaPy/PyCall...
にあります。具体的手順に続く
タグ: Julia言語
posted at 11:59:12
@Y_F_Acoustics @bicycle1885 @ari23ant #Julia言語 【Juliaを導入する前にAnacondaを使っていたのですが,JuliaでPyCallをインストールした際に自動でインストールされるminicondaに権限を奪取され】の「権限を奪取され」の部分が理解できないのですが、既存のAnaconda内のpythonを使うようにPyCall.jlをインストールすれば~続く
タグ: Julia言語
posted at 11:55:21
#Julia言語 関連
sum(f, A) や mean(f, A)
は見た目が簡潔だし、
sum(f(a) for a in A) や mean(f(a) for a in A)
より有意味で精度が高い場合がある。これらを
sum(f.(A)) や mean(f.(A))
と書くとメモリ割当が発生して損をすることになる。 twitter.com/goropikari_/st...
タグ: Julia言語
posted at 11:05:00
sum は第1引数に関数取れたのか。mapreduce よりこっちのほうがパット見わかりやすいな。
(Julia slack にて知る)
docs.julialang.org/en/v1/base/col...
タグ:
posted at 09:50:20
If Runtime isn't Funtime: Controlling Compile-time Execution
Presented by Nathan Daly
Livestream: www.youtube.com/watch?v=JCFej-...
Abstract: pretalx.com/juliacon2019/t...
#JuliaLang #JuliaCon
posted at 05:16:00
非公開
タグ:
posted at xx:xx:xx
#Julia言語
ソースコード
gist.github.com/genkuroki/599d...
の「不適切」な部分を書き直した。
@ eval meets(::$A, ::$B) = _Verb[$i, $ j]
を実行すると右辺に大域変数が含まれてしまう。
v = _Verb[i, j]; @ eval meets(::$A, ::$B) = $ v
とすればそれを防げる。 pic.twitter.com/G8hyVTMJkk
タグ: Julia言語
posted at 05:06:14
#Julia言語
meets(::Dog, ::Dog) = "sniffs"
meets(::Dog, ::Cat) = "chases"
meets(::Cat, ::Dog) = "hisses"
meets(::Cat, ::Cat) = "slinks"
の代わりに
for (i, A) in enumerate(_Pet), (j, B) in enumerate(_Pet)
v = _Verb[i, j]; @ eval meets(::$A, ::$B) = $v
end
のようにも書ける。 pic.twitter.com/Ph5nduIswS
タグ: Julia言語
posted at 05:04:06
Notes on Synthesis and Equation Proving for Catlab.jl www.juliabloggers.com/notes-on-synth... #juliabloggers
タグ: juliabloggers
posted at 04:36:43
@Y_F_Acoustics @bicycle1885 @ari23ant 【一時期Pythonへの置き換えとしてJulia(当時はv1.3でした)を検討していた時に、使っていたAnaconda環境が破壊されたりした】
その言い方だとまるで「JuliaにAnaconda環境が破壊されたりした」と主張しているかのように読めてしまうので、「流れ的」に非常にまずいのではないかと思いました。
タグ:
posted at 02:22:33
僕の息子はいま哲学の講座を取ってるんだが、昨夜、一緒にスピノザによる論考を読んでたら、これがおよそ子どもっぽい論理じゃないか!やれ属性だ、実質だと、てんで無意味な御託が並んでる。僕らはとうとう笑いだしてしまったよ。
タグ:
posted at 01:31:38
Stefan Karpinski @StefanKarpinski
@asmae_toumi @dragonflystats @znmeb @ipnosimmia That’s not an uncommon reaction when people encounter @ChrisRackauckas’ work for the first time 😁
What’s even more intense is just how much of it there is
タグ:
posted at 01:31:04
非公開
タグ:
posted at xx:xx:xx
@shumanalysis #Julia言語
f(arg...; kwarg...) = g(arg...; kwarg...)
g(x, y) = x + y
f(1, 2)
→3
g(; a, b) = a + b
f(a=1, b=2)
→3
g(; a=10, b=20) = a + b
f()
→30
f(a=1, b=2)
→3 pic.twitter.com/4TYeThJFGm
タグ: Julia言語
posted at 01:13:08
New post: Notes on Synthesis and Equation Proving for Catlab.jl - www.juliabloggers.com/notes-on-synth... #julialang pic.twitter.com/vGqUSMed5V
タグ: julialang
posted at 01:13:01
@kobriendublin@fosst @dragonflystats
@asmae_toumi @StefanKarpinski @znmeb @ipnosimmia It might be this : www.stochasticlifestyle.com/gpu-accelerate...
タグ:
posted at 01:05:32
非公開
タグ:
posted at xx:xx:xx
Web browser market share changes over the past 15 years:
pic.twitter.com/VVkYhoNB6H
タグ:
posted at 00:58:50
Stefan Karpinski @StefanKarpinski
@asmae_toumi @znmeb @ipnosimmia Short version: when you do f(x, y) there are different methods of f that can be called; which one is called depends on the types of x and y
R can do this but it’s very slow (slower even then normal function calls); Julia is based on doing this everywhere and it’s very, very fast
タグ:
posted at 00:45:05
非公開
タグ:
posted at xx:xx:xx
S藤さんのJulia本が届いたので早速処理系をインスコしてみました。マクロと型アノテーションが強力そうで良い感じ。でも、やはりダイナミックタイピングの言語でデカいプログラムを書く気にはあんまりなれないなぁ。とりあえず普段ちょろっと計算するときのreplをjuliaにしてみようかなぁ。
タグ:
posted at 00:31:57
Notes on Synthesis and Equation Proving for Catlab.jl #julialang #categorytheory www.philipzucker.com/notes-on-synth...
posted at 00:28:41
加藤公一, 가토우 기미카즈(はむかず) @hamukazu
ハッカー的心構え
1.この世界は解決を待っている魅力的な問題でいっぱいだ
2.同じ問題を二度解くような無駄はいやだ
3.退屈と単純作業は悪
4.自由は善
5.心構えは技能の代用にはならない
cruel.org/freeware/hacke...
3番とくに大事。
タグ:
posted at 00:22:01
加藤公一, 가토우 기미카즈(はむかず) @hamukazu
ハッカー精神と呼ばれるものですね。 twitter.com/musicisthebest...
タグ:
posted at 00:17:08
#数楽 証明に繋がる議論の概要を知りたければ
genkuroki.github.io/documents/2016...
を見て下さい。
論理的スキルが十分ならそこに書いてある易しい場合の証明から、難しい場合の証明も作れると思います。
論理的スキルが十分有れば、易しい場合の証明を知っていることが大事なって来る。
タグ: 数楽
posted at 00:16:27
#Julia言語 収束先の分布
p(x) = Z⁻¹ exp(-ax+ (b-1)√x)
のパラメータa,bの決定には
数値積分 QuadGK.jl
連立方程式 NLsolve.jl
の2つのパッケージを用いた。
数値積分で定義した函数の零点を求める計算なので計算時間が長くなることを心配したが大丈夫だった。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/EhvtI3JW3P
タグ: Julia言語
posted at 00:11:47
#数楽 #Julia言語
これは分布
p(x) = Z⁻¹ exp(-17.48x + (49.36-1)√x)
に収束している場合。 pic.twitter.com/slevsnGgGl
posted at 00:07:14
#数楽 #Julia言語
これは分布
p(x) = Z⁻¹ exp(-8.62x + (24.29-1)√x)
に収束している場合。 pic.twitter.com/R7ZRhvtYZx
posted at 00:06:32
#数楽 #Julia言語
これは分布
p(x) = Z⁻¹ exp(-1.31x + (3.48-1)√x)
に収束している場合。 pic.twitter.com/7yyQzHjvmc
posted at 00:05:45
#Julia言語 #数楽
これは、指数分布 Z⁻¹ exp(-x/2) に収束している場合。 pic.twitter.com/0wkN0fWgD0
posted at 00:03:56
#Julia言語
nbviewer.jupyter.org/gist/genkuroki...
統計力学におけるカノニカル分布の最も簡単な場合
を更新した。
① f = log だけではなく、f = √ の場合の
p(x|a,b) = Z⁻¹ exp(-ax+(b-1)f(x))
型の分布に収束する場合を付け加えた。
②アニメ作成時にProgressMeterを使うようにもした。 pic.twitter.com/8dxRrxcRRJ
タグ: Julia言語
posted at 00:02:08