2019年6月29日土曜日

MNISTデータの読み込み

これまた、いまさら感が半端無いが、MNISTの読み込み方を書いておく。

市販されている本(例えば『ゼロからつくるDeeplearning』とか)にうまーくパッキングされたものが付録としてついてきている場合もあるが、そういうのに頼らず、自力でやる方法を紹介する。

なぜなら本を買うとお金がかかってしまう可能性があるから。

ChainerやTensorFlowであれば、標準搭載されていますが、できるだけ高度なライブラリは使わず、できるかぎり標準的な装備でやりたいというのもあるので。

条件

  • お金はかけない(市販されている本などは頼らない)
  • できるだけ低装備で行う

注意

sklearnにも、load_digitsというデータセットが入っているが、こちらはMNISTを加工して作られた8ピクセル×8ピクセルの画像データで、MNISTの簡略版なので、MNISTとは違うので注意しよう。
(参考:https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html)

オリジナルのMNISTは28ピクセル×28ピクセルの画像データだ。

MNISTデータをダウンロード

まずは、MNISTのデータ本体を以下のURLへアクセスしてダウンロードする。

http://yann.lecun.com/exdb/mnist/

そこで、以下の4つのファイルをダウンロードしてくる。
  • train-images-idx3-ubyte.gz
  • train-labels-idx1-ubyte.gz
  • t10k-images-idx3-ubyte.gz
  • t10k-labels-idx1-ubyte.gz
で解凍までする。

それで、新しくディレクトリをつくって、そこにこの4つのファイルを入れる。

新しいディレクトリの名前はなんでもいいのですが、ここではMNIST_dataという名前にすることにする。

python-mnistをインストール

MNISTを扱うようのライブラリがあるのでインストールする。 ターミナルを起動して、以下のようにコマンドを打つ。
pip install python-mnist
(参考: https://pypi.org/project/python-mnist/ )

python-mnistのインポートからファイル読み込みまで

今回MNISTを読み込むコードを書くファイルは、とりあえずmnistとしておく。

そして、mnistという名前のファイルと同じディレクトリに、先ほどのMNIST_dataというディレクトリも置く。

実際のインポートは以下のようにします。
from mnist import MNIST
mnist = MNIST('../MNIST_data')
x_train, y_train = mnist.load_training() 

import numpy as np
import matplotlib.pyplot as plt
x_train = np.asarray(x_train).astype(np.float32)

x_train.shape      # (60000, 784)が返ってくる。
x_train[0]           #  784要素の配列が返ってくる。

plt.imshow(x_train[0].reshape(28,28))     # 画像として表示される。
plt.show()
以上でMNISTのインストールが完了。

あとは、いろいろと好きなようにゴリゴリやっていくだけです。

2019年6月26日水曜日

Tomcatの起動の仕方

随分久しぶりの更新となってしまった。

転職先の研修でJavaをやっているので、その絡みで、これまでの流れ?と話は変わるがTomcatについて書こうと思う。


今回書くのは、まずはTomcatのターミナルからの起動方法。

Tomcat自体は、単体でもインストールできるが、Eclipse(エクリプスorイクリプスと読みます)をインストールすればその中に入っているので、とりあえずそれを使うことにする。(Spring tool suite、通称STSでも同様。)

Tomcat自体のインストールやEclipseのインストールは検索すればすぐ出てくるので省略する。

もう少し具体的にいえば、途中までの行き方はインストールの仕方によってそれぞれ違うと思うので、ここでは、Tomcatの中のbinというディレクトリのところまで辿りつけたところから話を始める。

ちなみにbinというのはどういうディレクトリかというと、中にはこんなファイルやディレクトリがあるところ。

  • bootstrap.jar
  • commons-daemon.jar
  • makebase.sh
  • tomcat-juli.jar
  • catalina-tasks.xml
  • configtest.bat
  • setclasspath.bat
  • tomcat-native.tar.gz
  • catalina.bat
  • configtest.sh
  • setclasspath.sh
  • tool-wrapper.bat
  • catalina.sh
  • daemon.sh
  • shutdown.bat
  • tool-wrapper.sh
  • ciphers.bat
  • digest.bat
  • shutdown.sh
  • version.bat
  • ciphers.sh
  • digest.sh
  • startup.bat
  • version.sh
  • commons-daemon-native.tar.gz
  • makebase.bat
  • startup.sh
参考までに、今回の記事のようにEclipseの中のTomcatを使う場合、その場所は、

/Applications/Eclipse_2019-03.app/Contents/tomcat/9/bin

にある。

さて、binの中のstartup.shのコマンドを打ちたいが、このままではパーミッションが有効ではないので、カレントディレクトリがbinの状態で以下のようなコマンドを打つ。
$ chmod 755 *.sh
特に何か起こったようには見えないが、気にしない。

そうすれば、startup.shが実行できるようになるので、以下のようにコマンドを打つ。
 #くどいようだけど、カレントディレクトリがbinフォルダであるという前提。
$ ./startup.sh
そうすると以下のようになれば成功。
Using CATALINA_BASE:   /Applications/Eclipse_2019-03.app/Contents/tomcat/9
Using CATALINA_HOME:   /Applications/Eclipse_2019-03.app/Contents/tomcat/9
Using CATALINA_TMPDIR: /Applications/Eclipse_2019-03.app/Contents/tomcat/9/temp
Using JRE_HOME:        /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home
Using CLASSPATH:       /Applications/Eclipse_2019-03.app/Contents/tomcat/9/bin/bootstrap.jar:/Applications/Eclipse_2019-03.app/Contents/tomcat/9/bin/tomcat-juli.jar
Tomcat started.
適当なブラウザを開き、http://localhost:8080/というURLに移動すれば、Tomcatのページが表示される。

2019年6月9日日曜日

『疑似科学と科学の哲学』



タイトルの印象とは違って、中身は割と真面目な本。

「科学とは何か」ということを、「疑似科学と科学の線引き問題」を題材として、砕けた口調で、でも内容はしっかりと考察している本。

今まで、わりとはっきり線引きできるものだと思っていたけど、いざ真面目に線引きしようと思うと、厳密には難しい。

この本での結論としては、「明確な線引きというのは難しそうなので、そういう戦略をとるのではなく、色々なチェック基準を設けて、それを『どの程度満たしているか』という感じで程度問題として扱うのがいいのではないか」と結んでいる。

グレーゾーンが出てきてしまうけれど、一方では、明確な科学と明確な疑似科学があることも間違いはないわけだから。

参考文献も豊富に紹介されている。