grbl1.1+Arduino CNCシールドV3.5+bCNCを使用中。
BluetoothモジュールおよびbCNCのPendant機能でスマホからもワイヤレス操作可能。
その他、電子工作・プログラミング、機械学習などもやっています。
MacとUbuntuを使用。

CNCマシン全般について:
国内レーザー加工機と中国製レーザー加工機の比較
中国製レーザーダイオードについて
CNCミリングマシンとCNCルーターマシンいろいろ
その他:
利用例や付加機能など:
CNCルーター関係:



*CNCマシンの制作記録は2016/04/10〜の投稿に書いてあります。


2018年4月17日火曜日

JupyterLabを使ってみた(便利そうだけど、いまいち)

最近は、Jupyter Notebookを使っていますが、それと似たようなものでJupyterLabというのがAnaconda Navigatorに前からあったので試しにつかってみました。

Jupyter Notebookと同様にブラウザ上で使うことができるので便利。
さらにツリービュー、ターミナル、エディタもあり、画面分割可能でだいたい一通りのことができます。

Anaconda Navigatorからすぐにインストール(不要ならアンインストール)できるので試してみるにはよさそう。
かなりJupyter Notebookからは進化しているのですが、まだベータ版のようです。

右クリックでコピペできない:
ということでしばらく使っていると、やはりベータ版なのか多少不便な点が。
まず、マウス右クリックでコピペがメニューに出てこない。右クリックすると、以下のようなメニュー。

セル単位でのコピペは可能。しかし単語や行だけのコピペはできないために、仕方なくキーボードでCtrl+C、Ctrl+Vを入力するしかない。なんとメニューバーにすらない。

もうひとつとして、せっかくターミナルも同一画面上で使用できるのにもかかわらず、同様に右クリックだけではコピペできない。そのかわり、シフトキーを押しながらの右クリックならメニューが出てくる(以下)。

つい癖で右クリックしてみたものの、コピペできないということが少しストレスを感じてしまいます。改良されないのでしょうか?


%matplotlib nbaggが使えない:
Jupyter notebookではplt.plot()で表示するするとき、%matplotlib inlineを使いますが、アニメーションなどを表示するには、%matplotlib nbaggを使っています。しかしnotebookのほうでは使えるけれども、JupyterLabのほうだと、Javascriptエラーがでてしまいます。

JavaScript output is disabled in JupyterLab

しかし、このページにいくつか対処策があるようです。

conda install notebook jupyterlab # for updating jupyter notebook and lab
pip install ipympl
jupyter labextension install @jupyter-widgets/jupyterlab-manager jupyter-matplotlib

事前にnodejsとnpmをインストールしておき、notebookとjupyterlabをアップデート、さらにipympl、jupyter-matplotlibをインストールとのこと。
しかし、それでもなぜかエラーがでてしまいます。このページでも話されていることなのですが、まだダメっぽい。

また、%matplotlib nbaggを使っても、

こんな感じのエラーがでてしまいます。%matplotlib ipymplを使うともっとひどいエラーがでてしまい、jupyter-matplotlibがダメみたい。何回かインストールし直してみましたが改善されないので、今回は保留。

ということから、結構使い勝手はよくなっているJupyterLabなのですが惜しい。ベータ版なので仕方ないのかもしれませんが、しばらく待ってみることにします。
そもそも、Jupyter Notebookなら特に問題ないので、今まで通りJupyter Notebookでいいかと。

しかし、その後、jupyter-matplotlibのサイトをみると、

It requires matplotlib 2.0 or and ipywidgets 7.0 more recent.

