眠気.jl

投稿=不定期

SciPyJapan2019振り返り(2/2)

動画公開されました!

www.youtube.com

なので,あんまり書くことないです...
動画見たほうが絶対良いです... 順番に並べて置きましたので,どうぞ

初日のビデオ

Tensorflow, Josh Gordon, Google

youtu.be

Advanced Numpy, Juan Nunuz-Iglesias, Monash University

youtu.be

Keynote: f(x) = a + bi Your (x) Future, f, Depends on Atoms (Real) and Bits (Imaginary: Cyber) Mitsunobu Koshiba, President and CEO, JSR

youtu.be

Apache Arrow, Kouhei Sutou, ClearCode Inc.

youtu.be

Chainer: A Deep Learning Framework for Fast Research and Applications, Crissman Loomis, Preferred Networks

youtu.be

Scaling your Python interactive applications with Jupyter, Luciano Resende, IBM CODAIT/Jupyter Contributor

youtu.be

CuPy: A NumPy-Compatible Library for High Performance Computing with GPU, Masayuki Takagi, Preferred Networks

youtu.be

RAPIDS: GPU Accelerated Data Science, Akira Naruse, NVIDIA

youtu.be

2日目のビデオ

Intro to Visualization, Manabu Terada, PythonED

youtu.be

Advanced Machine Learning, Alexandre Chabot-Lerclerc, Enthought

youtu.be

Keynote: Eric Jones, CEO, Enthought

youtu.be

Next-Level Art: Becoming More Creative with AI, Max Franzel, Qosmo

youtu.be

Production ML Pipelines with TensorFlow, Robert Crowe, Google

youtu.be

Evolution of the Enthought Platform, Mark Dickinson, Enthought

youtu.be

Optuna: A Define-by-Run Hyperparameter Optimization Framework, Takuya Akiba, Shotaro Sano, Toshihiko Yanase, Takeru Ohta and Masanori Koyama, Preferred Networks

youtu.be

SEM Image Noise Reduction Shinji Kobayashi, TEL

youtu.be

daskperiment, Masaaki Horikoshi, Arise Analytics

youtu.be

Progression of Zero Programming Skilled Scientist to Python User, Takayuki Miki, Tokyo Institute of Technology

youtu.be

Re-run, Repeat, Reproduce, Reuse, Replicate: Transforming Code into Scientific Contributions, Fabien Benureau, Okinawa IST

youtu.be

Let's Enjoy the Python World Using Network Analysis ~ Overlooking the reference relationship of PEPs with NetworkX, Tomoko Furuki

youtu.be

Reproducibility and Deployment of Scientific Code: A Discussion about the SciPy Stack and how edm Helps, Didrik Pinte, Enthought

youtu.be

感想等

1人で参加してたので,自明に端っこでガツガツぼっち飯をしていたのですが
OISTのFabienさんが話しかけてくださりシミュレーション辛いよねぇ〜,エンジニア的に良いコードとシミュレーションの目的に良いコード少し違うよねぇ〜的なお話をしました
楽しかったです

戦利品

オライリー社さんが配っていた「エレガントなSciPy」
じゃんけんで獲得した「かんたんPython

f:id:julialangisthebestlang:20190605000458j:plain
戦利品

terraform0.12.0へのアップデート(tfenv)

準備

tfenv(terraformのバージョン管理ツール)
を入れておく

brew install tfenv

tfenvの使い方

インストール済のバージョン一覧を見る

tfenv list
> 0.11.4

インストール可能なバージョン一覧を見る

tfenv list-remote
>
0.12.0                                                       
0.12.0-rc1                                                   
0.12.0-beta2                                                 
0.12.0-beta1                                                 
0.12.0                                                       
0.11.14                                                      
0.11.13

使うterraformのバージョンを切り替える

tfenv use [使いたいバージョン]

.terraform-versionのterraformをインストールする

tfenv install

tfenvでterraformアップデート

なので,次のようにしてterraformをアップデートする

tfenv install 0.12.0
tfenv use 0.12.0
tfenv list #確認
echo 0.12.0 > .terraform-version
#.terraform-versionに0.12.0と書き込む
#この階層でtfenv installすればバージョンが揃えられる(pipfile的な)

参考

github.com

Ubuntu18.04へのWolframEngine導入

やってみる

インストール

Free Wolfram Engine for Developers
に行ってLinux用をダウンロードする
Thank You for Downloading the Wolfram Engine
に画面遷移するので,アカウントが無ければGet your licenseをクリックしてダウンロード中に作る(氏名,メルアド,パスワードのみ)
あとは,

:~
$ cd Downloads
: ~/Downloads
$ sudo bash WolframEngine_12.0.0_LINUX.sh

インストールしたい場所, PATH通したい場所を聞かれる
それぞれデフォルトの/usr/local/Wolfram/WolframEngine/12.0, /usr/local/binで問題なければEnter連打で問題ない, 変えたい場合は聞かれたときに入力
インストールが完了すると下記の表示が出る

Installing WolframScript system integration...

