眠気.jl

投稿=不定期

JuliaでD次元正方格子上のランダムウォークを見る(D=2)

動機

下記のpdfの3/17ページのような正方格子上のランダムウォークを見たくなったので

注意

リントしてないので汚いです
反射壁,吸収壁は考えていません
1辺200の正方格子の中心から300歩やったので奇跡的にはみ出す可能性があります

方針

mutable structとしてParticleを作成して,x座標,y座標,次の方向をもたせる
次の方向=rand(1:4)として→↑↓←を割り振りました,もう少しいい方法もある気がしてます

使うライブラリ

Plotで,Backendはgr()を使う
∵スピード,3D,GUI,を重視したいときはBackendをgr()にすることがおすすめされているので
インタラクティブ性を重視したいとき,速さ重視のとき,綺麗さを重視したいときetc...
結局どうすればいいんだ!早く結論だけ言え!!というせっかちな人のための図があります(For the impatient)
f:id:julialangisthebestlang:20190802194348j:plain

やってみる

using Plots

gr()

ONESIDE = 100

mutable struct Particle
    x::Int8
    y::Int8
    next_direction::Int8
end


particle = Particle(0,0,0)

function assign_direction(Particle)
    Particle.next_direction = rand(1:4)
    return Particle
end

function step(Particle)
    if Particle.next_direction == 1
      Particle.x = Particle.x-1
      return Particle
    elseif Particle.next_direction == 2
      Particle.y = Particle.y-1
      return Particle
    elseif Particle.next_direction == 3
      Particle.y = Particle.y+1
      return Particle
    elseif Particle.next_direction == 4
      Particle.x = Particle.x+1
      return Particle
    else
      return Particle
    end
  end


#300枚のanimを作る
anim = @animate for i = 1:300
    scatter([particle.x],[particle.y],color="blue",xlims=(-ONESIDE,ONESIDE),ylims=(-ONESIDE,ONESIDE),legend=false)
    step(assign_direction(particle))
end

# fps=1秒あたりに見せるフレーム数
gif(anim, "file_name_you_want.gif", fps=20)

結果

f:id:julialangisthebestlang:20190802194520g:plain
random walk

おまけ

scatter!で重ねて書けるので,2個以上の粒子を考える場合はscatter以降をscatter!にする必要がある
意図的にscatter!だけを使ってpathを全部プロットするとこうなる

f:id:julialangisthebestlang:20190802194652g:plain
random walk with path
蛇みたいでかわいい

D=1,2の格子ランダムウォークは原点を無限回訪問するが,D>=3から突然成立しなくなることはよく知られていて例えばD.Williams本にも載ってます
Plot完全理解者になってD=3も可視化したいです

参考

1
オープンコア講座
ランダムウォークと確率論
熊谷 隆(京都大学理学部数学教室)
http://www.kurims.kyoto-u.ac.jp/~kumagai/Open-core-TK.pdf
2
Probability with Martingales(D.Williams)
3
plotのbackendに関して
https://docs.juliaplots.org/latest/backends/

Ubuntu18.04にMeCabとCabochaのインストール

動機

メモ

Mecab

sudo apt install mecab
sudo apt install libmecab-dev
sudo apt install mecab-ipadic-utf8

(Pythonからも使う場合は)

sudo pip3 install mecab-python

Cabochaのインストール

GoogleDriveから,cabocha-0.69.tar.bz2,CRF++-0.58.tar.gzをダウンロード

先にCRF++をインストール

tar -zxvf CRF++-0.58.tar.gz
cd CRF++-0.58/
./configure
make
sudo make install
sudo ldconfig

Cabocha

tar -jxvf cabocha-0.69.tar.bz2 cabocha-0.69/
cd cabocha-0.69/
./configure --with-mecab-config=`which mecab-config` --with-charset=UTF8 
#mecab設定
make
sudo make install

Juliaで話題のGen/チュートリアルの環境構築

Genとは

A general-purpose probabilistic programming system with programmable inference.
DLに限らないgeneral-purposeな確率的プログラミングを目指しているのでGenという名前(リンク先参照)
The name 'Gen' comes from the system's purpose to fill a gap in "general-purpose" probabilistic programming, according a paper by MIT researchers. probcomp.github.io GenTF
TensorFlow plugin for the Gen probabilistic programming system
GenViz
可視化のためのなにか

