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 を見て下さい。
Favolog ホーム » @genkuroki » 2020年08月18日
並び順 : 新→古 | 古→新

2020年08月18日(火)

非公開

タグ:

posted at xx:xx:xx

むしこあ @mushicore

20年8月18日

@genkuroki 返信ありがとうございます。ご指摘の通り関数にはしていませんでした。画像が最初に書いたプログラムなのですが、ループの部分を関数化すると時間が半分(~4s)程度になりました。関数化もそうですが行列を何度も再定義して(line:14,29)パフォーマンスを落としている気がします。 pic.twitter.com/VSg6EzGZVs

タグ:

posted at 00:54:08

むしこあ @mushicore

20年8月18日

@genkuroki プロファイラを見てみたらbound関数が非効率だったので一部実装をお借りして書きなおしたところ120msまで縮まりました。ここまで来るとあとは細かな実装や環境の違いになるかおと思います。ありがとうございました! pic.twitter.com/FwU4iRcXal

タグ:

posted at 01:24:43

黒木玄 Gen Kuroki @genkuroki

20年8月18日

@mushicore #Julia言語 私のパソコンはそんなに速くないはずなので不思議に思って調べてみました。

結論:bitrand(n,n)で作ったBitArray{2}を更新させると遅くなる. 通常のArrayの更新の方が速いです。

あと、一ヶ所 @. をつけないと(もしくは = を .= にしないと)、意図した通りの動作になりません。続く

タグ: Julia言語

posted at 07:56:00

黒木玄 Gen Kuroki @genkuroki

20年8月18日

@mushicore #Julia言語 続き。配列 v について u = v として、u[1,1] = 1000 とすると、v[1,1] も 1000 に変わります。u = copy(v) とすれば大丈夫なのですが、コピーの分だけ新たなメモリ割当が発生します。続く

タグ: Julia言語

posted at 07:58:12

黒木玄 Gen Kuroki @genkuroki

20年8月18日

@mushicore #Julia言語 すでに u も同型の配列として存在しているならば、成分ごとの値のコピーを意味する u .= v を使えば、新たなメモリ割当を防げます。

しかし、= と .= の見た目的な違いはわずかなので、これが原因がバグがよく発生し、私は不安なので

@. u = v

とすることがあります。続く

タグ: Julia言語

posted at 08:00:02

黒木玄 Gen Kuroki @genkuroki

20年8月18日

@mushicore #Julia言語 結果とソースコード

bitrand(n, n) を rand(Int8[0,1], n, n) に変えるだけで3倍近く速くなります。さらに @ inbounds も付けると少しだけ速くなる。

プロットまで行かないとバグの発見が結構難しい。プロットを気軽にできる環境でプログラムを書きたいです。

nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/l821mGdaZB

タグ: Julia言語

posted at 08:04:06

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 実は『統計学のための数学入門30講』の方法でテイラーの定理を示すのはちょっと面倒です。

どうしてそういう方法が流行ってしまっているのか理解できない。おそらく、自分で証明を考えずに、過去の教科書に載っていた証明をコピー&ペーストしているだけの解説者が多いのだと思う。続く

タグ: 数楽

posted at 08:08:27

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 剰余項付きのテイラーの定理は「微分を沢山して、不定積分を沢山すると、もとの函数に戻る」という当たり前の話に過ぎません。

当たり前の話に当たり前でないかのような証明を付けて解説を終わりにするのは非常によろしくないです。そういう解説が実に多い。続く

タグ: 数楽

posted at 08:10:42

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 私は算数教育について辛辣な意見をかなり述べているのですが、それにも増して、大学における数学教育や統計教育についてもかなり辛辣なことを書いているつもりです。

算数教育にだけ文句を付けて自分の仕事に対して批判的でないのは非常にまずいので、意識してそうしています。続く

タグ: 数楽

posted at 08:12:10

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 剰余項付きのTaylorの定理は「沢山微分して沢山不定積分すればもとの函数に戻る」だけの話に過ぎないことの解説については以下のリンク先を見て下さい。

不定積分における積分定数の不定積分の繰り返しによって

(x-a)^k/k!

型の項が出て来る仕組みになっています。

twitter.com/genkuroki/stat...

タグ: 数楽

posted at 08:15:33

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 積分を使うと単なるn回微分可能性よりも強い、Cⁿ級を仮定しなければいけないのですが、そういう細かいことは実はそう重要ではありません。函数空間を扱うときにもCⁿ級の仮定の方が便利です。

タグ: 数楽

posted at 08:17:05

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 「単に沢山微分して沢山不定積分する」の類似の方法に「部分積分を繰り返す」という証明法もありますが、個人的にそれは、技巧的な部分と本質的な部分を分離できていないよろしくない解説だと思います。

タグ: 数楽

posted at 08:19:28

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 Taylor展開の各項の (x-a)^k/k! や積分表示された剰余項の「あの形」は単体の体積です。

単体の体積の分母に階乗が現われることは幾何的には自明。

そういう自明な話を部分積分で出して大学新入生向けの解説としてしまうのはよくない。

自明なことは自明であることがわかるようにするべき。

タグ: 数楽

posted at 08:21:10

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 ここで、単体と述べたのは

a ≦ x_1 ≦ x_2 ≦ … ≦ x_k ≦ x

を満たす (x_1, x_2, …, x_k) 全体の集合のことです。

その体積はk次元立方体の体積 (x-a)^k の k! 分の 1 になります(これは積分を使わなくてもすぐにわかること)。 k! は x_1, x_2, …, x_k を並べる順序の個数。