Installation complete.
アカウント認証
wolframscript

で起動させる,初回起動のみアカウントを聞かれるのでメルアド(Wolfram ID)とPassを入力

: ~/Downloads
$ wolframscript
The Wolfram Engine requires one-time activation on this computer.

Visit https://wolfram.com/developer-license to get your free license.

Wolfram ID:
Password:

Wolfram Engine activated. See https://www.wolfram.com/wolframscript/ for more information.
Wolfram Language 12.0.0 Engine for Linux x86 (64-bit)
Copyright 1988-2019 Wolfram Research, Inc.

In[1]:= 1 + 1
Out[2]= 2

#Ctrl+Dで抜ける

: ~/Downloads
$

Jupyter notebookに追加したかった

WolframResearchのレポジトリを使う
今現在のJupyter kernel一覧をみてみる

: ~/Downloads
$ jupyter kernelspec list
   julia-1.1 [path]  
   python3

cloneして使わせていただく

: ~/Downloads
$ git clone git@github.com:WolframResearch/WolframLanguageForJupyter.git

: ~/Downloads
$ cd WolframLanguageForJupyter

:~/Downloads/WolframLanguageForJupyter
$ configure-jupyter.wls add
configure-jupyter.wls: Jupyter installation on Environment["PATH"] not found.

ipython addしたり色々したんですが無理でした, どなたか教えてください
追記(2019/05/27)
下記のコマンドでできました

configure-jupyter.wls add [jupyter-notebookのパス] [WolframKernelのパス]

SciPyJapan2019振り返り(1/2)

動機

最近こんな記事を見かけて、自分もSciPy Japan 2019を見に行ったので感想等書いてみたくなったので書いてみました gihyo.jp
公開されているチュートリアルのURLをすべて含んだ良い記事だと思うのでこんな記事読まずに↑こちらの記事読んだほうがいいかもしれないです
この記事で触れられてないところに触れていければと思います

参加費

学生:50$

知ったきっかけ

去年辺りからEnthoutのYoutubeチャンネルを見ていたのでSciPyの存在は知っていた
自分は特にUMAPとJupyternotebookでのシミュレーション環境構築の動画が好きだった www.youtube.com

進行スケジュール

進行は予定通りだった(4/23, 4/24共に) www.scipyjapan2019.scipy.org 初日は

9:00-12:30 チュートリアル

Tensorflow, Josh Gordon, Google
Advanced Numpy, Juan Nunuz-Iglesias, Monash University.
の2つから一つ選ぶ
自分はTensorflowを選びました
GoogleのJosh Gordon氏によると
1. TF2.0はさらにNumpyライクになった
2. Beginnerにとってはあまり大きな変化はない
3. Expertなcode styleはかっこよく書ける
リンク参照→https://storage.googleapis.com/applied-dl/SciPy_Tokyo.pdf
4. TF2.0の例はうまくいかないのもサイトにのっけちゃってる

12:30-1:30 昼食

ビュッフェ形式でした
会場がマンダリンオリエンタル東京だったので,すごい豪華なご飯でした
卑しい人間なので、この1食で元取ったなと思ってしまいました

1:45-2:30 Keynote: f(x)=a+bi