触ってみる

公式のGetting Startedでは2通りのやり方が書いてある
1 . Juliaのpackage managerから入れる

pkg> add https://github.com/probcomp/Gen

2 . Dockerを使う

Dockerでやってみる

The easiest way to run the notebooks is using Docker.
らしいのでDockerの方のチュートリをやってみる

$ git clone https://github.com/probcomp/gen-quickstart.git
$ cd gen-quickstart
$ docker build -t gen:v0 .
$ docker run -it --name gen -p 8080:8080 -p 8090:8090 -p 8091:8091 -p 8092:8092 gen:v0

デカいので時間かかった(1.95GB)

f:id:julialangisthebestlang:20190701195453p:plain
docker_size

localhost:8080にアクセス

f:id:julialangisthebestlang:20190701200611p:plain
Gen

環境構築できた

チュートリアルの中身を見てみる

全体 Gen Quick Start.ipynb

f:id:julialangisthebestlang:20190701203442p:plain
tutorial

例えば tutorials/Reasoning About Regenerate.ipynb

Genの使い方,特にget_choicesで取りうる値がtreeコマンドの様に見れるのが印象的だったので載せておく

f:id:julialangisthebestlang:20190701210847p:plain
measurable_func
f:id:julialangisthebestlang:20190701210850p:plain
tree_view

参考

Gen公式

Q#のインストールとJupyterカーネルへの追加(Ubuntu 18.04)

動機

現在の流行は機械学習だと思っていて,待を歩くと殆どの人がAndrewNgの機械学習講座をやっていて, PRML, Convex Optimization, MurphyのML本, GoodfellowのDL本, 渡辺ベイズ, 園田D論, MLPシリーズ, ハムかず本, (敬称略)etc...等を読んでいるような印象がありますが
逆張りをしていきたいので,まだ流行していなそうなQuantum Computingやっていきたいなと思いました

最近Brilliant(米国の学習サイト,Courseraっぽい)でMicrosoftとAlphabetが協力した講座brilliant.orgのQuantum-Computingが出たのでそれをやっていきます

Quantum Computingブームが来たとき,いずれはこの講義もスタンダードになるんじゃないかと個人的には思います(まだ途中までしかやってませんが)
章ごとにQuizがあって、その後詳解や参照が表示される形式です
Courseraとの違いは無期限で回数無制限でテストを受け直せるところです

この講座だとおそらくQ#を手元にインストールする必要はないのですが(GUIで擬似プログラミングできる機能が用意されてしまっているので),追試してみたいので入れてみました

やってみる

Q#の公式を見ると,まずは .NET Core SDK (2.1 or later)を入れろということなので入れます https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install このページの選択でUbuntu18.04を選んでそのままコード打っていく
Register Microsoft key and feed

wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

Install the .NET SDK

sudo add-apt-repository universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.2

これでdotnetのインストールはできたので
再びQ#の公式を見て

dotnet tool install -g Microsoft.Quantum.IQSharp

インストール完了,アプデは次のコマンドらしい

dotnet tool update -g Microsoft.Quantum.IQSharp

インストール済みでも再インストールされるらしい,次のメッセが出る

dotnet tool update -g Microsoft.Quantum.IQSharp
ツール 'microsoft.quantum.iqsharp' が安定した最新バージョン (バージョン '0.7.1905.3109') で再インストールされました。

jupyterカーネルに追加

公式だと

dotnet iqsharp install

とあるが,iqsharpが見つからないとエラーが出た
公式チュートリアルのDockerfileから見つけた次のコマンドで追加できた

dotnet iqsharp install --user --path-to-tool="$(which dotnet-iqsharp)"

Q#の動作確認

MSのQuantumの公式レポをクローンして遊びます

git clone git@github.com:microsoft/Quantum.git
cd /Quantum/Samples/src/Teleportation
dotnet build
ビルドに成功しました。                                                                                │
    0 個の警告                                                                                        │
    0 エラー                                                                                          │
                                                                                                      │
経過時間 00:00:22.75

build終わったことを確認して

dotnet run

警告なく終了!

Q#の特徴

Q#公式 によると,C#っぽく;,{}を使っていてifC#っぽいとのこと
独特なのはデフォルトだと値がimmutableで,letでmutableに

参考

.NET turorial

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のパス]