と書いてあることからチェックしてみると、ipywidgetsのバージョンが低いことが判明。さっそくアップデートしてみました。
すると、いままで%matplotlib nbaggではだめだったgifアニメーション制作が可能になりました。
そして、上のようにバックエンドを確認してみたところ、いままではnbAggと出力されていたのが、'module://ipykernel.pylab.backend_inline'になっていました。少しだけ進展したのですが、あいかわらずアニメーション自体は表示されず、もう少しというところ。しばらくすれば、また進展あるかも。
要は、このようなアニメーションをJupyterLab上で表示させたいのですが、一コマごとに出力したpngファイルを順番に表示することができずにいるということです。このアニメーションはpngを束ねてgifアニメにしたものですが、それも表示できません。バージョンアップによって制作はできるようになったので、よかったのですが惜しい。もちろんJupyter Notebook上では表示も制作も問題ないというわけです。

その後もう少しやってみると、どうやらJupyterLabではmatplot.animationを使う場合、アニメーション出力はHTML(ani.to_html5_video())を使うと大丈夫でした。もうひとつHTML(ani.to_jshtml())というのもあるのですが、こちらはダメみたい。Jupyter Notebookではどちらとも大丈夫ですが、JupyterLabの場合はHTML(ani.to_html5_video())を使ったほうがよさそうです。

追記:
その後、GIFアニメーションの作成+読込み+再生について実験してみました


データ分析ツールJupyter入門
Posted with Amakuri at 2018.12.21
掌田津耶乃
秀和システム
販売価格 ¥3,024

2018年4月9日月曜日

Tensorflow 1.7へバージョンアップ

Tensorflowは少し前に1.6へバージョンアップしていたにもかかわらず、pytorchを使っていたため1.5のままでした。しかし1.6のあとすぐに1.7へバージョンアップしており、eager executionが改良された模様。



TensorflowはさすがGoogleだけあって開発スピードがはやいのか、内容に追いついていくのが大変。
Tensorflowといえば、

tf.placeholder()
tf.Variable()
tf.Session()

でコーディングしていくイメージでしたが、より使いやすくするために

tflearn : easy to learn, high level API
slim : a lightweight library for defining, training and evaluating models
estimator : a high-level TensorFlow API that simplifies ML programming
keras : a higher API wrapper
eager : define by run
lite : mobile, RPi

などが次々と導入されたため、どれがいいのかわかりにくくなってきたという感じ。
kerasが使えるようになってからは、シンプルなコーディングが可能になったけれども、pytorchのようなdefine by runタイプが便利になってきたこともあって、Tensorflowもeagerを導入してdefine by runも普通に使えるようになった感じ。

なんでもありとなってきたTensorflowという感じで、やはり機械学習フレームワークとしてはTensorflowがなんだかんだいって便利なのかもしれません。
ということで、使い勝手が改良されたTensorflowも再度使おうと、1.5から一気に1.7へバージョンアップしてみました。

GPUを使用しているので、

pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.7.0-cp35-cp35m-linux_x86_64.whl

のpipコマンドでAnaconda仮想環境内にインストールしてあったtensorflow-gpu-1.5.0をアップグレード。
eager executionが便利そうなので、少し慣れておこうかと。

最近は、ベイズ推定などの確率的プログラミングに興味があって、

GPy
Pyro
Edward

などを勉強していまずがTensorflowにも、

Tensorflow Probability

というライブラリができたようで、Tensorflowだけであらゆることが可能となってきた感じ。



2018年2月26日月曜日

Anaconda NavigatorのVSCODE

Anaconda NavigatorにVSCODEが追加されたようなのでアップデートしてみました。
環境は、Ubuntu16.10です。


アップデートしてみると、たしかにVSCODE(右下)に追加されています。
選択した仮想環境内にあるVSCODEの「install」をクリックすれば、すぐにインストールされるようです。もうすでにPythonの環境に適応した状態になっているようなので、余計な設定などしなくてもいいようです。
もともとAnaconda Navigatorにはspyderというエディタも入っているのですが、おそらくVSCODEのほうが使いやすいかと。

しかし、普段はAtomエディタを使っているので(以前いろいろ設定したので)、VSCODEはたぶん使用しないとは思いますが、徐々に便利になっていることは確かです。やはりPythonを使うならばAnacondaを導入するのがおすすめです。

