Jupyterlab
jupyternotebook は曲がりなりにも使っていたが、jupyterlab というのは知らなかった!
開発環境としての機能が追加され、使い勝手がよくなっているらしい。
とりあえず手元の Macbook Air にインストール。使ってみよう。
カーネルを追加すれば Python 以外も使える? Javascript/Java/C++/Rust/Elixir など、JupyterNotebook 用のカーネルはすでにあるので、Jupyterlab で使えても良さそう。
そのうち挑戦してみよう。
deep learning のお勉強
東大の教材
東大松尾研究室が、機会学習の演習教材を公開していることを知る。
Deep Learning基礎講座演習コンテンツ 公開ページ | 東京大学松尾研究室 - Matsuo Lab
商用利用は不可だが、個人の勉強に使うのはOKとのことなので、ありがたく使わせてもらう。資料は JupyterNotebook になっている。動かせるのが良い。
ダウンロードして章立てを見たところ、入門編というだけあって、python や Numpy・Scipy・Pandas・Matplotlib といったライブラリの使い方までで7章、そのあとデータベースの話が8章から10章まで、そして11章から漸く機械学習の話になる。
11章からは、機械学習の単元になります。はじめは教師あり学習、次の12章で教師なし学習、そして13章がその機械学習で学んだモデリングの検証やチューニング方法になります。モデルは作ったら終わりではなく、検証をしっかりとする必要があり、オーバーフィッティング等についても述べます。
最後は今後の学習として、14章でデータサイエンスの中級者になるために必要なスキル、例えばPythonの高速化や深層学習入門、Spark(Pyspark)を紹介します。
きっちり基本から、というのに良さそう。
一方、Tensorflow や Keras の使い方は別途学ぶ必要がある。
Google Colaboratory
からあげさんの記事で、google colaboratory を知る。
Google Colaboratoryを使えば環境構築不要・無料でPythonの機械学習ができて最高 - karaage. [からあげ]
無料で環境構築の手間もなく、しかも商用利用も可能?
さらに、jupyternotebook な環境なので、上記の教材を使うことができそう。
使わない手はない。早速使ってみる。
Sony さんの NNabla
エッジコンピューティング用で無料で公開されている。感謝!
RasPi3 で動かしてみたい。
Sony さんの Neural Network Console
こちらはクラウドなニューラルネットワーク環境。ブラウザだけで始められる。
ワクワクする!10時間まではお試しで無料。
高水準入出力関数と低水準入出力関数
高水準入出力関数
- fopen, fread, fwrite, fclose
- OS非依存
- バッファリングあり
低水準入出力関数
- open, read, write, close
- OS 依存
- バッファリングなし
バッファサイズ
stdio.h 内で BUFSIZ が定義されている(らしい)
確かめてみる。
$ grep BUFSIZ /usr/include/stdio.h
#ifndef BUFSIZ
# define BUFSIZ _IO_BUFSIZ
Else make it use buffer BUF, of size BUFSIZ. */
では、_O_BUFSIZ はどこでいくつに定義されているのか?
$ find /usr/include -name \*.h | xargs grep _IO_BUFSIZ
/usr/include/stdio.h:# define BUFSIZ _IO_BUFSIZ
/usr/include/x86_64-linux-gnu/bits/libio.h:#define _IO_BUFSIZ _G_BUFSIZ
次は _G_BUFSIZ を探す。
~$ find /usr/include -name \*.h | xargs grep _G_BUFSIZ
/usr/include/x86_64-linux-gnu/bits/_G_config.h:#define _G_BUFSIZ 8192
/usr/include/x86_64-linux-gnu/bits/libio.h:#define _IO_BUFSIZ _G_BUFSIZ
漸くたどり着いた。この処理系では 8192 byte らしい。
printf/scanf したときに 8192byte になるまではバッファリングされる、はず?
試すには、8192byte 前後の read/write し、 strace してみればよい?