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 を見て下さい。
並び順 : 新→古 | 古→新

2021年06月07日(月)

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 あと、速さを気にするならば、

* グローバル変数を含む計算をしない。
* 型安定性を確保する。
* 無駄なメモリ割り当てを無くす。(例えばsoftmaxの類はpre-allocating outputにする)

など

docs.julialang.org/en/v1/manual/p...

のページにある指示に上から順に忠実に従うと楽です。 twitter.com/benkyouaho/sta...

タグ: Julia言語

posted at 00:01:44

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 たぶん、公式ドキュメントの

docs.julialang.org/en/v1/manual/p...
Performance Tips

はコードを書き始める前にざっとでいいので確認して置いた方がよくて、時間の節約になります。

迂闊にも私はこのページの存在にずっと気付かずに「最初に教えてくれよ」と後で思いました。

タグ: Julia言語

posted at 00:05:22

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語

❌sum(f.(a)) という書き方だと、f.(a)の段階で無駄なメモリ割り当てが発生して遅くなります。

メモリ割り当て的には以下がお得です。

⭕️sum(f, a)

⭕️sum(f(x) for x in a)

次はダメ

❌sum([f(x) for x in a])は[f(x) for x in a]で無駄なメモリ割り当てが発生する。 twitter.com/benkyouaho/sta...

タグ: Julia言語

posted at 00:09:51

非公開

タグ:

posted at xx:xx:xx

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語

うざいと思うのでこれ以後は引用リツイートせずに書きます。 twitter.com/benkyouaho/sta...

タグ: Julia言語

posted at 00:25:10

非公開

タグ:

posted at xx:xx:xx