タグ: 数楽

posted at 08:24:30

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 「沢山微分して沢山不定積分するともとの函数に戻る」という言い方であれば、高校生でも微積分を習った後なら十分に「当たり前である」と感じることができると思います。

実際には (x-a)^k/k! が出て来ることを計算で確認する必要があるかもしれませんが、「当たり前」感が半端ない。

タグ: 数楽

posted at 08:27:08

てのぺの @tenopeno

20年8月18日

わかりやすかった
6行目(数式での2行目)の積分区間は[a,x]のタイプミスかしらね twitter.com/genkuroki/stat...

タグ:

posted at 08:29:10

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 単体の出方。定数Cをaからxまで3回不定積分してみましょう(x>aとする)。

∫_a^x(∫_a^{x_1}(∫_a^{x_2} C dx_3)dx_2)dx_1

積分の中でx_1,x_2,x_3は

a≦x_3≦x_2≦x_1≦x

の範囲を動く。単体出現! 3次元単体の体積(x-a)^3/3!とCの積が積分の値になります。単体とか言わなくても簡単な計算。

タグ: 数楽

posted at 08:33:09

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 1変数函数の微分学では剰余項付きのTaylorの定理が最も重要です。最初に勉強する人はそれを目標に勉強するとよいと思います。

そして、Taylorの定理は空気のごとく使われるようになる。

タグ: 数楽

posted at 08:35:40

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽

f(x) = f(a) + f'(a)(x-a) + f''(a)(x-a)²/2! + …

と書くと、「+…の部分を無限に足し上げると発散するかもしれない」と不安にならざるを得ないのですが、「+…」の部分を常に値を持つ剰余項だと解釈できれば、その不安は解消します。

タグ: 数楽

posted at 08:37:35

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 せっかくなので、再度作った動画 pic.twitter.com/EmQJ4xoOaG

タグ: Julia言語

posted at 08:39:01

黒木玄 Gen Kuroki @genkuroki

20年8月18日

@tenopeno おお!さんきゅ!aが0になっていた!気付かなかった。

もとのファイルの方を後で直しておきます。

タグ:

posted at 08:43:24

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 Taylorの定理の解説の詰め合わせセット

「沢山微分して沢山不定積分すればもとの函数に戻る」という計算をすれば自然にテイラーの定理が得られる。

genkuroki.github.io/documents/Calc...
より pic.twitter.com/iIp0HPI0zK

タグ: 数楽

posted at 09:08:34

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 Taylor展開の形が既知になっているなら、剰余項

R(x,a) = f(x) - Σ_{k=0}^{n-1} f^{(k)}(x)(x-a)^k/k!

を a で偏微分するとほとんどの項が消えるという計算をやると、「剰余項の正体」を把握し易いです。

数学では答え(今の場合はTaylor展開の形)が分かってしまうとやりたい放題で楽になる。

タグ: 数楽

posted at 09:13:22

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 数学では答えさえ分かってしまえばやりたい放題になって楽になるので、どんな汚い手段を使っても正しい答えを得ることが重要です。

いきなり「論理的にギャップのない議論が大事」という意味で「過程が大事」などと言う人は、数学の難しさを何もわかっていないと思う。お気楽過ぎ。

タグ: 数楽

posted at 09:16:23

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 自明な誤りの訂正。剰余項の正しい定義は

R(x,a) = f(x) - Σ_{k=0}^{n-1} f^{(k)}(a)(x-a)^k/k!

です。

f^{(k)}(x) → f^{(k)}(a) と訂正した。

タグ: 数楽

posted at 09:19:27

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#数楽 公式のレベルで思考を進めるのではなく、公式を生み出す考え方のレベルで思考を進めるのが普通なので、公式を書くときにイーカゲンな態度になってしまいがち。

「書き下された公式自体は本質ではない」という感覚がないと、複雑な公式それ自体を頭に入れて考えなければいけなくなって死ぬ。

タグ: 数楽

posted at 09:22:24

yoshitake-h @yoshitakeh

20年8月18日

右辺f^{(k)}(x)のxは,aではないでしょうか. twitter.com/genkuroki/stat...

タグ:

posted at 09:44:47

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語

a = [1, 2]
b = a
b[1] = 10

とするとa[1]も10になる!

a = [1, 2]
b = copy(a)
b[1] = 10

ならa[1]は1のまま。ただしcopy(a)でメモリ割当が発生。

a = [1, 2]
b = similar(a)
@. b = a # 成分ごとの値のコピー
b[1] = 10

でもa[1]は1のまま。

ループの内側でcopyは損。 twitter.com/genkuroki/stat... pic.twitter.com/W4wKiKvNyZ

タグ: Julia言語

posted at 10:18:40

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 元々が遅い場合には無駄なメモリ割当が少々発生することによる計算効率の悪化は気にならないかもしれませんが、Juliaではそうではなくなる。

タグ: Julia言語

posted at 10:24:07

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 熱方程式の数値解を求めている。

f!のようにin-place計算すると、無駄なメモリ割当が発生せずに速い。

gのようにループの内側でcopyを使うと遅くなる。この場合にはあんまり遅くなっていないが、ガベージコレクションが頻発すると悲惨なことになる。

twitter.com/genkuroki/stat... pic.twitter.com/0I0eBaew5V

タグ: Julia言語

posted at 10:28:32

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語

気軽にプロットできることはかなり重要。

バグの有無の確認にために必ずプロットまでやったほうがよいという経験則がある。

気軽にプロットできない環境でのプリグラミングはひどくストレスがたまる。 twitter.com/genkuroki/stat...