Your (x) future, f, depends on Atoms (real and bits (imaginary: cyber)
Mitsunobu Koshiba, President and CEO, JSR
AI使ってる企業事例の紹介等がありました

2:30-3:00 Apache Arrow, Kouhei Sutou, ClearCode Inc.

Apache Arrowの紹介

C,C++,C#,Go,Java,JavaScript, MATLAB, Python,R,Ruby,Rust,様々な言語で使える
インメモリーデータ向け多言語対応開発プラットフォーム
効率的なシリアライズができる
データを直接扱うことでコピーコスト, パースコストを失くしている

3:00-3:30 Chainer: A Deep Learning Framework for Fast Research and Applications, Crissman Loomis, Preferred Networks

NumPy/CuPy風のChainerX, Chainer CV, RLの紹介

3:30-3:45 休憩

すごい美味しいマカロンが出ました

3:45-4:15 Scaling your Python Interactive Applications with Jupyter, Luciano Resende, IBM

k8sでjupyter notebook立てまくって多言語対応
jupyter notebookでのデータフロー

4:15-4:45 CuPy: A NumPy-compatible Library for High Performance Computing with GPU,Masayuki Takagi, Preferred Networks

cuPyはSciPyの疎行列、FFT、特殊関数、線形代数等をサポートしてる

4:45-5:15 Rapids: GPU Accelerated Data Science, Akira Naruse, NVIDIA

一番衝撃的だった
特にcuDFがpandasライクだがかなり高速になっていた
RAPIDSについては下記のリンクが分かりやすかった
機械学習のすべてをGPUで行おうとしている壮大なプロジェクト

www.slideshare.net

qiita.com

5:15-6:00 ポスター発表及びジョブフェア

JSRさんとEnthoughtさんが展示をされてました
オライリージャパンさんがエレガントなSciPyを無償配布していたのでいただきました,しかも著者のJuan Nunez-Iglesiasがサインもしてくれました

6:00-7:30 レセプション

美味しい食ry

初日の振り返り

マンダリンオリエンタル東京が豪華過ぎて圧倒されました
セッションがこすぎて圧倒されました

juliaの設定.juliaをdotfilesに追加して管理したら便利だった

動機

Juliaのパッケージとかどこにあるんだろう、と思ったらhomeに.juliaがあったのでこれはdotfilesに足すしか無いと思った

やっていく

> cp .julia [dotfiles/homeの場所]

setup.shに追記

#!/bin/bash

DOT_FILES=(.bashrc .bash_profile .vim .vimrc .tmux.conf
.bash_logout .xonshrc .julia)

for file in ${DOT_FILES[@]}
do
  ln -s $HOME/dotfiles/home/$file $HOME/$file
done

.juliaの中身をちょっとみてみる

ls -a .julia
.       compiled  dev           packages
..      conda     environments  prefs
clones  config    logs          registries

それぞれのファイルには大体想像どおりのものがあった

今の所の便利さ

git pullすればstartup.jl反映される, packagesに一回入れたパッケージが残ってる

おまけ

.julia/repl_history.jl に,REPLで打ったコマンドが全て残ってます人によっては(少なくとも私にとっては)黒歴史なのでpublicなdotfilesに置くときは消去するといいかもしれません

https://www.mathwithjulia.com/

JuliaでKullback-Leibler Divergence 1/2

目標

発生させた正規分布に従う乱数同士のKLdivergenceを計算してみる

X\sim N\left(0, 1\right), Y\sim N\left(0.5, 1\right), Z\sim N\left(0, 1.5\right)
使うライブラリ
StatsBase.jl
Distributions.jl

kldivergenceとは

 \begin{array}{l}{q(x), p(x) : p . d . f \text { on } R^{N}} \newline
{K(q | p) :=\int q(x) \log \frac{q(x)}{p(x)} d x}\end{array}
で定義され,p.d.f.同士の差異の大きさを反映している
(distanceとは(私は)呼ばない、対称性がないので)

乱数の生成

julia>

julia> x = rand(Normal(0, 1), 100)

julia> y = rand(Normal(0.5, 1), 100)

julia> z = rand(Normal(0, 1.5), 100)

正規分布同士のkldivergence

2つの正規分布同士の場合、少し頑張ると公式が出せる
2つの正規分布を考える
 N\left(\mu, \sigma^{2}\right), N\left(\xi, \tau^{2}\right)
kldivergenceを計算していくと....?

次回

正規分布同士のkldivergenceの公式
StatsBase.jlのkldivergenceを使ってみる

参考書籍

情報量統計学

Juliaで標準正規分布のプロット(Gadfly.jl)

目標

JuliaでN(0,1)をプロットする(Gadfly.jl)
i.e.
 f(x)=\frac{1}{\sqrt{2 \pi \sigma^{2}}} \exp \left(-\frac{(x-\mu)^{2}}{2 \sigma^{2}}\right) \quad(x \in \mathbb{R})
をプロットする(xは[-5,5]に制限します)

動機

Data Science with Julia
で見たプロットがかっこよかったので、やりたくなった

作業環境

前回同様

やってみる

(v1.1) pkg> activate 0402
(0402) > add FFTW Gadfly Cairo
shell> vim uni.jl

uni.jlを書いていく

using Pkg
Pkg.activate("0402")

using Gadfly, Cairo

Gadfly.push_theme(:dark)
#なぜなら、かっこいいから. 自分で色を設定して、themeとして登録もできる詳しくは  
#http://gadflyjl.org/v0.6.3/man/themes.html#Named-themes-1

f(x, μ, σ) = (1/(√(2*π*σ^2)))*exp(-(x-μ^2)^2/2σ^2)
#正規分布作る  
x = collect(-5:0.1:5)
#numpyならnp.arange(-5,5,0.1)

Standard_Normal_dist = [f(x, 0, 1) for x in x]

p = plot(x=x, y=Standard_Normal_dist)
display(p)

実行してみる

shell> julia uni.jl

ブラウザが開いて,こんな感じになる

できた!

Gadfly.jlの挙動について(おまけ)(3パターン)

ipynbの場合
plot(y=[1,2,3])  

下のセルに出る

p = plot(y=[1,2,3])
display(p)  

ブラウザが開いて出る

.jlを作って,julia .jlで呼ぶ場合
plot(y=[1,2,3])

何も出ない

p = plot(y=[1,2,3])
display(p)

ブラウザが開いて出る

REPLの場合
plot(y=[1,2,3])

ブラウザ開いて出る

注意
  1. plot()はy軸指定だけでも描画されるが、その場合xは0からスタートする
  2. 正規分布は自分で決めなくても,Distributions.jl使えば問題ない
    (私はTeXっぽい書き方が好きなので書いた,合理性はない)

感想

matplotlibのようで、慣れやすいと思った

参考書籍,URL

Data Science with Julia Gadfly公式