追記(2021年):
その後、VSCODEの機能拡張も進化したのでかなり便利になり、VSCODE内でJupyter Notebookも使えるようになりました。唯一問題なのは、Jupyter Notebookでmatplotlibを使った際にインタラクティブ表示(バックエンドを%matplotlib notebookにすることができない)が非対応ということでしょうか。そのため、Jupyter Notebookを使う際には、いまだにブラウザを使用しています。ちなみにJupyterLabでもインタラクティブ表示ができない。

2018年2月19日月曜日

小型直動サーボ:GS1502とミニアクチュエータ


AliExpress.com Product - 2pcs/lot 1.5 g 1.5g servo micro digital servo loading two linear servo1107円(2個/送料無料)
ラジコン飛行機用のサーボらしいけれども直動というのがめずらしい。ストロークは以下の写真をみると10mm程度でしょうか。


以前、CD-ROMヘッド用のミニアクチュエータをAliExpressで見つけましたが(以下)、こちらはステッピングモーターを使っているので脱調しなければ精度・分解能はありそう。
AliExpress.com Product - circle 2 Phase 4 wire Mini screw rod stepper motor for camera Linear motor sliding table lead screw stepper motor
それぞれ、285円/296円/307円(送料無料)、比較的安い。
ストロークは、19mm/29mm/40mmのようです。

ミニCNCやミニロボットアームなど作れそうです。
いちおう気になったのでメモ。

2018年1月31日水曜日

Bayesian Deep Learningの図解

事前確率や事後確率、そして確率分布を用いるBayesian Deep Learningは文章で説明されると理解しにくく、以前Variational Autoencoderを学んだとき(確率分布が登場してくる)もイメージとして把握するのが困難でした。一行ずつコーディングしていくことで、なんとかその仕組み/手順はわかったものの、GANなどのように構造が複雑になっていくとイメージが追いつかず、また分かりにくくなっていました。
そこで、以下の動画を見たら非常に分かりやすかったので、参考としてメモ。


ここでは確率分布を使わない通常の方法と確率分布を使う方法とを図で比較しながら説明してくれます。動画途中にでてくるスライド(イメージ)がわかりやすかったです。

線型回帰の場合、

X*w+b=Y

X:データ
w:ウェイト
b:バイアス
Y:予測値
 通常(非ベイズ)は、上図のそれぞれのマスに固有の数値が入りますが、

ベイズ推定を用いると(上図)、Xはデータなのでそれぞれ固有の数値ですが、w、bには正規分布などの確率分布が入り、その結果出力されるYも確率分布となります。
単に、固有の値であったwとbを正規分布に置き換えればいいというわけです。


Logistic Regressionの場合であっても、

ベイジアンでは以下のようになるだけ。
たしかに分かりやすい図解となっています。
さらに、多層のDeep Learningであったとしても、


という仕組みが、ベイジアンでは以下のようになるだけ。



Deep Learningを勉強していくと、ただですら複雑なマトリクス計算や数多くの層を計算しなければいけないので、コーディングする手順や仕組みを理解するにも一苦労です。さらには、確率分布をつかった式も途中に出てくるので、なおさら仕組みが難解になりがちですが、このようなイメージをつかむことができると理解しやすくなります。

以下の本も読んでベイズ推定を勉強していますが、文章や式だけでの表現だと頭の中にイメージするのが徐々に困難になってきて、理解するにはどうしても時間がかかっていました。やはり、イメージしやすい図解があると頭の中にも入ってきやすいという感じです。


また、Udemyには「ベイズ推定とグラフィカルモデル」という無料のコースもあります。動画内に登場する図解がわかりやすいかもしれません。覚えなければいけない式などかなりありますが、初心者にとっては難しい専門書で勉強するよりはいいかもしれません。
Youtubeでも動画は公開されており、日本語なので試しに見てみてもいいかもしれません。

人気の投稿