タグ: Julia言語

posted at 10:38:52

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 「無駄にストレスがたまらない」という条件は「最適化する気が起こるか否か」と密接に関係している。

プロットを気軽にできることは必須。

数式処理系の支援も必須。

人間が書く気になれないコードを採用するために完全なマクロも必須。

タグ: Julia言語

posted at 10:45:48

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 MITの講義の宿題の答えには、Juliaが完全なマクロを使えてプロットも用意で数式処理系の支援も受けられることを使って、Fortranで書かれた特殊函数の実装の5〜6倍の速さを実現する実演がある!

nbviewer.jupyter.org/github/steveng...

この意味でJuliaはFortranより速い場合がある。

タグ: Julia言語

posted at 10:45:49

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 Fortranの側でもJulia側でやったのと同じ最適化を施せば速くなるだろう。

しかし、実際に出回っているFortranで書かれた特殊函数のライブラリはそこまで最適化されていない。

おそらく、FortranではJuliaならやる気になれる最適化は相当に面倒な作業になる。

タグ: Julia言語

posted at 10:50:05

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 Fortranで書かれた特殊函数の実装よりも5〜6倍速いコードをJuliaで書く実演は、「プログラミング言語の速さ」の計測について単純に考えてはいけないことを強く示唆している。

単純なベンチマークテストでは見えない実戦領域で5~6倍のような大きな差が出てしまうかもしれない。

タグ: Julia言語

posted at 10:53:54

むしこあ @mushicore

20年8月18日

@genkuroki 追加の情報ありがとうございます。黒木さんのコードを参考にしてこちらでもちゃんと動作するgifを作成することができました。Int8, @ inbounds 込みで実行時間が約39msになりました(8年ほど前のi7-3770Kです)。 pic.twitter.com/TOKe6gfR4u

タグ:

posted at 10:55:47

黒木玄 Gen Kuroki @genkuroki

20年8月18日

@mushicore おお!やはり、私の環境より少し速くなりましたね😭

タグ:

posted at 10:58:50

むしこあ @mushicore

20年8月18日

この結果なんだけど、ループ内での配列の読み出しのときに3x3の小さな配列を作っていたのがパフォーマンスに大きく影響していたのでそれぞれの言語でやりなおした。結果はこちら。

Matlab 0.53秒
Python 3.67秒
Julia 0.039秒

タグ:

posted at 10:59:49

むしこあ @mushicore

20年8月18日

@genkuroki 一割程度のの差は誤差のうちかと🙃 そろそろ新しい計算機が欲しいです。

タグ:

posted at 11:02:04

むしこあ @mushicore

20年8月18日

@genkuroki 昨日の結果ですが、各言語で同じ理由でパフォーマンスの低下が起こっていたのでそれぞれやり直しました。配列を読むときは愚直に読んだ方が速いと学びました。 twitter.com/mushicore/stat...

タグ:

posted at 11:04:00

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 Julia script を shell script のように使う話。

JuliaはFortranを使っていた仕事にも、shell scriptでやっていた仕事にも両方使える。これは結構ゆかい。

twitter.com/genkuroki/stat...

タグ: Julia言語

posted at 11:08:06

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語

Juliaでの「クラス」の類似物はstructではないです。

structには名前空間の分離機能がないので、名前空間の分離を行うmoduleも考慮しないと、「クラス」でやって来たことをJuliaでやることができなくなる。

structとmoduleの組み合わせは素朴で分かり易い。

twitter.com/polymerase_96/...

タグ: Julia言語

posted at 11:15:01

非公開

タグ:

posted at xx:xx:xx

非公開

タグ:

posted at xx:xx:xx