ごまふあざらし(GomahuAzaras @MathSorcerer

21年6月7日

#Julia言語

この手の話を検証したいだろうという人の需要に応えてコードの断片を比較するツールを作成してみました.

共通のセットアップ
コードA,コードB
上記2つの断片を実行
結果Aと結果Bを出力する

というUIの構成になっています.(続く) twitter.com/genkuroki/stat... pic.twitter.com/cPp2GWiptE

タグ: Julia言語

posted at 00:28:01

ごまふあざらし(GomahuAzaras @MathSorcerer

21年6月7日

#Julia言語
ベンチマークの結果を比較したり code_llvm などの結果を比べるとかで遊べると思います.Dash.jl の example issue に奉納してるので動かしてもらえるとうれしーな.

github.com/plotly/Dash.jl...

続く

タグ: Julia言語

posted at 00:28:02

ごまふあざらし(GomahuAzaras @MathSorcerer

21年6月7日

#Julia言語

CSS のお勉強をするととりあえずBootstrap使ってみ?というので有名なBootstrapのコンポーネントをDashに組み込めるパッケージの練習がてら使ってみました.

頑張ると navbar とかも実装できます.

dash-bootstrap-components.opensource.faculty.ai pic.twitter.com/Q7N0SMxFQ7

タグ: Julia言語

posted at 00:28:03

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

21年6月7日

尾身会長はぶれてないよ。
ぶれているように見えるのは、

1.マスコミがチェリーピッキングをしている
2.イデオロギーという名前の色眼鏡でしか尾身会長を評価していない

おやすみなさい。

タグ:

posted at 00:32:33

ごまふあざらし(GomahuAzaras @MathSorcerer

21年6月7日

Julia 初めてです!

タグ:

posted at 00:34:40

ごまふあざらし(GomahuAzaras @MathSorcerer

21年6月7日

動作原理は Dash.jl で作ったUIから受け付けるテキストを
IOCapture という #Julia言語 パッケージの capture 関数を使ってテキストをコードとして評価しています.もっと言えば,Literate.jlが採用しているコードの評価方法を真似しているだけです.

タグ: Julia言語

posted at 00:40:37

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 配列Aについて

A[:, :, mask] のように書いた部分をすべて @ view(A[:, :, mask]) (@ の直後の空白は削除)と書くと、無駄なメモリ割り当てを防げて良い場合が多数あります。

大量にある場合には @ views でまとめて @ view をつけたのと同じにできる。

docs.julialang.org/en/v1/manual/p...

タグ: Julia言語

posted at 00:43:23

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 最近、Plots.jl を入れたり、更新すると、バグが残された古い GR.jl がインストールされてしまう状態になっていました。

それが原因でプロットが極小になってしまっているのだと思いました。

現在は直っているので、update すれば直ります。

github.com/NaGa-ImO/DLfro... pic.twitter.com/mluNydSp3a

タグ: Julia言語

posted at 00:44:59

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語

X = repeat(x, inner=(length(y))) # xの個々の要素を、yの要素数の回数分、繰り返す
Y = repeat(y, outer=(length(x))) # y全体を、xの要素数の回数分、繰り返す



X = [x for y in y, x in x]
Y = [y for y in y, x in x]

とも書けます。inner, outerとかややこしいことはいらない。

タグ: Julia言語

posted at 00:46:17

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語

❌zeros(size(x))

は型安定性に配慮して、

⭕️zero(x)

と書いた方がいいかも。

zerosを使うと、成分がFloat64になってしまう。

GPUはFloat32で効率がよくなる場合が多く、型安定性はそういう場合にも大事になる。

タグ: Julia言語

posted at 00:48:10

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語

github.com/JuliaStats/Log...
にある xlogy 函数を使う、もしくは微妙に不十分ですが

xlogy(x, y) = (z = x*log(y); iszero(x) ? zero(z) : z)

と定義して使えば

t*log(y + 1e-7)

のように書かずに済む可能性が高いと思いました。

タグ: Julia言語

posted at 00:50:18

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語

docs.julialang.org/en/v1/manual/p...
Avoid fields with abstract containers

で解説されているように

struct Foo{T}
d::Dict{T}
end

は型不安定性を招く(添付画像①)。

添付画像②のように書くべき。 pic.twitter.com/cr7KuORZPd

タグ: Julia言語

posted at 01:02:55

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 頻繁に見かけるのは

struct Foo{T}
a::AbstractArray{T}
end

の類。

struct Foo{T}
a::Vector{T}
end

struct Foo{T}
a::Matrix{T}
end

struct Foo{T, N}
a::AbstractArray{T, N}
end

なら大丈夫。

タグ: Julia言語

posted at 01:05:43

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 個人的な意見では、Julia入門者にとって、自前で型を適切に定義するのは難しい。みんな型不安定を引き起こして、計算速度を劣化させる。

その点が安心なのはNamedTuple.

NamedTupleは無名のstructのようなものとみなせ、コンストラクタが自動的に適切な型伝搬を保証してくれる。

タグ: Julia言語

posted at 01:08:22

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 教育目的のコードでは、

struct Foo{T, U}
a::T
b::U
end
foo = Foo(A, B)

の代わりに

foo = (a = A, b = B)

を使うことは検討するに値する。どちらもA, Bにfoo.a, foo.bでアクセスできる。

NamedTupleだと型不安定のための煩雑な記述をなくせる。

タグ: Julia言語

posted at 01:16:10

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 多重ディスパッチを使って有用なフレームワークを作りたい人にとってNamedTupleは不十分な道具なのですが、教育用のコードなら問題ないと思います。

型不安定性が「おまじない無し」で消せるメリットは大きい。

structに切り替えても、コード中のfoo.a, foo.bの部分はそのままで大丈夫。

タグ: Julia言語

posted at 01:16:11

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語

❌mutable structを好んで使う。

⭕️どうしても必要な場合以外にはstructを使い、murable structはほとんど使用しない。

mutableな内容を持つimmutableなコンテナ内の内容の成分は自由に変更できます。

タグ: Julia言語

posted at 01:26:40

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 structだとmutableなやつも作れてしまうので、多くの入門者がmutableの方を使ってしまう。

NamedTupleならimmutableが強制されるのでそういう問題が生じません。

immutableなNamedTupleで多くの場合に困らないことを学習してから、structの学習に進んだ方が多分うまく行きやすい。

タグ: Julia言語

posted at 01:29:41

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

21年6月7日

つまり動的言語の静的解析がめっちゃ優秀になって欲しい。

タグ:

posted at 01:37:08

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 immutableなstructやNamedTupleで添付画像のようなことをできるので、mutable structは滅多に必要にならないことがわかります。

immutableなQoo型オブジェクトqooの中身の辞書 qoo.a はmutableなので中身を自由に変えられます。

NamedTuple型のquxとVector型のqux.aについても同様。 pic.twitter.com/n2CMOJc0hc

タグ: Julia言語

posted at 01:38:26

Shuhei Kadowaki @kdwkshh

21年6月7日

@bicycle1885 めっちゃ分かります。

タグ:

posted at 01:39:56

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

21年6月7日

@kdwkshh やはりそうですよね。なので門脇さんには期待してます!

タグ:

posted at 01:45:35

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語

最後にJuliaクイズ:

f(x) = if x < 0; "negative"; elseif x == 0; "zero"; else; "positive"; end

は合法的なコードである。

問題:どこまでセミコロンを省略できるか?

現代的なプログラミング言語はセミコロンを略せるようになっていることが多い。 pic.twitter.com/5RKacqaH4z

タグ: Julia言語

posted at 01:53:38

Shuhei Kadowaki @kdwkshh

21年6月7日

@bicycle1885 え、嬉しいです!笑
めっちゃ些細なものですが、実は来週くらいに早速ちょっと実用的(?)なツールをアナウンスできるかもです。こんな感じの:
aviatesk.github.io/JET.jl/dev/gen...

タグ:

posted at 02:00:26

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 Juliaは超巨大企業の支援を得ながら作られたプログラミング言語ではなく、大学院生達が草の根で作り始めて、その後十代の少年を含む沢山の人たちが開発に関わることによってできたプログラミング言語です。

おそらく、そのおかげで、自由にやりたいことができた。

タグ: Julia言語

posted at 02:02:30

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 超巨大企業の支援で開発されていたら「obj.method(x, y)のスタイル」をサポートすることを強制されて、現在のJuliaは存在しなかった可能性が高いと思う。

だから、伝統的なスタイルを過学習した人には難しく見えるものになった。

過学習がなければ難解に見えなくなる。

タグ: Julia言語

posted at 02:02:31

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 Int64とFloat64を明瞭に区別して、Int64とFloat64のみに対応しているコードを書くだけで、型安定性が確保された爆速の数値計算が可能になる場合が結構あります。

それを知っている人は「多重ディスパッチって何?知らん」という状態でも十分に有効にJuliaを使えていると思う。

タグ: Julia言語

posted at 02:07:37

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語c「obj.method(x, y)のスタイル」を過学習してしまった人は「Juliaはクラスがないけど、どうやってOOPするの?」という方向に行ってしまって、おかしなことになりやすいと思う。

Juliaのdiscourseでは定期的にそういう人が暴れている。

タグ: Julia言語c

posted at 02:10:56

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 ポケットの中にいつも入れている財布をべつのものに変えられなくても(immutableであっても)、財布の中に入れるお金の量や組み合わせは自由に変えられます。

これと同じ感じ。

複数の財布をとっかえひっかえしたい人のみがmutable structを使う。普通はそういうことはしない。 twitter.com/genkuroki/stat...

タグ: Julia言語

posted at 02:17:22

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語

(a = 1, b = 2.0, c = "three")

の型は

NamedTuple{(:a, :b, :c), Tuple{Int64, Float64, String}}

になり、1, 2.0, "three" それぞれの型 Int64, Float64, String の情報が含まれていて、コンパイラはこれを利用して最適化を実行してくれます。

NamedTupleならこれが自動的。 twitter.com/genkuroki/stat... pic.twitter.com/LS2f8vU08j

タグ: Julia言語

posted at 02:22:50

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 言い忘れたことの追加

大学でJuliaの使い方を学生に教える仕事をすると仮定する。

structについて教えると、「structの定義を変えたら、変えられないというエラーが出ました」と言われるに決まっている。

これを数十~数百人に言われると死にそう。

NamedTupleですませれば大丈夫。

タグ: Julia言語

posted at 02:27:05

黒木玄 Gen Kuroki @genkuroki

21年6月7日

大学でJuliaの使い方を学生に教える仕事をすると仮定した途端に、NamedTupleが神に見える(笑)

タグ:

posted at 02:29:15

非公開

タグ:

posted at xx:xx:xx

大堀龍一 (Ryuichi OHORI) @__DaLong

21年6月7日

Julia どんなもんかチョットヤッテミタイ twitter.com/bicycle1885/st...

タグ:

posted at 03:25:35

岩さん.py @iwayama_y

21年6月7日

R言語は肌に合わないので、次はJuliaを学習することを決意しました

タグ:

posted at 04:10:07

勿忘てるる @Weekender_FE

21年6月7日

pythonとJulia、ちゃんとやりたい気持ちはあるのでいろいろ落ち着いたらやっていきたい

タグ:

posted at 04:43:11

The Algorithms @The_Algorithms

21年6月7日

#github #opensource #julia #julialang #coding

We're pleased to announce that we have added the Julia language to our repositories! Fork the repository at GitHub, make a pull request, and we'll check it out!

Let us reach 100 stars! ⭐️

github.com/TheAlgorithms/...

タグ: coding github julia julialang opensource

posted at 05:38:39

ちくわ @pavlov469

21年6月7日

強くなれる 理由を知った
Golang Rust Julia

タグ:

posted at 05:47:31

Diego Javier Zea @diegojavierzea

21年6月7日

Razones para hacer Análisis de Datos con Julia:

6 - ¡#JuliaLang hace super fácil calcular cosas en paralelo! En mí scripting diario, reemplace totalmente la combinación #bash y @GnuParallel por Julia. Julia además ofrece multithreading de última generación como @golang. pic.twitter.com/u8VxyH7aIY

タグ: bash

posted at 07:27:21

Diego Javier Zea @diegojavierzea

21年6月7日

Si quieren saber más, pueden anotarse al curso online de "Análisis de Datos con Julia" en español 🇪🇸 que estaremos otorgando con @Elin_n_n (organizado por la @a2b2c) desde cualquier lugar del mundo 🌎

👩‍💻👨‍💻Inscripción: bit.ly/a2b2c-cursos-j...

タグ:

posted at 07:27:22

Diego Javier Zea @diegojavierzea

21年6月7日

Análisis de Datos con Julia

Parte I: Introducción a #JuliaLang
+ Aplicación a la #bioinformática
+ Cálculo en paralelo

Parte II: #DataScience con Julia
+ Análisis estadístico
+ Introducción a #MachineLearning
+ #NeuralNetworks

🌎🇪🇸

タグ: bioinform DataScience JuliaLang MachineLearning NeuralNetworks

posted at 07:27:22

お台場計算尺 @m1StZWYMnSOJV7R

21年6月7日

#技書博 向け Julia 本 v2 入稿。これで本が出せる!
怒濤のサーベイ&執筆だった…本業を圧迫したかな…と思ったが本業に資するサーベイは結局、本業だ。
sliderule.booth.pm/items/1284669
ていうか DataFrames.jl が後方互換捨て過ぎ。マジで。2年前 v1 書いた時はβ版ではあったが。

タグ: 技書博

posted at 08:51:34

柳本和春 (Kazuharu Yanag @kazuyanagimotoJ

21年6月7日

VScodeのjuliaデバッガーは、integratedTerminalを使っていないせいで、デバッガーの起動時に”< input.txt”みたいなargsを取れないのか。

デバッガー起動のたびにいちいち、input.txtの中身をコピペしてたら面倒で仕方ないんだけど。

タグ:

posted at 08:59:06

Tyler Russell @tyler_russell52

21年6月7日

Simple harmonic oscillators are studied a ton in any college physics class, but many phenomenon are inherently non-linear. Shown below is the phase space evolution for several initial conditions of the Van der Pol oscillator. pic.twitter.com/PvtGISgT79

タグ:

posted at 10:00:37

Arturo Erdély @ArturoErdely

21年6月7日

Elaboración propia de gráficas mediante el lenguaje de programación #JuliaLang y con datos de: www.gob.mx/salud/document... [fin de hilo]

タグ: JuliaLang

posted at 10:57:35

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

21年6月7日

尾身会長の発言を、マスコミがイデオロギーという虫眼鏡でチェリーピッキングをしている事例。

twitter.com/atsushimiyahar...

タグ:

posted at 11:00:09

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 をどのような仕事に使っているか

生物学者。多くの最適化を伴う常微分方程式のモデルの計算にPython+Numba+SciPyでは300msかかっていた。NumbaはLLVMでこんぱいるされ、SciPyはFortranを使っていることに注意。Juliaを使ったら5msで計算できるようになり、続く

discourse.julialang.org/t/what-do-you-...

タグ: Julia言語

posted at 11:55:20

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 をどのような仕事に使っているか

続き、コードもクリアになった。

すでに300msで計算できていたことを5msに高速化して何がうれしいのか分からない人もいるかもしれないが、5msならば、10⁶回モデルを回して、パラメータの誤差を評価して、続く

discourse.julialang.org/t/what-do-you-...

300msが5ms

タグ: Julia言語

posted at 11:55:21

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 をどのような仕事に使っているか

続き、モデルが機能する理由を研究できる。

このように、Juliaを使うことによって、まったく新しいタイプの分析を行うことが可能になった。

以上は生物学者の事例。

discourse.julialang.org/t/what-do-you-...

タグ: Julia言語

posted at 11:55:21

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 ベンチマークテストで300msが5msに速くなっただけでは、うれしさは大してない。0.3秒待つか、0.005秒待つかの違いしかない。

しかし、1回あたり0.005秒であれば、100万回の実行が5000秒ですみ、1時間半もかからない。1回あたり0.3秒だとその60倍になり、計算だけで数日かかってしまう。

タグ: Julia言語

posted at 12:07:32

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 によって、新しいことをできるようになったという話は他にもある。

NASAの人は、Juliaによって宇宙機の分離のシミュレーションが1万5千倍高速化されて、60ms弱で済むようになったと言っている。

その高速化によって、パラメータの摂動の様子を容易に視覚化できるようになった。

タグ: Julia言語

posted at 12:07:33

スドー @stdaux

21年6月7日

幼児と接触することにより、悪役がよく口にする「もう遊びは終わりだ」という台詞が「しんどいからそろそろ寝てくれ」という意味だとわかってきた

タグ:

posted at 12:08:54

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 NumbaによるJITによるコンパイル結果やSciPyで使われているFortranによるコンパイル結果はクソ速いです。Juliaと同じくらい速い。

しかし、それらをPythonで張り合わせて使うと遅くなってしまうことがある。Pythonにはグルー言語(糊言語)としてこのような欠点があります。続く twitter.com/genkuroki/stat...

タグ: Julia言語

posted at 12:17:10

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 続き。Juliaにはそのような欠点はありません。複数のパッケージを組み合わせると、その組み合わせごとに最適化されたネイティブコードにjust-in-timeでコンパイルされて実行される。

詳しくは以下のリンク先を参照。

www.stochasticlifestyle.com/why-numba-and-...

タグ: Julia言語

posted at 12:17:10

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語

Julia以前には、C, C++, Fortranで書かれた爆速ライブラリ達を、ユーザー側に優しいプログラミング言語で張り合わせて使うときに、糊として使われる言語は速くなくてもよいと考えられていました。

現在ではその感覚は技術的に誤りであったと言ってよいでしょう。

タグ: Julia言語

posted at 12:17:12

黒木玄 Gen Kuroki @genkuroki

21年6月7日

ライブラリ単体でのベンチマークテストの成績が良くても、複数のライブラリを組み合わせて使う実践的な状況では無意味な場合があるということ。

#Julia言語 自身についても、単純計算のマイクロベンチマークの成績は、Juliaの真の強さを知るために不十分であることはもっと強調されてしかるべき。

タグ: Julia言語

posted at 12:24:15

kitano@推しのサメ @kitano_blog

21年6月7日

基底分布を正規分布とするDirichlet過程からのサンプル.
#Julia言語 pic.twitter.com/dx8aJbud5I

タグ: Julia言語

posted at 12:47:23

Akinori Ito @akinori_ito

21年6月7日

プログラマの生産性の話でちょっとググってみたところ、(関係ないが)Star performerという概念を発見。例として任天堂の宮本氏が挙げられている onlinelibrary.wiley.com/doi/pdf/10.111...

タグ:

posted at 12:48:44

くろもあくりえいと @kuromoa

21年6月7日

高校で、先生に
「中学までに習ってきたことは忘れてください」って言われた、うちの子の
「今まで頑張って勉強してきたことは、何だったの?」という絶望、9年間が無駄だったのかというショックを知って欲しい。 twitter.com/vecchio_ciao/s...

タグ:

posted at 14:47:42

黒木玄 Gen Kuroki @genkuroki

21年6月7日

疲れた。コーヒータイム。

タグ:

posted at 14:49:31

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語

名前付きタプルの導入がどういう人達に大歓迎されていたか?

Juliaを学生に教える気が満々の人達が大歓迎していた。

discourse.julialang.org/t/is-a-simple-...
名前付きタプルを使って不要な型注釈を無くす単純な初心者スタイルは受け入れ可能ですか?

Yes! Yes! Yes!

タグ: Julia言語

posted at 14:55:49

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 structで型安定なコードを書こうとすると、

struct Foo{A, B, C}
a::A
b::B
c::C
end
foo = Foo(1, 2.0, "three")

のように書く必要があるのですが、名前付きタプルなら

foo = (a = 1, b = 2.0, c = "three")

で済みます。

トレードオフの問題。後者の方が初心者向き。

タグ: Julia言語

posted at 15:01:34

Ari Katz @akatzzzzz

21年6月7日

@chrlaf @cHHillee @ezyang User defined custom scalar and array types even on the GPU. Fast scalar code, linear algebra codegen, symbolic code optimization, differentiable physics simulators, kernel programming (cuda, amd etc codegen) in user space, fast mixed mode higher order differentiation etc

タグ:

posted at 15:36:38

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 さらにstructのデフォルト値を設定しようとすると、

Base.@ kwdef struct Foo{A, B, C}
a::A = 1
b::B = 2.0
c::C = "three"
end
foo = Foo()

「Foo{A, B, C}のA, B, Cって何?」
「structの定義を変えたらエラー」

以外に

「Base.@ kwdef?」

という疑問が生まれる。

タグ: Julia言語

posted at 15:39:40

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語

discourse.julialang.org/t/is-a-simple-...
【これまでコーディングをしたことがない人(そして最小限の労力で正しいアルゴリズムを実装したいだけの人)にとって、構文のノイズは大きな問題】

Juliaなら、構文ノイズの最小化もできるし、複雑な多重ディスパッチで柔軟なフレームワークも構築できる。

タグ: Julia言語

posted at 15:41:11

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 構文ノイズを最小化したい人は

foo = (a = 1, b = 2.0, c = "three")

を使い、多重ディスパッチも利用したければ

Base.@ kwdef struct Foo{A, B, C}
a::A = 1
b::B = 2.0
c::C = "three"
end
foo = Foo()

などを使う。どちらでも、foo.a, foo.b, foo.c を使える。

タグ: Julia言語

posted at 15:44:14

Ari Katz @akatzzzzz

21年6月7日

@chrlaf @cHHillee @ezyang Fast custom graph data structures for GNNs, faster hybrid models (symbolic + sub symbolic , generic MCTS even ensemblef on GPU written in julia) etc Python definitely inhibiting deep learning from going in novel directions because too much path dependence on optimized patterns

タグ:

posted at 15:44:52

Ari Katz @akatzzzzz

21年6月7日

@chrlaf @cHHillee @ezyang Sapir-whorf style. Also having FAANG level resources and this bigger community + such composability and flexibility in one language, (no c, cuda, cpp). Combinatorial explosion of possibilities nobody can predict. Also great for pedagogy

タグ:

posted at 15:51:51

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 上のどちらもimmutableなので、値が1のfoo.aの値をfoo.a = 999で変えることはできません、foo = (a = 999, foo.b, foo.c) とする必要がある。これがひどい制限だと感じるのは誤解で、

foo = (a = fill(1), b = [1.0, 2.0])

なら、

foo.a[] = 999
push!(foo.b, 3.0)

とかできます。

タグ: Julia言語

posted at 15:58:58

名取宏(なとろむ) @NATROM

21年6月7日

「ファイザーの治験データ」ではないです。ChAdOx1 nCoV-19 vaccineはファイザーではなくアストラゼネカ製のワクチンですね。 twitter.com/Isseki3/status...

タグ:

posted at 16:23:04

名取宏(なとろむ) @NATROM

21年6月7日

ファイザー製ワクチンの感染予防効果は複数の観察研究で確認されています。たとえば[ www.nejm.org/doi/full/10.10... ]では感染予防効果は92%(95%C.I. 88~95)。有症状感染は94%(95%C.I. 87~98)

タグ:

posted at 16:23:44

名取宏(なとろむ) @NATROM

21年6月7日

別の報告。ファイザー製ワクチンの有症状感染の予防効果は97%(95%C.I. 94~99)無症候性感染の予防効果は86%(95%C.I. 69~93)。
[ jamanetwork.com/journals/jama/... ]。

タグ:

posted at 16:23:59

名取宏(なとろむ) @NATROM

21年6月7日

別の報告。ファイザー製ワクチンの感染予防効果は95.3%(95%C.I. 94.9~95.7)無症候性感染の予防効果は91.5%(95%C.I. 90.7~92.2)。[ www.thelancet.com/journals/lance... ]。

タグ:

posted at 16:24:13

名取宏(なとろむ) @NATROM

21年6月7日

まとめるとファイザー製ワクチンには発症予防効果や重要化予防効果だけではなく、感染予防効果もあり、その有効率は90~95%ぐらいのようです。それぞれ研究の限界や感染予防効果の定義の詳細などは本文を参照してください。

タグ:

posted at 16:24:39

ごまふあざらし(GomahuAzaras @MathSorcerer

21年6月7日

ANSI エスケープされた文字(colored text) が入ってるものをHTMLで表示させたい. ピエーーん

タグ:

posted at 17:33:32

ごまふあざらし(GomahuAzaras @MathSorcerer

21年6月7日

JuliaのREPLやIJuliaはIOContextでやってるんだけどWebフロントで上手くさせたい。Reactでコンポーネント自作するかぁ。。。

タグ:

posted at 17:35:11

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@wasisama #Julia言語 おそらく、そのコードだと正常に動かないと思います。

Meta.parseは普通は使いません。

discourse.julialang.org/t/how-to-warn-...
How to warn new users away from metaprogramming

添付画像①の1行で定義された函数equalrowsを使えばやりたいことをできると思います。

github.com/genkuroki/publ... pic.twitter.com/X1CLvyB7U8

タグ: Julia言語

posted at 17:40:43

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@wasisama #Julia言語 ポイントは

foo.a



getproperty(foo, :a)

と等価なことです。

これを知っていれば、通常は避けるべきだとされているMeta.parseの使用を排除できます。

Meta.parseはMeta.parseでしかできないこと以外には使わない。

タグ: Julia言語

posted at 17:44:01

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@aeba_chan @avxt @btime #Julia言語 グローバル変数を含む計算が遅くなることはすでに説明しました。それが原因でしょう。

あと、@ btime の使い方が変です。@ btime f($a) の形式で使いましょう。

関係ない話題ですが、添付画像の件に受けました。凍結されていたり、10年以上使われてなかったり! pic.twitter.com/XKZHxwfhAE

タグ: Julia言語

posted at 17:56:01

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@aeba_chan @avxt @btime #Julia言語 例えば、

n = 100
bar = randn(n,n)
foo = zeros(n,n)

for i = 2:n-1
for j = 2:n-1
foo[i, j] = (1 / 4) * ( bar[i,j-1]+bar[i, j+1]+bar[i-1, j]+bar[i+1, j])
end
end

において、n, foo, bar はグローバル変数。これは非常に遅くなる。

タグ: Julia言語

posted at 18:01:08

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@aeba_chan @avxt @btime n = 100
bar = randn(n,n)
foo = zeros(n,n)

function foo()
for i = 2:n-1
for j = 2:n-1
foo[i, j] = (1 / 4) * ( bar[i,j-1]+bar[i, j+1]+bar[i-1, j]+bar[i+1, j])
end
end
end

としても、foo()内のn, foo, barはグローバル変数です。

グローバル変数は函数に引数として渡すべきです。

タグ:

posted at 18:04:10

ワシ・ュバルツシルト半径 @wasisama

21年6月7日

@genkuroki 確かに、
functionにすると動かなかったすね。
出直します!!

タグ:

posted at 18:05:36

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@aeba_chan @avxt @btime グローバル変数を函数内でナマで使うことにはグローバル変数の型が固定されていれば害はないです。

しかし、Juliaでは利便性にためにグローバル変数の型は不定なのでまずい。

constにすると型が固定されますが、それだと利便性が大きく損なわれます。

結論:グローバル変数は函数に引数として渡す。

タグ:

posted at 18:07:11

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@aeba_chan @avxt @btime そして、@ btime を使うときには、グローバル変数 foo, bar (多くの場合に配列になる)を函数に

❌@ btime f(foo, bar)

ではなく、

⭕️@ btime f($foo, $ bar)

と $ をつけるべきです。その違いは比較すればわかる。

タグ:

posted at 18:09:59

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@aeba_chan @avxt @btime あと、Julia界では配列fooの中身を書き換える函数の名前には f!(foo) と ! をつける習慣になっています。

docs.julialang.org/en/v1/manual/p...
Performance Tips

だけではなく、

docs.julialang.org/en/v1/manual/s...
Style Guide

も見ておくと時間の節約になります。

タグ:

posted at 18:16:43

kakehuton @shikihuton

21年6月7日

Julia on Google Colabで複数パッケージ追加すると毎回落ちるんだが、解決方法はないのだろうか?
!julia -e 'using Pkg; pkg"add IJulia; add DifferentialEquations; precompile"'としても、runtime type変えた後にusing Pkgでもうまくいかない。。。

タグ:

posted at 18:19:08

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@wasisama Meta.parseを使っているのを発見されてしまうと、多くの場合に「この人は誤解している」と思われてしまうので要注意です。

メタプログラミングでもMeta.parseは普通使いません。文字列のコードではなく、Expr型オブジェクトを直接操作するコードを書きます。

タグ:

posted at 18:23:28

ワシ・ュバルツシルト半径 @wasisama

21年6月7日

@genkuroki なるほど
メタプログラミングのダニングクルーガ効果グラフ
少し下り始めました!

タグ:

posted at 18:30:28

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@wasisama Expr型オブジェクトと文字列のコードの関係は、文字列のコードを :( ) で囲んだ結果を dump すればわかります(添付画像①)。しかし、表示のされ方が見難いので、

using MetaUtils

を使って、添付画像②のように表示させることをお勧めします。

実は自作パッケージ😊

github.com/genkuroki/Meta... pic.twitter.com/KV9uNSIvOM

タグ:

posted at 18:44:05

ワシ・ュバルツシルト半径 @wasisama

21年6月7日

こういう使い方ができることにめちゃくちゃ感動してる。
#julialang pic.twitter.com/IivpDvk1pT

タグ: julialang

posted at 18:46:51

アカシア @Acacia__bump

21年6月7日

今年の数学の先生が、「受験勉強したいなら予備校に行けばいい」というスタンスなのでとても自由な授業をされています。
おかげで今日の授業は
2階線形微分方程式→マクローリン展開→オイラーの公式→単振動の一般解→RLC共振回路
というなんとも濃密な50分でした
高校の授業とは思えない(褒め言葉)

タグ:

posted at 19:39:16

Teamil9 @teamil9627

21年6月7日

Juliaの可変長関数便利すぎん…?

タグ:

posted at 19:48:39

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@aeba_chan @avxt @btime スクショではなく、コピー&ペースト可能ある状態でコードを公開してください。

これはめちゃくちゃ大事。

スクショはなくても、ソースコードのリポジトリにリンクがある方が勝る。

タグ:

posted at 19:57:59

セルフ執事 @SF_yomi

21年6月7日

ようやくとVBAから開放されそうなのだけれども、その間にJulia もRust もすっかりメジャーになってしまったのだわ。

タグ:

posted at 20:30:07

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@aeba_chan @avxt @btime #Julia言語

なるほど、これは面白いネタでした。

面白い話題の提供どうもありがとうございます!

まず、

Threads.nthreads()

を実行して 1 以外の値になっているかを確認してください。1 だとスレッド並列化が効かなくなります。続く

docs.julialang.org/en/v1/manual/m...

タグ: Julia言語

posted at 20:49:08

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@aeba_chan @avxt @btime #Julia言語 以下のリンク先のコードの @ avxt = @ tturboはピンポイントで最もまずい使い方になっています。

① 配列a[i, j]を扱うループでは j を扱うループを内側にしてはいけない。

② jを扱うループが内側になっているとき、それに @ tturbo を付けると遅くなる!

twitter.com/aeba_chan/stat...

タグ: Julia言語

posted at 20:51:58

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@aeba_chan @avxt @btime #Julia言語 添付画像中で最も遅くなっているやつがそれです。

各函数の定義はソースコードを見てください。

github.com/genkuroki/publ... pic.twitter.com/Z3GhffBq92

タグ: Julia言語

posted at 20:57:00

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@aeba_chan @avxt @btime #Julia言語 繰り返し紹介している「読むと時間の節約になる文書」にも、ループの内側を何にするべきであるかに関する解説があります。

マジでこの文書を最初に読んでおけば、トラブってしまう場合が大幅に減ります。

docs.julialang.org/en/v1/manual/p...
Access arrays in memory order, along columns

タグ: Julia言語

posted at 21:00:20

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@aeba_chan @avxt @btime #Julia言語 連続したメモリに続けてアクセスするべきであるとか、無駄なメモリアロケーションを無くさなければいけない、というようなことはJuliaと無関係に高速計算では必要なことなので、読んでおけばJuliaを使わなくても時間の節約になる可能性があります。

docs.julialang.org/en/v1/manual/p...

タグ: Julia言語

posted at 21:02:10

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@aeba_chan @avxt @btime コードの閲覧の件、お手数かけました!
github.com/aeba2/playgrou...

しかし、GitHubでもJupyter notebookを読めます。

どうしてもダメならば

nbviewer.jupyter.org

にnotebookのparmalink URLを貼り付ければ読めます。



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

タグ:

posted at 21:07:50

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@aeba_chan @avxt @btime しかし、すでに答えが出ており、結論は、「Performance Tipsの指示に従ってなかったことが原因で、運悪くピンポイントで遅くなる場合を選択してしまっていた」です。

タグ:

posted at 21:09:26

黒木玄 Gen Kuroki @genkuroki

21年6月7日

@wasisama #JuliaLang

もともと &(a, b, c, d) などが定義されているのですが、直接アクセスできず、Base.:&(a, b, c, d) のように書く必要がある。

.&(a, b, c, d) とブロードキャストのシンタックスを使うと、結果的に、Base.:&(a, b, c, d) と同じコンパイル結果が得られます。

github.com/genkuroki/publ... pic.twitter.com/VW2r5VmMNv

タグ: JuliaLang

posted at 21:36:56

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 では任意の文字列を変数などの名前として使える。例えば

var"X + Y" = X + Y pic.twitter.com/0mwuCRH8wt

タグ: Julia言語

posted at 21:48:27

msugai @msugai

21年6月7日

ジェイコム株誤発注事件の直接原因は、入力フォーム記入ミスと警告無視で、掛け算順序とは何の関係もないんですよね。
むしろ、「左や上に入力する数はこの意味だ」って思い込んでたら事故を起こすって事例ではありますが twitter.com/yamazaksv2/sta...

タグ:

posted at 22:00:14

最多情報局 @tyomateee

21年6月7日

バブルマシンガンの威力が凄まじいと話題に pic.twitter.com/dZwKELojwJ

タグ:

posted at 22:00:42

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#Julia言語 DifferentialEquations.jl のユーザーは必読

discourse.julialang.org/t/psa-how-to-h...
PSA: How to help yourself debug differential equation solving issues

タグ: Julia言語

posted at 22:09:29

tsujimotter 日曜数学者 @tsujimotter

21年6月7日

数学の人がよく使う方言「何が嬉しいかというと・・・」って、英語で言うことあるんだろうか?

タグ:

posted at 22:19:19

tsujimotter 日曜数学者 @tsujimotter

21年6月7日

(ゆるぼ)知っている人いたら教えてください。

タグ:

posted at 22:19:52

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

21年6月7日

ワシも褒めて伸ばすJuliaコーチやろ。すごい!完璧に多重ディスパッチできてますね!あと3回多重ディスパッチしてみましょう!

タグ:

posted at 22:45:41

ごまふあざらし(GomahuAzaras @MathSorcerer

21年6月7日

ルベーグ積分した後,その視点から
通常の微積分を(広義積分含めて)計算する演習書欲しい.
複素関数論や整数論系の部分での極限のテクニックとか(・ω・`)

タグ:

posted at 22:47:47

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#数楽 #Julia言語

私の積分論のノートは、Lebesgue積分論を認めて使うと比較的易しく証明できる結果を認めて(私が学生時代に講義を聴いた猪狩さんの本を引用して)、ゼータ函数の周辺に出て来る積分計算をしまくる構成になっています。

nbviewer.jupyter.org/github/genkuro... twitter.com/mathsorcerer/s... pic.twitter.com/RDyKx38dzj

タグ: Julia言語 数楽

posted at 22:57:26

ごまふあざらし(GomahuAzaras @MathSorcerer

21年6月7日

猪狩さんの本は実数の話からスタートして学ぶ道具を揃えてくれるのが親切ですね.定理のステートメントは読者が正確に補う必要がありますが・・・.なんにせよ良い本 twitter.com/genkuroki/stat...

タグ:

posted at 22:59:49

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#数楽 #Julia言語

複素冪級数のちょっと進んだ話題の取り扱いについては

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

を参照。数学科の卒業生であっても「聞いたことがない!」と言いそうなネタが散りばめられている。 twitter.com/MathSorcerer/s... pic.twitter.com/Uc1Y8Cio6w

タグ: Julia言語 数楽

posted at 23:02:07

ごまふあざらし(GomahuAzaras @MathSorcerer

21年6月7日

知らないことが多くて泣きそう(;ω;`)
でもノートがあるのはありがたや twitter.com/genkuroki/stat...

タグ:

posted at 23:03:43

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#数楽 「数値計算を使った証明」の例

f(x) = x - x² + x⁴ - x⁸ + x¹⁶ - x³² + … について f(0.995) を十分正確に計算して f(0.995) > 0.5 であることを示せれば、0 < x < 1 を満たす x が 1 に近付くとき f(x) が 0.5 に収束しないことの証明が得られます!

nbviewer.jupyter.org/github/genkuro... pic.twitter.com/q4cvjgo6go

タグ: 数楽

posted at 23:13:32

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#数楽 数論ではタウバー型定理が必須なのですが、私による(雑な)解説が

genkuroki.github.io/documents/2016...

にあります。 pic.twitter.com/EjPDeEg1ne

タグ: 数楽

posted at 23:16:36

ごまふあざらし(GomahuAzaras @MathSorcerer

21年6月7日

大学がその卒業生に満足するかを聞くよりも,

将来家庭を持って生まれた子供が成長し十分入学できる素質思ってたなら同じ学科,同じ研究室に行かせたいかというアンケート取った方が良い意見が聞けるんじゃないかな?

タグ:

posted at 23:16:41

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#数楽 f(x) = x - x² + x⁴ - x⁸ + x¹⁶ - x³² + … で 0 < x < 1, x → 1 とする話もタウバー型定理の応用の1つとして解説されています。

genkuroki.github.io/documents/2016... pic.twitter.com/gqySKxIApx

タグ: 数楽

posted at 23:19:49

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#数楽 私による解説は、抽象的一般論に偏らずに、必ず具体的な計算例を入れています。#Julia言語 で数値計算してグラフをプロットしている場合もある。

具体的な計算(手計算とコンピュータによる計算の両方)ができなくなるような不健全な勉強の仕方から逃れたい人にはよいと思います。

タグ: Julia言語 数楽

posted at 23:23:50

むううみん @muuumin20

21年6月7日

これは会社も同じだと思う。自分の後輩や子供に入社を勧められる会社だろうか? twitter.com/MathSorcerer/s...

タグ:

posted at 23:30:45

黒木玄 Gen Kuroki @genkuroki

21年6月7日

#数楽 積分計算についてはこちらも参照。

特にガンマ函数の理解にはフルヴィッツのゼータ函数が必須であることは強く強く強調されてしかるべき。

統計で必要なディガンマ函数やトリガンマ函数が、ガンマ函数とフルヴィッツのゼータ函数の関係の証明に自然に出て来る。

nbviewer.jupyter.org/github/genkuro... twitter.com/genkuroki/stat... pic.twitter.com/VL0GekbiIp

タグ: 数楽

posted at 23:31:27

むううみん @muuumin20

21年6月7日

もう少し言うと、その業界の多くの人が、こぞって自分の子供に跡を継がせたがる職業は良い(あるいはオイシイ)職業なんだろうなと思う。 twitter.com/muuumin20/stat...

タグ:

posted at 23:34:07

高梨陣平 @jingbay

21年6月7日

まぁ、Youtubeはblockchainで著作権管理だぁ!とかバカなことはやらないよね。彼らはDMCAで一斉に削除するだけ。

日本は著作権で死ぬのを何回繰り返せば満足するのかなぁ。著作権保護ばかり考えてユーザの利便性まで殺してしまう日本。何回、繰り返すのだろう。

タグ:

posted at 23:39:24

Huda Nassar @nassarhuda

21年6月7日

I almost missed this: the 2021 stackoverflow developer survey is open till June 15.

In 2020, #julialang got 0.9% on the "most commonly used programming language" Q -- idk, I feel like this should be a little more (insights.stackoverflow.com/survey/2020#te...)

Survey link: stackoverflow.blog/2021/05/25/the...

タグ: julialang

posted at 23:57:33

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

User

» More...

Tag

» More...

Recent

Archive

» More...

タグの編集

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

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

送信中

送信に失敗しました

タグを編集しました