黒木玄 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月07日(月)
6章まで終了。課題のアセンブラは Julia で書いた。
本を読んでイマイチピンとこないなと思ったら coursera で講義を見るというふうにすすめているがなかなかいい感じ。
www.coursera.org/learn/build-a-...?
タグ:
posted at 00:24:00
#Julia言語
ほぼ同じプロットを Plots.jl で作ってみました↓
nbviewer.jupyter.org/gist/genkuroki...
同じではない別のプロットの例も示しています。
twitter.com/4310sy/status/... pic.twitter.com/mLd4zZWJ5w
タグ: Julia言語
posted at 00:40:15
#Julia言語 Plots.jl の円グラフ (pie chart) のレシピの上書きの例を作ってみました。その結果できあがったのが添付画像。
pie chart は普通使わないと思っていたのですが、Plots.jl では簡易実装しかされておらず、みんな使っていないのかなと思いました。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/BALOQka1Lc
タグ: Julia言語
posted at 00:44:48
#Julia言語 あとちょっと毛色が変わったものでは以下の3次元プロット。定義域の三角部分しかプロットされていません。
これは値がNaNの部分はプロットされないという性質を使っています。
NaNがプロットされないことを知らないとどうやったのか悩むと思います。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/XNFo1DhQwN
タグ: Julia言語
posted at 00:48:45
#Julia言語 このプロットの仕方の習得は計算の仕方の習得と同じくらいコストがかかります(時間が取られまくる)。結構大変。
しかし、PyPlot.jlではなく、Plots.jlでも一通りの仕事はできそうなことはわかると思います。
nbviewer.jupyter.org/gist/genkuroki...
タグ: Julia言語
posted at 00:50:07
自分が最近 TL で得た知見は「採点者に忖度しない」ってことなんですよ。「グラフを書け」で凹凸まで調べるとか、「軌跡を求めよ」で図形の形を答えるとか、そういう忖度の要素を入れていくと、指導が都市伝説の塊になっちゃうんです。そして、超算数が勢いを増していくんですよ。そんなの、つまらん!
タグ:
posted at 00:56:49
ごまふあざらし(GomahuAzaras @MathSorcerer
クラウドファンディングでJuliaパッケージのメンテナンス一年感できるお金募集とかしたいな・・・。
ベーシックな幾何や画像・可視化パッケージ中心に見直したい感ある・・・。
タグ:
posted at 01:01:08
#Julia言語
レシピ内でフォントサイズを取得するには
plotattributes[:subplot][a]
a = :{title, legend, legendtitle}fontsize
plotattributes[:subplot][:xaxis][b]
b = :{guide, tick}fontsize
とします。Plots.jlのソースコードを見て解読した。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/xuNTG5Sm6s
タグ: Julia言語
posted at 01:08:49
#Julia言語
github.com/thautwarm/MLSt...
MLStyle.jl
Julia functional programming infrastructures
and metaprogramming facilities
pattern-matching
algebraic-data-types
syntax-sugar
scalability
statically-generated
twitter.com/chor0sk/status...
タグ: Julia言語
posted at 01:16:12
"Because we are greedy"「なぜなら強欲だから」って唱えると、ちょっとやる気出る。魔法の言葉。 #julialang
タグ: julialang
posted at 01:23:01
#Julia言語
足し上げているものの型をチェックすれば色々分かります。
例えば、Vector{Real} 型の配列のsumは遅くなります。
一般に抽象型の配列のsumは遅くなります。
(同様の場合はJuliaでなくても遅くなる。)
Vector{Float64}やVector{Float32}型に変換すると幸せになれる場合があります。 twitter.com/togekissu1234/...
タグ: Julia言語
posted at 01:25:06
非公開
タグ:
posted at xx:xx:xx
#Julia言語 今更ですが、これ面白いです。
github.com/timholy/SnoopC...
pkg> add SnoopCompile
julua> using SnoopCompile
Analyzing sources of compiler latency in Julia: method invalidations
26 August 2020
Tim Holy,
Jeff Bezanson,
and Jameson Nash julialang.org/blog/2020/08/i...
タグ: Julia言語
posted at 03:24:47
#Julia言語 C++を知っている人が、「同名の函数の引数の型の違いで何が実行されるかが単純に決まる」Juliaの多重ディスパッチを理解したければ、このツイートの2つ上のツイートの添付画像もしくは
gist.github.com/genkuroki/8e04...
を見ればよい。Juliaはシンプルで分かりやすい。
タグ: Julia言語
posted at 04:23:21
Sometimes I look at the source code of LaTeX packages I use and wonder how we all collectively decided that this alien gibberish was the best way to typeset our scientific documents.
タグ:
posted at 06:59:20
@ishogaki ご指摘ありがとうございます。他の方にも指摘されたのでjupyter notebookを使うようにしています。
revise.jlを使う方法もあるみたいですね twitter.com/genkuroki/stat...
タグ:
posted at 08:33:49
Stefan Karpinski @StefanKarpinski
Very happy to see gfortran progress in Apple’s new hardware! This this very important for #JuliaLang, #NumPy and #RStats twitter.com/fxcoudert/stat...
posted at 08:39:05
@StefanKarpinski Compiles OpenBLAS fine and passes #julialang BLAS/LAPACK tests, which are quite strenuous. Glad this work is happening.
タグ: julialang
posted at 08:44:59
非公開
タグ:
posted at xx:xx:xx
I had a lot of fun recreating the "population vs. lambda" plot in matlab (see some quick & dirty code below). There are some curves appearing in the fractal part, do we know closed expressions for those? E.g. the two envelopes or the one starting in the upper branch going down. pic.twitter.com/a83VWcHvMH
タグ:
posted at 08:55:32
Code:
l = linspace(2.8,4,2500);
lambda = [];
data = [];
for j=1:2500
x = 0.5;
for k=1:500
disp(j)
x = l(j)*x*(1-x);
if (k>400)
lambda = [lambda,l(j)];
data = [data,x];
end
end
end
scatter(lambda,data,1,'filled')
タグ:
posted at 08:55:33
Yikes, the disp(j) should of course be in the outer loop - unless your command window needs some extra love.
タグ:
posted at 09:28:51
おいマジでRustにまともなDD/QDないのか?
JuliaにはDoubleDouble.jlがあるんだぞ?どうしてRustにはないんだ??
github.com/JuliaMath/Doub...
タグ:
posted at 09:47:51
MacやiOS(Mach-O)のファットバイナリはシンプルで便利な仕組みだと思うけどいろいろ限界だったんだろうな。
Apple Siliconが出なくてもiOS/watchOS/tvOSのライブラリを提供するなら3種類のネイティブのアーキテクチャそれぞれにシミュレータ用のバイナリがくっ付く、という状態だったわけで。
タグ:
posted at 09:53:14
#Julia言語 「論よりコード」の原則は重要なので実際に動く例を作って来ました。
Base. showを定義して、問題と結果の表示が見易くなるようにしてあります。
問題は「ガンマ分布(α, θ)のサイズNのサンプルを生成し、その算術平均と対数幾何平均を求めよ」です。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/IbFansAAST
タグ: Julia言語
posted at 10:00:44
#Julia言語 デフォルトのパラメーター値 α=5.0, θ=2.0, N=10^4 の場合。
My.solveの他にexact formulaを使って答えを出してくれるMy.solve_exactlyも用意してあるので、それらの結果を比較しています。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/ny6GvquOUJ
タグ: Julia言語
posted at 10:02:47
#Julia言語 パラメーターが α=θ=1.0, N=10^8 の場合。
この場合は「平均1の指数分布のサイズ1億のサンプルを生成して、その算術平均と対数幾何平均を求めよ」という問題になります。
対数幾何平均の方の期待値はオイラー定数(Euler's γ)の-1倍になります。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/etPYvZ8EsC
タグ: Julia言語
posted at 10:05:27
#Julia言語 以上のような「入力のProblemをsolve函数に与えると結果のResultが得られる」という
問題と解法スタイル
になっている場合には、それをそのまま素直にコードに翻訳すればよいと思います。
問題と結果を見易く表示する函数も用意しておく。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/OqKN3oBqNj
タグ: Julia言語
posted at 10:09:55
OokuboTact 大久保中二病中年 @OokuboTact
内閣支持率62.4
ポスト安倍内閣がこの支持率をキープすると、次の選挙でも与党が圧勝してしまう。
選挙制度を小選挙区から中選挙区制に戻した方が良い
タグ:
posted at 10:20:09
#Julia言語 自作パッケージを使うシンプルな方法:
pkg> generate MyPkg
julia> cd("MyPkg")
pkg> activate .
julia> using Revise
julia> using MyPkg
julia> MyPkg.greet()
MyPkg/src/MyPkg.jlのgreet()を編集
julia> MyPkg.greet()
まずはこれから始めて徐々に複雑なことをやるとよいと思います。 twitter.com/mat_der_D/stat... pic.twitter.com/MiM5HszKR9
タグ: Julia言語
posted at 11:27:54
juliaやってて「ガチな人が作ってるな」と思うのはStringの結合が「+」ではなく「*」なところ。理由は「一般にStringの操作は非可換であるから」。
#julialang
タグ: julialang
posted at 12:21:25
@CFB_Geek @JaredDLee @cfbscrapR @SaiemGilani @statsowar @ScalpRNoles @cfbNate One of these days, I'm going to find time to sit down do a #julialang client for cfbscrap; I've used Julia for 8 years now and have never looked back; it's simpler than R and as flexible as python, and very fast. It's how I learned coding.
タグ: julialang
posted at 13:14:54
#Julia言語
github.com/JuliaMath/Doub...
のDouble64と
github.com/JuliaMath/Quad...
のFloat128とprecision=113のBigFloatの比較。
Double64が非常に速かったです。単純にDouble64の方が良いわけではないですが、速度も必要な場合にはDouble64を使いたい。
nbviewer.jupyter.org/gist/genkuroki... twitter.com/Hishinuma_t/st... pic.twitter.com/qkK8F50rAO
タグ: Julia言語
posted at 15:38:12
#Julia言語 vは長さ1000のVectorで、Aは50×50のMatrixです。
浮動小数点数の型にも色々ある。だから、浮動小数点数一般で通用するはずのアルゴリズムに基く函数を
function f(x::Float64)::Float64 ~ end
のスタイルで書くと、損をすることになる。
function f(x) ~ end
が多くの場合に勝る。 pic.twitter.com/VP14Y7lOdw
タグ: Julia言語
posted at 15:38:12
#Julia言語 関連
function f(x::Float64)::Float64 ~ end
のように書かない方がよい場合が多いという話。
function f(x) ~ end と書いても計算速度的な劣化は起こらない。(ただし、type-stable なコードを書くこと!)
twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 15:42:15
ごまふあざらし(GomahuAzaras @MathSorcerer
Julia、チュートリアルで最初の学び始めは型書かずに書いてもそれなりにパフォーマンスでるんやでーな雰囲気出してもイイのでは感。
タグ:
posted at 15:47:08
@genkuroki いやでもこのFloat128結構速いですね。
float128は演算量がfloat64の10〜20倍あるので、ちゃんと並列化しないとこんなに出ないはずです
ちなみにこれって何コアくらいのマシンでやられてますか?
タグ:
posted at 15:48:22
#Julia言語 訂正:リンク先の3枚目の添付画像中のVectorをMatrixに訂正します。
v達は長さ1000のVectorで、A達は50×50のMatrixです。
twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 15:49:30
「速くて書きやすい」次世代の言語Juliaを学ぼう! Julia勉強会#2~機械学習の実装その1~ に参加を申し込みました! soleildatadojo.connpass.com/event/186505/?... #DeepLearning
タグ: DeepLearning
posted at 16:22:50
ごまふあざらし(GomahuAzaras @MathSorcerer
そういえば,CxxWrap.jl で 沼さんのラッパーできるんじゃないかな?dd_hoge をどうやってタイプコンバージョンすればいいかわかんないけれど・・・
タグ:
posted at 16:27:18
@Hishinuma_t #Julia言語 私の環境は添付画像の通りです。
Double64はFloat64を2個使って精度を上げたものです。だから、Float64と比較すると非常に遅いです。
Double64とFloat128の精度はほとんど同じ。精度がほとんど同じなのに、Double64の方が速いわけです。(Float128には別の良い点がある。) pic.twitter.com/33DatBta2Y
タグ: Julia言語
posted at 16:29:20
#Julia言語 分岐&補足
Double64 は Float64 を2つ組み合わせて精度を上げたものです。Double64 と Float128 の精度はほとんど同じで、Float128 と 113 bit 版のBigFloat の精度は同じです。
twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 16:31:00
#julialang
Double64 も Float128 もメモリ上では128ビットを占める。精度は添付画像のようにほぼ同じ。(Float128の方が精度が少し高い。さらに、Float128の方が扱える数値の幅が広い。)
Double64の精度は桁数で言えばFloat64の2倍。
添付画像2:Float64とそれらの計算速度の違いがわかる。 pic.twitter.com/dIQbDiFv9E
タグ: julialang
posted at 16:44:56
#Julia言語
x = y = range(-10, 10, length=n+1)
g(x, y) = exp(-(x^2+y^2))
A = g.(x', y)
A\A
とすると、n=200で A\Aが単位行列からほど遠い行列になってしまいます。しかし、Double64で計算すればほぼぴったり単位行列になります。
gist.github.com/genkuroki/229b... pic.twitter.com/8mDNUNlUtR
タグ: Julia言語
posted at 16:49:45
#Julia言語 以上のスクショのコードは
gist.github.com/genkuroki/229b...
gist.github.com/genkuroki/d995...
で閲覧できます。
スクショの「写経」を他人にさせるのはさすがに人としての道を外れた「外道」の振る舞い(笑)
タグ: Julia言語
posted at 16:51:42
「おしゃぶりを使用して良いですか?」という質問もあります。
わざわざ購入する必要はありませんが、私はアメリカ小児科学会(AAP)の推奨を根拠に「使用する場合は、生後3−4週間からにしましょう」とお話をすることがあります。
この推奨にも、いくつか根拠があります
(続く
タグ:
posted at 16:59:39
@genkuroki 失礼しました.
Double64:がDouble-double precision(104bit mantissa)
Float128がIEEE 754 quadruple precision (112bit mantissa)
ですね
結果に納得がいきました.環境についてもありがとうございます
タグ:
posted at 18:11:47
rsync的な差分コピーをしてくれる、python or juliaのツールないかなぁ。指定したディレクトリを、指定したディレクトリに、OSに関わらず差分コピーしたいだけなんですけど。。。
タグ:
posted at 18:21:43
それが「日本人の学習観」とかなっていくなら、すごくゾッとします。
「よく分からんが、そうしろと言われるからただ言われた通りにやるのみ」その怖さが今回のコロナ禍でも感じられたと思うのだが。
タグ:
posted at 19:24:37
はてなブログに投稿しました #はてなブログ
Julia パッケージ作成用の雛形を作ってみたメモ - ぷりんの雑記帳
smooth-pudding.hatenablog.com/entry/2020/09/...
タグ: はてなブログ
posted at 19:29:53
@ohtanilson @tkksnk #Julia言語 黒木と申します。例の逆行列の誤差が大きくなる件を調べてみました。結論は以下の通り。
①そもそも数値計算で逆行列を求めること自体が非常識なのでやめた方がよい。
②行列による左割算や右割算を2倍の精度で計算すれば相当に正確に計算できる。
続く
twitter.com/search?q=tkksn...
タグ: Julia言語
posted at 19:40:44
Julia パッケージ作成用の雛形を作ってみたメモ - ぷりんの雑記帳 smooth-pudding.hatenablog.com/entry/2020/09/...
タグ:
posted at 19:44:33
@ohtanilson @tkksnk #Julia言語 続き
③そもそもMATLABの方で正確に計算できているかどうかも確認が必要。
結論:Float64の2倍の精度のDouble64で(逆行列を経由せずに直接に)行列による割算を実行すれば問題は解決する。
根拠については添付画像の計算結果を見て下さい。
ソースコード↓
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/h6wM5zqxym
タグ: Julia言語
posted at 19:44:42
@ohtanilson @tkksnk #Julia言語 補足:⊘, ⦸, ⊗ は Double64 を経由する高精度の行列演算(右割算、左割算、積)です。
自前で定義しました。
ソースコード↓
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/YLO0eUCU5O
タグ: Julia言語
posted at 19:48:28
Last night, the Moon passed in front of Mars, resulting in a so called lunar occultation of the planet. This video by ASTRONOCHES Observaciones astronómicas, captures the event [source, full video: buff.ly/2ZcqEuW] pic.twitter.com/NMH5M86EzA
タグ:
posted at 20:10:33
この論文はタイトルからも解るように、無症候感染者や発症前感染者からの感染がアウトブレイクの制御にもたらす影響のシミュレーション研究です。
結論は、たとえ発症性感染者を発症時に100%隔離できたとしても、アウトブレイクを制御することができないということ。
www.pnas.org/content/117/30...
タグ:
posted at 20:19:48
具体的には、アウトブレイク制御の目標を罹患率が1%以下であると設定すると、無症候感染者や発症前感染者を3分の1以上隔離しなければならないとのこと。
本研究でもシミュレーションで用いたコードがGitHubで公開されていますが、Juliaであるのは珍しいかもしれません。
github.com/ABM-Lab/covid1...
タグ:
posted at 20:19:48
水波ユキノ@skeb依頼受付中だいたい絵 @minami_suiha
Python,Julia この2つはJupyterNotebookで動かせるんだけど、ElixirとRubyが動かず苦戦
Elixirはbrewがあるから使えないしいろいろ大変・・・
タグ:
posted at 20:51:10
のらきゃっと@毎週火曜・日曜20時~生配 @VR_Girl_NoraCat
わたし、ゼロから数え始める数字割と苦手なんですよね……どれくらい苦手かと言うと、数時10個使う配列宣言する時いっつも
int a[10];
にしちゃうくらい苦手です。
タグ:
posted at 21:20:15
@genkuroki @ohtanilson @tkksnk 手元でDouble64での線形計算を試してみたところ、予想通りではありますがDouble64での行列計算は(BLASが必要な領域のサイズでは)倍精度の1000倍以上かかっており、用途によっては実用にならないかもです。 pic.twitter.com/3K5XLJwBge
タグ:
posted at 21:23:05
@Pimp_Fada @StefanKarpinski Sure, but that was never the limitation. Apple disallows JIT compliers on these devices. They also don't like the ability to download additional code from the internet, which would be something you'd want at least in the authoring environment.
タグ:
posted at 21:23:13
@taliesinb @bfredlbfredl I never said I'd write it in Julia. I probably would, but obviously Julia needs extra features to be a good systems language. Anyway, the reason to write on OS is just the reason to do anything: I have a bunch of ideas in the space that I'd like to explore.
タグ:
posted at 21:32:21
@taliesinb @bfredlbfredl Things like joint optimization of the entire protocol stack. E.g. for an http server optimize a standard http server for the absolute minimal time from showing up in the input buffer to being written out the output buffer again. And yes, you can certainly prototype in userspace.
タグ:
posted at 21:44:13
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
TypeProfiler.jlでPlots.jl使ってるスクリプト(エラーなし)を型プロファイリングしたら、エラー報告大量発生して普通に呼び出すよりも時間かかってしまった...
タグ:
posted at 23:08:46
乱数たくさん生成して色々実験する、みたいなコードの本体自体は割と高速にプロファイルできるんだけど、1行プロットのコード入れるだけでエラー報告結果が終わる。
タグ:
posted at 23:11:54
と思ったけど、大量のエラーの中にマジっぽいエラーもあった:
この行の`z`はマジな未定義変数っぽい:
github.com/JuliaPlots/Plo...
#julialang #typeprofiling pic.twitter.com/gDyfJzOC9c
posted at 23:23:30
Daytripper is a laser tripwire that can, upon triggering, hide all your windows, lock your computer and execute a custom script to do whatever you want [source and more: buff.ly/319K3f5] #MotivationMonday pic.twitter.com/r5m0cafk1g
タグ: MotivationMonday
posted at 23:35:29
ゲーム用途ではしばらくC++需要が減ることはないだろう。というか一般的にC++需要は増すかもしれない。
しかし次世代言語は?RustとかJuliaとか騒がれているが次の世代、10年ぐらい先ならブームがくるかも。
python も10年ぐらいかかったしね。
だいたい言語ひとつで10年ぐらいのサイクル
タグ:
posted at 23:54:29