ごまふあざらし(GomahuAzaras @MathSorcerer

20年8月18日

すいません倍は嘘でした.ベンチ取るときに Numba の 初回 JIT を含むので数回回したら Numba/Julia = 1.4 ぐらいまできました.

タグ:

posted at 11:18:48

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 で「クラス」の類似物を探してstructを発見し、「クラス内メソッドもないし、継承もない」と言ってしまうところまでがJuliaに関する誤解の標準コース。

誤解訂正法:

名前空間分離のためのmoduleも考慮する必要がある。

さらに、Holy traitsの存在を認識することが必須。

タグ: Julia言語

posted at 11:19:28

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語

「struct内メソッド」がないのは、multiple dispatchなので当たり前。

名前空間を分離したmodule内のメソッドならば普通にある。

「継承云々」についてはHoly traitsの解説を参照。

タグ: Julia言語

posted at 11:23:40

HLH @polymerase_96

20年8月18日

@genkuroki ありがとうございます!
実は昨日調べててmoduleで分けるのかなとは思ったのですが、インスタンス内部の変数をメンバ関数から更新させていくみたいな操作ってどうやるのが自然でしょうか?

タグ:

posted at 11:28:26

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 #Python

Numbaの @ jit 一発で非常に速くなる場合があるのはうれしいですよね。

仕組み的にJuliaの代わりにはならないのですが、Pythonでちょっとした数学的パズルを解きたい人にとって、Numba @ jit は非常に便利な道具だと思います。 twitter.com/MathSorcerer/s...

タグ: Julia言語 Python

posted at 11:30:17

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 だと「すべてがNumba状態」になる。

Python NumbaでJITの素晴らしさに気付いたら、Juliaも使ってみるとよいと思う。

タグ: Julia言語

posted at 11:31:55

Ki7cb @Ki7cb

20年8月18日

julialangのタグ見てると,英語以外で流れてくるの日本語だけでJulia言語のタグもあるのになぜjulialangに日本語を流してしまうのかという気持ちになる

タグ:

posted at 11:45:37

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 特に

time julia foo.jl

はアウト。

個人的には初心者にはJupyterがおすすめ。
自動的にusing Plotsした状態が維持される。

JupyterでJuliaを使う方法の私による解説が

nbviewer.jupyter.org/github/genkuro...

にある。

> julia 〇〇.jl してはいけないよ qiita.com/abcsupergt/ite... #Qiita

タグ: Julia言語 Qiita

posted at 11:47:31

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語

お気楽に使うならJupyterを使う。

せっかく *.jl ファイルを書くならパッケージにしてしまうと便利。

pkg> generate MyPkg
julia> cd("MyPkg")
pkg> activate .
pkg> instantiate
julia> using Revise
julia> using MyPkg
julia> MyPkg.greet()
MyPkg/src/MyPkg.jl を編集

タグ: Julia言語

posted at 11:58:42

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 パッケージを公開したい人はPkgTemplate.jlについて調べる。

タグ: Julia言語

posted at 11:59:26

夜道(日西お35a) @yomichi_137

20年8月18日

julia *.jl しない話、開発中ならもちろんそうであるけれど、例えばでっかいシミュレーションとか機械学習とか走らせる分には初期化のオーバーヘッドなんて無視できるはずなので普通に起動しちゃっていです

タグ:

posted at 12:01:28

mod_poppo @mod_poppo

20年8月18日

いやまあJuliaのFloat16に対するfmaが怪しいっていうから反例を生成してたんだけど

タグ:

posted at 12:32:06

mod_poppo @mod_poppo

20年8月18日

ARMには半精度で各種演算を行う命令があるが、ARMv8.2-A以降でしかもoptionalなのでうちのラズパイでは動かない。x86系にはAVX512でBF16の演算命令が導入されるっぽいけど半精度に対してはそういうのはない。GPUなら半精度の各種演算を持ってるかも。

タグ:

posted at 12:37:20

大堀龍一 (Ryuichi OHORI) @__DaLong

20年8月18日

> julia 〇〇.jl してはいけないよ
qiita.com/abcsupergt/ite... #Qiita
コンパイル遅いイメージで敬遠していたが VS Code 使うといい感じにやってくれるのね。Jupyter どうしてもぐちゃぐちゃになってしまう、ほんとわかる。

タグ: Qiita

posted at 12:37:42

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語

添付画像の例を見れば

f(a::Foo, x)



a.f(x) のようなもの

とみなせることがわかると思います。

fと同じ函数名の

f(a::Bar, x)

を定義しておくと、f(a,x)はaがFooかBarかで実行される内容が変わります。

gist.github.com/genkuroki/9611...

twitter.com/polymerase_96/... pic.twitter.com/kyMtts7Uyu

タグ: Julia言語

posted at 12:51:42

ごまふあざらし(GomahuAzaras @MathSorcerer

20年8月18日

JAX: Autograd and XLA すごい

タグ:

posted at 12:56:42

ごまふあざらし(GomahuAzaras @MathSorcerer

20年8月18日

XLA (Accelerated Linear Algebra) is a domain-specific compiler for linear algebra that can accelerate TensorFlow models with potentially no source code changes.

タグ:

posted at 12:57:02

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 abstract typeやstruct定義される型Foo, Barについて同一の名前の函数fを

f(x::Foo)=println("Foo: ", x)
f(x::Bar)=println("Bar: ", x)

と作ると、xの型の違いによってどちらかが実行されます。これは「Fooのxのメソッドx.f()とBarのxのメソッドx.f()が違う」と思ってもよいです。

タグ: Julia言語

posted at 13:03:35

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 では、a.f(x,y) の代わりに、f(a, x, y) と書くと思っておけばそう間違いはないです。

ただし、Juliaはmultiple dispatchなので、a だけではなく、x, y の型の違いでもdispatchされます。a, x, y が平等な世界。(実際にはfの型の違いでもdispatchできる(function-like object))

タグ: Julia言語

posted at 13:06:59

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 については、ごまふあざらしさんの解説が全般的に分かり易いです。

ごまふあざらしさんについては
github.com/Julia-Embedded...
も参照。

twitter.com/MathSorcerer/s...

タグ: Julia言語

posted at 13:15:15

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 Jupyter でぐちゃぐちゃになるってのがどういう状態なのかいまいちよく分からない。exampleがないとわからない。

もしかして、Restart & Run all できないようなノートを書いているということ?

MITでのJuliaを使った講義ではJupyterも使っていて分かり易いです。

タグ: Julia言語

posted at 13:23:43

omanuke @omanuke

20年8月18日

RustとJuliaとLispやりたいんだけど手が回らぬ(´・ω・`)

タグ:

posted at 13:24:21

HLH @polymerase_96

20年8月18日

@genkuroki なるほど、メンバ関数の本来の形ですね
動的型付け言語でオーバーロードできるのは便利だとは思いました!
aを更新する場合、a.f(x)のほうが演算子f(x)をaに作用させてる感があって気に入ってたんですが、こればかりは仕方ないですね笑

タグ:

posted at 13:24:56

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 MITでのJuliaを使った講義の記録は

github.com/mitmath

に沢山あります。とても全部には目を通せない。

これを読めば、数学とJuliaとJupyter notebookの使い方がわかる。

タグ: Julia言語

posted at 13:26:34

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 ごまふあざらしさんによるPkgTemplate.jlの使い方の解説

qiita.com/SatoshiTerasak...

qiita.com/SatoshiTerasak...

コードの大部分をパッケージに追い出して、長時間走らせたいコードをそのパッケージを読み込んで動くmain.jlに書いておいて

julia main.jl

とすればスマートだと思う。

タグ: Julia言語

posted at 13:31:57

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

20年8月18日

@polymerase_96 #Julia言語 の典型的な応用先では、

「A型問題aをM型の解法で解く」タイプの函数 solve(a::A, ::M)

がよく定義されています。

直観的には、solveはAの所属物でもないし、Mの所属物でもないとしたいので、こういう場合にはJuliaのmultiple dispatchが便利です。続く

タグ: Julia言語

posted at 13:38:27

黒木玄 Gen Kuroki @genkuroki

20年8月18日

@polymerase_96 #Julia言語 一方、確率分布のパッケージDistributions.jlでは、

pdf(dist::Normal, x)
rand(dist::Normal)

などの函数群が定義されていて(distは確率分布、Normalは正規分布の型)、この場合には、

dist.pdf(x)
dist.rand()

の方が分かり易い。記号法には場合ごとの一長一短がある感じ。

タグ: Julia言語

posted at 13:42:25

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

20年8月18日

@polymerase_96 #Julia言語 実はJuliaにも obj.f(x) のスタイルを可能にする機能があるときに追加されていて、PythonのmatplotlibをJuliaで利用するためのパッケージを

using PyPlot

と読み込むと、

plt.figure(~)
plt.plot(~)

の形式で、Python上とほぼ同じスタイルでmatplotlibを使えます。いろいろ便利。

タグ: Julia言語

posted at 13:45:45

非公開

タグ:

posted at xx:xx:xx

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 によるKdVの数値解のアニメーション。

ソースコード↓
nbviewer.jupyter.org/github/genkuro...

FFT関連↓
nbviewer.jupyter.org/gist/genkuroki...
FFTで微分を近似計算する方法 twitter.com/yano4o4/status... pic.twitter.com/IAIBfobhzG

タグ: Julia言語

posted at 13:54:58

非公開

タグ:

posted at xx:xx:xx

むしこあ @mushicore

20年8月18日

更に追記です。Pythonの項目ループする回数を間違えていたので3.67秒ではなく28秒くらいだったのですが、Numbaを使うと(@ njitと書くだけ)0.44秒程度になりました。

なので、今のところ以下のような感じです。
100x100 ライフゲーム 1000ステップ
Matlab 0.53秒
Python (Numba) 0.44秒
Julia 0.039秒

タグ:

posted at 13:57:50

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 以下の条件が満たされている場合にはJupyter notebookが便利だと思います。

① コードが数百行以内に収まる。
② コードそのものよりも計算結果(特にプロット)の方が重要。
③ 数式を使った解説も同時に配布したい。

Jupyter notebook化してGitHub Gistで公開すれば、ブログがいらない。 twitter.com/hayabusa_0613/...

タグ: Julia言語

posted at 14:03:23

HLH @polymerase_96

20年8月18日

@genkuroki いろいろありがとうございます!
とりあえずモジュールとか作りながら覚えていきます(´°ω°`)

タグ:

posted at 14:06:47

非公開

タグ:

posted at xx:xx:xx

mod_poppo @mod_poppo

20年8月18日

言語処理系を毎回起動すると重いから起動させたままにしろみたいなやつ(具体的にはScalaとかJulia)、俺みたいな古い人間には厳しい

タグ:

posted at 14:45:25

非公開

タグ:

posted at xx:xx:xx

Lirimy @LirimyDh

20年8月18日

もっといい方法があるかはわからないのですが、Gaston.jl で vscodedisplay に向けて出力すればプロットペインを利用できました。#Julia言語 twitter.com/hayabusa_0613/... pic.twitter.com/yp3KYrRUdL

タグ: Julia言語

posted at 15:03:16

非公開

タグ:

posted at xx:xx:xx

非公開

タグ:

posted at xx:xx:xx

KTYD @KTYDRCB

20年8月18日

@hayabusa_0613 私の方でも状況再現されました。確かにgnuplotのウィンドウは開きますが、何も表示されないJulia Plotがでますね。
解決方法がわからないので申し訳ないのですが、Julia側の拡張機能設定にプロットペインの切替がありますので、これのチェックを外すとプロットペインを出さないことができます。 pic.twitter.com/ueC6eqVqxS

タグ:

posted at 15:59:33

非公開

タグ:

posted at xx:xx:xx

KTYD @KTYDRCB

20年8月18日

@hayabusa_0613 画像のチェック外してCodeの再起動かけたら、私の環境では、gnuplotのウィンドウのみ表示されました。
消極的な解決方法で恐縮です。。

タグ:

posted at 16:03:50

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 #Python #Numba

Numbaを使って、28秒が0.44秒に!

数文字追加するだけで60倍以上速くなるのは便利!

人口の多いPythonユーザー達が、Numbaでさくっと高速計算して、数学プロットや数学動画を作って公開するようになると、社会的にインパクトがあると思う。

twitter.com/mushicore/stat...

タグ: Julia言語 Numba Python

posted at 16:03:54

非公開

タグ:

posted at xx:xx:xx

非公開

タグ:

posted at xx:xx:xx

Lirimy @LirimyDh

20年8月18日

@hayabusa_0613 Julia Plots (8/8) のことなら、プロットペインをアクティブにした状態で、矢印アイコンで前のプロットを見れて便利なのです。リセットしたいなら、右の […] アイコンから Delete All Plots できます。

タグ:

posted at 16:30:35

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 CやC++の方が速いだろうと思っていても、プログラムの書き方によっては全然そうならないことがあります。以下のリンク先のπのモンテカルロ計算では

g++: 2.6 sec
Python: 126 sec
Numba: 1.5 sec
Julia: 0.34 sec

で g++ が Numba に負けています。

gist.github.com/genkuroki/687e...

タグ: Julia言語

posted at 16:33:04

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 CやC++で書くと、デフォルトで時代遅れのライブラリが使われることが多いので、自分で適切なライブラリを選んで使わないと、Juliaのようなお気楽プログラミングなスタイルに計算速度面で全然かなわないことがあります。

タグ: Julia言語

posted at 16:36:40

Yosymatu @Yosymatu

20年8月18日

juliaはや笑笑 やっぱりjuliaやるかー

タグ:

posted at 16:37:32

Yosymatu @Yosymatu

20年8月18日

juliaでGeoJson形式とかを扱えるか調べてみるか

タグ:

posted at 16:38:13

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 #Python

g++: 2.6 sec
Python: 126 sec
Numba: 1.5 sec
Julia: 0.34 sec

Pythonは素朴にforループを回した場合です。NumPyをうまく使って高速化した場合は

NumPy: 2.16 秒

で私による下手くそなg++の使い方には勝っています。

gist.github.com/genkuroki/1886...

タグ: Julia言語 Python

posted at 16:44:43

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 要するに、私のようなプログラミング能力の低い人にとっては、C++を使っても、PythonのNumPyやNumbaに速度面で勝てず、さらに速いJuliaには全く敵わないという結果に終わります。

CやC++の方が速いというのは、プログラミング能力が高ければ正しいですが、私個人については誤りです。

タグ: Julia言語

posted at 16:47:42

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 こういうことは実際にコードを書いて実行してみないと分からないことです。

私は、色々試してみた結果、私のようなプログラミング能力の低い人にとっては、CやC++でがんばってプログラムを書いても速度的なメリットはなく、Juliaを使った方が得だと分かりました。

タグ: Julia言語

posted at 16:51:32

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 プログラミング能力の高い人が、適切なライブラリを選んで、適切な最適化を行えば、C, C++, Fortran で書いた方が速くなるのでしょうが、そういうことを自分でやる気になれるかどうかは別の問題。

あと、いろいろ試してみれば分かるように、静的型付けの有無と計算速度は関係ないです。

タグ: Julia言語

posted at 16:56:28

AS_Pioneer @DVC_SAI

20年8月18日

【緩募】CやC++の結構な量のソースプログラムをJuliaなどに変えてくれる会社

タグ:

posted at 17:00:59

ごまふあざらし(GomahuAzaras @MathSorcerer

20年8月18日

jupyter の gist it extension, SSH ログインしている関係から使えないって諦めてたけれど personal access token を GitHub のアカウントで生成してそれを gist it のところにペッと貼り付ければできるっということを調べることができた.解決

タグ:

posted at 17:05:31

非公開

タグ:

posted at xx:xx:xx

あ〜る菊池誠(反緊縮)公式 @kikumaco

20年8月18日

こういう時に人間性が出ますわなあ |

緊急検診の安倍首相、一部議員から「人間性を疑う」発言が! 共産副委員長はピシャリ「どんな政治的立場の人であれ、健康問題を揶揄すべきでない」 www.zakzak.co.jp/soc/news/20081... @zakdeskより

タグ:

posted at 17:11:51

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 ありがたくパクらせてもらった。

preview有り→ProgressBars.jl
preview無し→ProgressMeter.jl

を使うことにした。片方だけに統一して、表示が崩れないようにすることはできなかった。

nbviewer.jupyter.org/gist/genkuroki... twitter.com/MathSorcerer/s... pic.twitter.com/fMqgeBTctm

タグ: Julia言語

posted at 17:19:00

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 非常に細かいことですが、

x::Array{Float64, 1} = rand(1000)

の::Array{Float64, 1}は無用。

右辺のrand(1000)がArray{Float64, 1}型のものを生成することをjuliaは知っているので、xはArray{Float64, 1}型だとjuliaが認識できる変数になります。

twitter.com/hayabusa_0613/...

タグ: Julia言語

posted at 17:29:14

飯田泰之 @iida_yasuyuki

20年8月18日

パーセントパーセントいうけど,

結局いくら凹んだんだよ!

という人向け.ざっくりシナリオに基づく所得低下規模の資産とか.海外の経済成長等も載ってるよ.

→【公開記事】GDPマイナス27.8%(?)の規模感について|飯田泰之 @iida_yasuyuki #note note.com/iida_yasuyuki/...

タグ: note

posted at 17:32:13

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 Juliaではマジで明示的に型を書かなくてよい。multiple dispatchを使う場合に限って、函数の引数の型を書く。

struct Foo
a
end

と書くとまずいのですが、

struct Foo{A}
a::A
end

として、aの型AをJuliaに認識させればOKです。

タグ: Julia言語

posted at 17:34:21

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

20年8月18日

@hayabusa_0613 そうです、そうです。

juliaがどのように型を認識しているかは、

@ code_warntype f(1.2)

のようにして確認できます。@ の後の空白は除く。
この @ code_warntype はよく使います。

タグ:

posted at 17:40:12

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 Gnuplot.jl の使用例は貴重なのでありがたいです。

タグ: Julia言語

posted at 17:41:28

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 Holy traitでは

struct 剣士 end
struct 非剣士 end
struct 魔法使い end
struct 非魔法使い end

のような空な型の定義が出て来て、structを「クラス」の類似物だと見ることから、どんどん離れて行きます。

この手の型は純粋にmultiple dispatchのためだけに使われる。 twitter.com/genkuroki/stat...

タグ: Julia言語

posted at 18:03:18

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語

abstract type Alg end
struct A<:Alg end
struct B<:Alg end

abstract type Prob end

struct P<:Prob ~ end
default_alg(::P) =A()

struct Q<:Prob ~ end
default_alg(::Q) = B()

solve(p::Prob)= solve(p, default_alg(p))
solve(p::P, ::A)=~
solve(p::P, ::B)=~

タグ: Julia言語

posted at 18:11:54

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 問題の型P, QごとにデフォルトのアルゴリズムA, Bが設定してあって、solve(p) を実行すると、pの型ごとにデフォルトのアルゴリズムで解いてくれるようにするために、

solve(p::Prob)=solve(p, default_alg(p))
solve(p::P, ::A)=~

solve(p::Q, ::B)=~

のパターンが多用される。

タグ: Julia言語

posted at 18:16:36

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 これ(Holy traits)を知らないと、Juliaのコードの多くを解読するのが困難になってしまう。引数の型の違いで実行されるコードが変わるという仕組みをフル活用。

Juliaのよいところは新しいことを学ぶことを強制されるところ。

「試行錯誤時に julia foo.jl しない」も面白い。

タグ: Julia言語

posted at 18:21:22

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 あるパッケージで型P,Qの問題をアルゴリズムA,Bで解くためのコードが実装されているとき、そのパッケージに型Rの問題やアルゴリズムCを付け加えるための自作パッケージを自分のリポジトリで公開できます。

そういうことを非常にやり易い。

twitter.com/genkuroki/stat...

タグ: Julia言語

posted at 18:26:45

Mehmet Hakan Satman @mhsatman

20年8月18日

A simple example for calling C libraries in Julia.

#JuliaLang pic.twitter.com/t3KioBmZDV

タグ: JuliaLang

posted at 19:05:27

Anmol Rana @ref_sys

20年8月18日

This is 100% #JuliaLang code. It trains a dense neural network using the #Keras Python library. If you replace the first 3 lines with "import tensorflow as tf; from tensorflow import keras", you can run the exact same code in Python. Talk about excellent interoperability! pic.twitter.com/8g4hJYcRwb

タグ: JuliaLang Keras

posted at 19:52:38

(「・ω・)「ガオー @bicycle1885

20年8月18日

政府は「時代はJulia」との談話を発表

タグ:

posted at 20:01:12

ceptree @ceptree

20年8月18日

令和のJuliaおじさん

タグ:

posted at 20:19:44

あ〜る菊池誠(反緊縮)公式 @kikumaco

20年8月18日

既製のツールキットを使うと負けた気がするので、オライリーのPythonでディープニューラルネットワークを作る本を買ってきました。暇な時にJuliaで書きます。
少しだけ本職の研究と関係ある

タグ:

posted at 20:22:31

すむーずぷりんちゃん @mat_der_D

20年8月18日

julia -e 'println("@mat_der_D ちくわ大明神")'
#シェル芸

タグ: シェル芸

posted at 20:59:55

Yuki Nagai @cometscome_phys

20年8月18日

JuliaのRefとPtrの違いがよくわからない

タグ:

posted at 21:22:33

非公開

タグ:

posted at xx:xx:xx

Yuki Nagai @cometscome_phys

20年8月18日

Julia 1.5でできた新機能マクロccall、引数にRef入れたらエラーで止まってしまう

タグ:

posted at 21:28:42

高三 和晃 / Kazuaki Taka @takasan_san_san

20年8月18日

juliaでr=0:0.1:1としたときに、これの初めと終わりが欲しいときって、r.startとかr.endみたいに取得できないの?

タグ:

posted at 21:44:13

高三 和晃 / Kazuaki Taka @takasan_san_san

20年8月18日

ちなみにr=0:10の時は、r.startとr.stopで0と10が取得できる。

タグ:

posted at 21:45:46

ごまふあざらし(GomahuAzaras @MathSorcerer

20年8月18日

Julia 時代なのか?

タグ:

posted at 21:46:35

高三 和晃 / Kazuaki Taka @takasan_san_san

20年8月18日

r=0:0.1:1の時は、r[1]とr[r.len]でやるしかないかな。

タグ:

posted at 21:47:47

Yuki Nagai @cometscome_phys

20年8月18日

@takasan_san_san r[end]はできると思います。r[begin]もできるはずです

タグ:

posted at 21:47:54

高三 和晃 / Kazuaki Taka @takasan_san_san

20年8月18日

@cometscome_phys ありがとうございます。r[begin]は怒られましたね。 pic.twitter.com/Lt3cqkmxei

タグ:

posted at 21:53:26

Yuki Nagai @cometscome_phys

20年8月18日

@takasan_san_san juliaバージョン、1.4以降なら使える気がしますが、バージョンいくつですか?

タグ:

posted at 21:54:31

高三 和晃 / Kazuaki Taka @takasan_san_san

20年8月18日

@KagomeLattice ありがとうございます。無事全部確認できました。”Juliaっぽい”についてどこかで説明されてたりするんでしょうか?興味があります。

タグ:

posted at 21:54:46

Yuki Nagai @cometscome_phys

20年8月18日

@takasan_san_san Julia 1.5で確認しました。できますね。 pic.twitter.com/oP9Z0QMm0y

タグ:

posted at 21:57:57

高三 和晃 / Kazuaki Taka @takasan_san_san

20年8月18日

@cometscome_phys 1.2というレトロな感じでした。すみません...

タグ:

posted at 21:58:53

積分定数 @sekibunnteisuu

20年8月18日

理解学部に進んだけど、全く納得できない。 twitter.com/munekun_o/stat...

タグ:

posted at 22:02:28

積分定数 @sekibunnteisuu

20年8月18日

@munekun_o @Kaun1954 共感もしないです。

タグ:

posted at 22:08:21

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語

pkg> generate MyPkg

とか、PkgTemplate.jlで作った自分のパッケージのディレクトリの .gitignoreに

Untitled*.ipynb
test*.ipynb

を追加して、そのディレクトリで、新しいJupyter notebookを開く。最初のセルで

]activate .

次のセルで

using Revise

続く

タグ: Julia言語

posted at 22:10:48

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語

using MyPkg

で src/MyPkg.jl が読み込まれる。

その後は任意のエディタ(Jupyterでも編集可能)でMyPkg.jlを編集しながら、Jupyter notebook上でテスト。using Reviseのおかげで、MyPkg.jlの編集結果はnotebook側に自動的に反映される。

続く

タグ: Julia言語

posted at 22:10:49

非公開

タグ:

posted at xx:xx:xx

高三 和晃 / Kazuaki Taka @takasan_san_san

20年8月18日

Juliaで var1_var2 みたいなstringを簡単に書きたい時、"$var1_$var2"って書くと、var1_ っていう変数になっちゃうんだけど、これってどうするのがいいんだろう?今は小分けにして*で結合している。

タグ:

posted at 22:14:10

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 notebookの方での MyPkg.jl の内容のテストの過程でできた汎用的な函数はどんどん MyPkg.jl の方に追加する。

こんな感じでやって行けば、Jupyter notebook (iPadからZeroTier経由で外部から使える) だけでも、それなりに、パッケージの作成をできます。

タグ: Julia言語

posted at 22:15:57

Yuki Nagai @cometscome_phys

20年8月18日

@takasan_san_san $(var1)_$(var2)でいけませんか?

タグ:

posted at 22:18:49

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 テスト用に使った {Untitled*, test*}.ipynb の内容がどんなにぐちゃぐちゃになっても、src/MyPkg.jl の中身がすっきりしていれば、使える道具が出来上がります。

Jupyter notebook上のテストは、test/runtests.jl にも適当にコピペしておく。

タグ: Julia言語

posted at 22:19:23

高三 和晃 / Kazuaki Taka @takasan_san_san

20年8月18日

永井さんと山田くんがjulia即答マンになってくれている... 申し訳ねぇ...

タグ:

posted at 22:21:21

ごまふあざらし(GomahuAzaras @MathSorcerer

20年8月18日

遊んでみた.

gist.github.com/terasakisatosh...

いい感じに高階の常微分方程式解けるってことかな?

タグ:

posted at 22:23:07

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 添付画像もしくは

nbviewer.jupyter.org/gist/genkuroki...

を見れば分かるように、Jupyter notebookでは、画像や動画をBase64でノートに埋め込んで表示させることもできます。そのための函数が showimg です。

これを使わなくても主要なパッケージの多くがインライン表示に対応してくれている。 pic.twitter.com/6TveUfMuDJ

タグ: Julia言語

posted at 22:25:18

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 コードと画像や動画を1枚のファイルで配布できる。必要なら数式を含めた説明も入れられます。

例えば、1始まりの配列でFFTを行うJuliaでは色々考えないとFFTをうまく使いこなせません。私が確認したことを書いたのが

nbviewer.jupyter.org/gist/genkuroki...

数式と画像が混じっている。 twitter.com/genkuroki/stat... pic.twitter.com/ihd8u1JxhY

タグ: Julia言語

posted at 22:30:17

Akinori Ito @akinori_ito

20年8月18日

Wnn, Egg と来たら GMW だが、覚えてる人誰もいないだろうなあ

タグ:

posted at 22:31:16

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語 コードだけを配布したいなら、パッケージにしてしまい、コードと一緒に計算結果と数式入りの解説も一緒に配布したいなら、Jupyter notebook 化するのが正解だと思います。

タグ: Julia言語

posted at 22:32:26

ごまふあざらし(GomahuAzaras @MathSorcerer

20年8月18日

Julia、みんな1.5または1.6つかっていこうな(1.4以下はメンテされないので)

タグ:

posted at 22:51:19

高三 和晃 / Kazuaki Taka @takasan_san_san

20年8月18日

Juliaでopen("XXX", w)みたいにしてファイル作る時に文字数の上限があるっぽいのだが何で決まっているんだろう... なんかerror出る...

タグ:

posted at 23:16:26

黒木玄 Gen Kuroki @genkuroki

20年8月18日

#Julia言語

JuliaHubでパッケージをバージョンアップしたので "Tag with a different commit already exists for the version mentioned in (Julia)Project.toml" と言われたが対処の仕方が分からない。以下のリンク先の質問と完全に同じ状態。

discourse.julialang.org/t/error-on-pac...

タグ: Julia言語

posted at 23:16:46

積分定数 @sekibunnteisuu

20年8月18日

@munekun_o こうおっしゃっていますが・・・
twitter.com/munekun_o/stat...

タグ:

posted at 23:33:43

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

User

» More...

Tag

» More...

Recent

Archive

» More...

タグの編集

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

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

送信中

送信に失敗しました

タグを編集しました