黒木玄 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月14日(月)
Juliaで精度保証付き行列積、IntervalArithmetic.jl & Tullio.jlで並列化できるかも?以下のコードに加えて、
using Tullio
tullio_gemm(A, B) = @tullio C[i, j] := A[i, k] * B[k, j]
@btime C1 = tullio_gemm(A, B);
で勝手に並列化される(事前に環境変数JULIA_NUM_THREADSを定義する必要あり) twitter.com/takitoshi/stat...
タグ:
posted at 00:15:41
もしもこれが正しく計算されていれば、BLASを使わず並列計算で区間演算できる。端点にBigfloatの区間演算を並列化も夢じゃない!?正しく計算されていれば。。
タグ:
posted at 00:17:56
一応、1コアで計算したら実行時間が
34.508 s (8 allocations: 15.26 MiB)
8コア並列で
4.330 s (118 allocations: 15.27 MiB)
とそれなりの計算時間で計算できてる。全演算が区間演算なので、これは凄い気がする。
タグ:
posted at 00:21:30
@KenoFischer New #julialang slogan: We'll even diagnose your hardware!
タグ: julialang
posted at 00:23:55
#数楽
添付画像
1. 高木貞治『解析概論』のpp.123-124より
(大学で数学を専攻していれば知っているはずの話)
2. y²=x²+1の場合の計算例
二次曲線をパラメトライズする有理函数は二次曲線の1点を通る直線とのもう1つの交点を考えば作れます。二次曲線一般の様子を理解する問題に帰着。 twitter.com/f_sei/status/1... pic.twitter.com/aXeFunztr2
タグ: 数楽
posted at 02:35:10
#数楽 双曲線と直線の交わり方の図
多くの場合に数学では式だけを書いちゃダメで図も描いて幾何的な直観も使った方がお得。
この手の情報は「受験数学」というくだらない発想を捨てさえすれば比較的容易に手に入るはず。
www.wolframalpha.com/input/?i=plot%...
www.wolframalpha.com/input/?i=plot%... pic.twitter.com/XXNgqJgGUi
タグ: 数楽
posted at 02:35:11
Dr. Chris Rackauckas @ChrisRackauckas
@kareem_carr @PhDemetri The cool thing about science is that everyone is working on something niche. "Climate science" is people studying plankton biology + cloud physics + ..., "cancer biology" is people studying melanocytes, mitochondrial localization, ..., and engineering for every item ever made.
タグ:
posted at 02:55:27
Dr. Chris Rackauckas @ChrisRackauckas
@kareem_carr @PhDemetri If #julialang is able to capture everything that looks niche to someone who's not inside of the field by capitalizing on what makes the methodologies have to be nonlinear and specialized, then it will have captured an audience that it can be very proud of.
タグ: julialang
posted at 02:57:25
#Julia言語 ありゃ?
Julia v1.5.1では
@printf "%d, %d" Inf NaN
は
Inf, NaN
と表示される仕様になっていて、Optim.jlでも使われているのですが、Inf, NaNには対応しないのかな?
github.com/JuliaLang/juli...
タグ: Julia言語
posted at 03:00:29
リスト内包表記
Juliaだけでテストしたもので、Pythonとの比較はしてません。
qsort()が、リスト内包表記で書いたもの、
qsort2()が、for で回したもの、でタイムを計ってみました。
qsort2()のほうが、ひと桁のレベルで早かったです。 pic.twitter.com/zUTSzIRKgl
タグ:
posted at 06:51:11
JuliaでPython書き換えたけどNumbaのjitよりも高速化できんかった。。。code_warntypeマクロ使ってみたけど型はきちんと定義できてそう。もっと勉強する。
#julialang
#Python
posted at 08:48:39
@aokendo #Julia言語
①Pythonとの比較をしていないのであれば【リスト内包表記は、Pythonなどでは処理も早く便利だが、Juliaになると、とたんに遅い】と言ったのは非常にまずかったと思います。
②あと、スクショからのコードを写経は苦痛なので、GitHub Gistなどにコードを貼りつけてもらえると助かります。 twitter.com/aokendo/status...
タグ: Julia言語
posted at 11:12:34
@genkuroki リスト内包表記
いや、qsort()、qsort1()そのものがクイックソートのアルゴリズムで、ライブラリを呼び出したりしてません。そのルーチンだけでソートが完結してます。
タグ:
posted at 12:10:51
@aokendo #Julia言語 訂正版
自分でもやってみました↓
nbviewer.jupyter.org/gist/genkuroki...
添付画像も参照。
* comprehension版
と
* forループでpush!版
の速さはほぼ同じです。
Juliaのbuiltin sortの爆速っぷりが印象的。
私が書いたquicksort達ではメモリ割当が頻発しています。これは非常にまずい。 pic.twitter.com/ApoGQV7Rqr
タグ: Julia言語
posted at 12:51:55
小学校算数のナンセンス指導のひとつ。筆算という手法のコンセプトからずれている。マス目があるのだから揃えて書く意識づけは可能。定規なしでフリーハンドで書く(描く)練習にもなる。なにをさせたいのか本質をふまえないと、無駄なストレス(→児童)と労力(→教員)にしかならないだろうに… twitter.com/sirururun/stat...
タグ:
posted at 13:04:37
Matzによる回答でJuliaに言及。ZigとRustはどっちもC代替を目指していると思うけど、どっちも書いたことないなあ twitter.com/akinori_ito/st...
タグ:
posted at 13:20:11
非公開
タグ:
posted at xx:xx:xx
#Julia言語
for a ∈ xs
とか
a ≤ x
のように ∈ や ≤ 記号を使ってプログラムを書いていることにも注目。
∈ の方は別に in でもよいと思います。
≤ の方は一度使うとやみつきになります。
<= はクソ読み難い。
twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 13:27:35
#Julia言語 参照するべき資料
biojulia.net/post/hardware/
What scientists must know about hardware to write fast code
docs.julialang.org/en/v1/manual/p...
Consider using views for slices
kawasin73.hatenablog.com/entry/2019/11/...
メモリアロケーションに対する罪悪感
(tag: ポエム Go Python) #Go言語
posted at 13:42:45
#Julia言語 他にも、
明示的にクラスを定義できないとオブジェクト指向っぽくコードを書けなくなると信じ込んでいたりする場合も、相当に過学習が進んでいる感じ。
Juliaについてもすでにデザインパターン本が出版されています。
twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 13:47:56
R言語、フォルダ作成や削除、ディレクトリの移動や絶対パス・相対パス、文字列の変換からラーニングが始まらず、Rprojを立ち上げてもそこでのフォルダ構成の話など抜きにデータの読み込みの話に入ってしまうのは個人的に大きな問題だと思っている。
タグ:
posted at 14:12:29
@genkuroki 色々ご足労をかけてしまって、
ソースを見ると、まだまだ知らないコーディングがありますね。反省してます。
添付のソースを参考にいろいろ調べてみます。ありがとうございました。
自分でもやってみました↓
nbviewer.jupyter.org/gist/genkuroki…
添付画像も参照。
タグ:
posted at 14:14:45
データを読み込むためのread.csv()だって、チュートリアルとファイルが違う場所に置かれたときにどう参照すればいいかを知らないとデータ読み込みすらできないで終わるとかありそう。
タグ:
posted at 14:16:46
というかフォルダの参照、移動とかは広くプログラムをするときに使うので、これを押さえればRでもPythonでもJuliaでも似たようにデータ分析を回せると思うんだけど「前処理が仕事の9割」とか言うからあまりよく知られない。実際仕事の6割は「フォルダ構成」で、3割が前処理。
タグ:
posted at 14:18:21
ただでさえいろいろの特徴量やパラメータのトライがあり、中間に多くのファイルを生成することが想定できるのに、inputもoutputもsourceも分けずにDocumentsとかに垂れ流されているデータたちを見ると悲しくなるよね。
タグ:
posted at 14:19:44
◎『数学セミナー』10月号(9月12日発売)
特集執筆者紹介2
部屋とパソコンと私/Juliaでめぐる計算機数学の世界◎横山俊一(@yokoemon2112)
完全数とオイラー関数◎飯高茂(@iitakashigeru)
実験数学:対数表を作ってみよう◎河合伸昭
平面グラフの多色彩色について◎中本敦浩
タグ:
posted at 14:26:38
◎『数学セミナー』2020年10月号(9月12日発売)・単発記事
・高橋礼司氏ロングインタビュー/(1)激動の戦中からフランスへの旅立ちまで◎[聞き手]渋川元樹+編集部
戦後日本を飛び出し在外で研究を行い、表現論の分野で長年活躍された高橋礼司氏に、歩まれた道や海外での交流について伺った。(全3回)
タグ:
posted at 14:27:39
はい??
「じょうぎ」がどうかしました?🤔
こんなのみてると学校いかせる気が失せてくる
ほんっとレベルひく
本質じゃない粗探しばかりして、自分たちが休む時間もない早く帰れないとか言ってたら笑えるわ twitter.com/sirururun/stat...
タグ:
posted at 15:57:05
高三 和晃 / Kazuaki Taka @takasan_san_san
juliaのplotでplotlyをバックエンドにすれば、3dをグリグリできるし、themeを使うと一瞬でオシャレにできるし、gnuplot使わなくなりそう
タグ:
posted at 16:46:00
高三 和晃 / Kazuaki Taka @takasan_san_san
juliaのplotで3次元データ(x,y,z)で与えられた曲面を書くのどうしたらええやろう
タグ:
posted at 16:53:17
高三 和晃 / Kazuaki Taka @takasan_san_san
pyplotでやればst=:surfaceでいけたけど、plotlyjsでは駄目だった
タグ:
posted at 16:59:25
1/2v²=25×1/2×(0.70)²
右辺をすべて計算してしまって、5分で計算が終わらない生徒が多発、、、。
「計算ミスを防ぐ方法は、できる限り計算をしないこと」と伝えました。
タグ:
posted at 17:02:50
Speaking about language readability, same algorithm implemented in #rlang vs #Python vs #JuliaLang. Which one you like the most? pic.twitter.com/Yzoof78h0V
posted at 17:03:47
@aokendo #Julia言語 件のノートブック
nbviewer.jupyter.org/gist/genkuroki...
を更新して、in-place版のquicksortを追加しました。
in-place版にすればJuliaとbuiltin sortと同じオーダーの速さが出ました。(もちろんbuiltin sortよりは少し遅い。)
ソートの話は面白いですよね。 pic.twitter.com/7nTqaz9sUA
タグ: Julia言語
posted at 17:21:23
@genkuroki >PythonとJuliaを比較しているのに、Pythonの側は未確認というのはおかしい。
>PythonとJuliaを比較しているのに
PythonとJuliaを比較しているのではありません。
Juliaで実現されているリスト内包表記の速度を調べたかっただけです。
タグ:
posted at 17:28:33
OokuboTact 大久保中二病中年 @OokuboTact
@temmusu_n > #超算数 鈴木筆太郎さんを引用する人、戦前の算数教育界で見たことがないんですけど、
引用ではないのですが、名前が出てくる本を見つけました、
清水甚吾や山本孫一の名前も出てきます。
『明治大正教育教授物語』<算術教育 55頁〜76頁>
dl.ndl.go.jp/info:ndljp/pid...
タグ: 超算数
posted at 17:35:37
e^iπ+1@Shadow UnBann @Shollow6
@perlzemi [39;54;69]では?
行列計算を最初から実装してるようなJuliaとかだと、
モジュールなどの読込無しで、いきなり
[1 4;2 5;3 6] * [7;8]
だけで回答がでるので、らくですよね。
タグ:
posted at 17:51:15
VoxEUアブストラクト「経済研究に最良のプログラミング言語はどれか:Juliaか,Matlabか,Pythonか,Rか」(2020年8月20日) econ101.jp/voxeu%e3%82%a2... @econ101jpより
タグ:
posted at 18:06:45
非公開
タグ:
posted at xx:xx:xx
#Julia言語 速度比較で気持ちよく遊ぶためには、
* 使用したコードを公開して再現性を必ず確保する
だけだと足りなくて
* 私のようなど素人が書いたコードの比較に過ぎない
と強調しないと怖い。
そういう態度でコードを公開すると、めっちゃすごい最適化を教えてもらえることが多いと思う。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 18:13:16
#Julia言語
C++とJuliaの本質的な違いについては以下のリンク先を参照。
以下のリンク先の1つ上のツイートでJuliaのデザインパターン解説本を紹介しています。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 18:22:18
For a Julia package that implements the tidyverse API, i.e. copies the API design to the tee. The aim is to make it easier for useRs to learn DataFrames.jl by providing dplyr-like syntax where possible.
What do you think is an appropriate name?
#julialang
タグ: julialang
posted at 18:26:02
#Julia言語 埋もれるのは残念なので、いつものquicksortネタ再掲のノートブックにここからリンク。
nbviewer.jupyter.org/gist/genkuroki...
比較したのは添付画像の3つのquicksortとJuliaのビルトインsortです。
quicksort_comprehensionは読み易いと思います。
続く pic.twitter.com/X0e2XKITNr
タグ: Julia言語
posted at 18:29:01
VisualstudioでもVisualstudioCodeでも良いんだけど、pythonとjuliaでIntelliSense使う方法が分からん……誰か教えて(T_T)
タグ:
posted at 18:29:33
Juliaでstructのメンバーに配列を用意すると、structはラップしてる感じで、メンバーの配列のアドレスを保持してる感じがある。これをうまく使うと遅延評価ができる。実際行列の複素共役はそれを使ってるようだ
タグ:
posted at 18:32:20
#Julia言語
内包表記をforループで展開した版がquicksort_for_pushです。
よくあるin-place版も書いた(一部手抜きなのは目を瞑って下さい!)。
メモリ割当が多発するcomprehension版とそのforループ展開版はビルトイン版のsortよ
100倍以上遅い‼️
in-place版は同じオーダー。 pic.twitter.com/40I6mh2Wgi
タグ: Julia言語
posted at 18:34:06
#Julia言語
問題:quicksort_comprehension(x)はシンプルで非常に読み易い。なんらかの__工夫__によって、同じようなシンプルな表記でin-place版と同じ速さのquicksort函数を書けるか? pic.twitter.com/3qWeYKzUhy
タグ: Julia言語
posted at 18:38:36
Dr. Chris Rackauckas @ChrisRackauckas
@evalparse ReadLikeTidyRunsLikeDataTable.jl
タグ:
posted at 18:40:32
これを使うと、struct Pを用意し、b=P(x)を定義すると、これを「ある操作Pをxに作用させた状態」を定義することができて、bを定義した時にPを実行せずにすむ。そしてb×cを実行する段階になって操作Pを行うことができる
タグ:
posted at 18:41:58
初期化したらなにをするべきか...
R, Python, Anaconda, Julia, TeXwork, TeXlive, 各種package, Jupyter lab, RStudio, Dropbox, 嗚呼めまいが...
タグ:
posted at 18:42:40
#Julia言語 上の問題の「模範解答」に向けて、私が書いてしまった「大失敗コード」をお見せしましょう(笑)。
GeneratorとIterators.flattenを使う方法。
クソ遅い。
クソ遅い原因はどうもJITコンパイルにあるっぽくて、何度も繰り返し実行すると速い場合があります。謎。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/MM47QdMi5F
タグ: Julia言語
posted at 19:04:37
#Julia言語 添付画像は繰り返し長さ10の配列をソートさせたとき、偶然、Iterators.flattenを使ったソートが速く終了した場合のスクショです。
長さ10とせずに長さ100の場合を扱うのはつらくて無理。やってみればわかります。 pic.twitter.com/oeL7vi0hHK
タグ: Julia言語
posted at 19:09:08
技術書典9 がオンライン開催中ですが、昨年の冬コミで出したJulia 本を出品しています。
電子版は一部修正・更新済み。紙版は初出のままです
techbookfest.org/product/666172...
#技術書典9 #Julia言語
posted at 19:13:44
#Julia言語 以下のリンク先を見ればわかるように、
a = rand(10^6)
b = rand(10^6)
と
a = rand(10^6)
b = @ view a[end-1:-1:2]
の場合で
collect(Iterators.flatten((a, b)))
の速さが大幅に違う。bがviewの側で大量のメモリ割当が発生して非常に遅くなる。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/SAG281nt5c
タグ: Julia言語
posted at 19:20:17
"Julia can call C, Go, Java, MATLAB, R, and Python code using native wrapper functions"
-- "Will Julia Replace Python and R for Data Science?" (Thomas Cherickal)
medium.com/@thomascherick...
ここまで謂われると、Julia を核にシステムを書いたほうがイイかもね?
タグ:
posted at 19:24:24
#Julia言語 Iterators.flatten は collect で使うと遅い場合がありますが、sum などで使う分には非常に速いです。
質問:Iterators.flatten の collect が非常に遅くなる場合があることの理由を誰か教えて下さい。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/UOJFOyFUw3
タグ: Julia言語
posted at 19:33:39
高三 和晃 / Kazuaki Taka @takasan_san_san
JLD2の使い方がイマイチ分からない。複数変数(配列とか)まとめて1つのファイルに書き込めるのかな?
タグ:
posted at 19:40:03
高三 和晃 / Kazuaki Taka @takasan_san_san
もしかして、JLD2って
@save "hoge.jld2"
ってやるだけで、全変数保存してくれるの??なにこれすごい。
タグ:
posted at 19:48:07
高三 和晃 / Kazuaki Taka @takasan_san_san
plotまでjuliaで済ますなら、データ出力しなくても、jld2でデータ保存しておくだけでええのか。ほんまか?
タグ:
posted at 19:56:59
juliaは黒木先生が紹介し始めたころに言語システムに興味を触って以降は本格的に触っていなかったのだが、今見たらjulia本体をインストーラで入れて、VS Codeに拡張機能を入れてパスを指定するだけで、非常に簡単に環境がセットアップできることが分かりまた遊びで触りだしてしまった
タグ:
posted at 19:57:23
本当だ。
JuliaIO/JLD2.jl: HDF5-compatible file format in pure Julia github.com/JuliaIO/JLD2.jl
タグ:
posted at 19:58:13
@yamazaksv2 私も全く同じ事を言っています。
今日もケプラーの第3法則を用いた周期の計算で2乗と3乗の計算を愚直にしてしまう生徒がいて、この辺りの話を繰り返しました。
タグ:
posted at 20:37:55
@junpenglao Julia automatically chose the correct algorithm depending on the input type / structure. Multiple dispatch for the win ;)
タグ:
posted at 20:45:54
@OokuboTact #超算数 ざっと読みました。鈴木筆太郎さんはいっとき、地方の実践家として取り沙汰されても、影響はそれほどではなかったかもしれませんね。聚楽式の広田の方が有名のよう。ウィキペディアの記述はja.wikipedia.org/wiki/%E9%88%B4...、小野健司による現代の研究に多く依拠しているみたいですね。
タグ: 超算数
posted at 20:50:56
@OokuboTact #超算数 清水さん、山本さんは作問指導で有名だったんですね。これもドイツ教育由来か? などと言いたくなりますが…
どうなんでしょ。
タグ: 超算数
posted at 20:52:55
フリーハンドでこれだけきれいに書けてる線に難癖をつけて、どうしても定規を使わせたい執念に狂気を感じる。
「教育者」ではなく「支配者」になりたい教員の発想でしょ。
#超算数 #定規 twitter.com/sirururun/stat...
posted at 20:54:20
#Julia言語 デザインパターンついては以下も参照。
discourse.julialang.org/t/design-patte...
【In fact, multiple dispatch is so powerful that the usual OO “design patterns” are mostly not needed. Some studies were written about this for Common Lisp/Dylan, and most if it is applicable to Julia ~.】
タグ: Julia言語
posted at 21:34:47
#Julia言語 Juliaのパラメトリック型システムがある種の開発で必須であることに気付いて、Common LispからJuliaに引っ越したという内容のブログが以下の場所にあります。
tamaspapp.eu/post/common-li...
タグ: Julia言語
posted at 21:53:49
#Julia言語 私は Meta .show_sexp(:(Juliaのコード)) でS式に翻訳されたJuliaのコードをよく眺めています。ちょっとしたマクロを書くときにはどうしてもそうしたくなる。
tamaspapp.eu/post/common-li... に比較のために挙げられている、Common Lispのコードを見ると、「Juliaにそっくり!」と思ってしまう。
タグ: Julia言語
posted at 21:58:11
Mark Kittisopikul ht @markkitti
@junpenglao I just want to be very clear here. There is no `mldivide` in #JuliaLang. There is only `\`.
Other than being a arithmetic operator symbol, it is defined like a normal function.
github.com/JuliaLang/juli... pic.twitter.com/3ZKJ13EOCT
タグ: JuliaLang
posted at 22:12:09
It’s possible to write readable code in most languages with a little effort. But only one of these code blocks can be used with types and implementations which haven’t even been invented yet. And run fast. (Hint: its #JuliaLang) twitter.com/tymwol/status/...
タグ: JuliaLang
posted at 22:27:46
Mark Kittisopikul ht @markkitti
@tymwol I prefer the #JuliaLang version. It looks like the math in the paper.
Note that the ' in #JuliaLang is the Hermetian adjoint (complex conjugate transpose, adjoint) and not just the transpose.
In numpy, this would be .H not not .T
タグ: JuliaLang
posted at 22:29:10
これの何が問題かっつーと、そもそも定規を使えという指導は「桁を揃えるため」という理由だったはずだが、方眼がある上に桁が揃ってんのに、教条主義的に定規使用を強いるところ。
こんな奴にはT定規でもぶん投げとけばエエのでは。 twitter.com/sirururun/stat...
タグ:
posted at 22:40:44
www.ossnews.jp/oss_info/artic...
Julia言語実装によるDB 「JuliaDB」
PythonのPandasより格段に速い!
#julia #python #データサイエンス
posted at 23:10:07
@tymwol This is the key point. Julia doesn't need the namespaces because the operations are abstract twitter.com/TomBreloff/sta...
タグ:
posted at 23:29:25
@genkuroki なんとなくの予想です.
collect と Iterators.flattenとの相性だと思います.
Iteratorの構造を引きずったまま collect に渡すと遅い. pic.twitter.com/T5sRZlRlY1
タグ:
posted at 23:38:36
tsujimotter 日曜数学者 @tsujimotter
ルートの中身が2次の無理関数が積分できる仕組みを「自分なりに」整理できた気がしたので、楽しくなってまとめてみました!
無理関数の不定積分と双曲線、微分形式 - tsujimotterのノートブック
tsujimotter.hatenablog.com/entry/indefini...
タグ:
posted at 23:44:20
#Julia言語 自分で定義した型MをAbstractMatrixにはしないが、AbstractMatrixのようにshowだけではなくdisplayもしたい場合には、
Base. show(io::IO, x::M)
だけではなく
Base. show(io::IO, ::MIME"text/plain", x::M)
も定義すれば良さそうな感じ。
具体例↓
nbviewer.jupyter.org/gist/genkuroki...
タグ: Julia言語
posted at 23:46:08
Why do structs and a mutable structs have different default equality operators?????
#julialang
#Julia言語
#Julia
posted at 23:57:51