さくらインターネットのメーリングリストFML4で添付ファイル禁止

ちょっと,苦労したのでメモ

さくらインターネットのメーリングリストはfml4を使用している。
このメーリングリストでの設定ファイルは,各メーリングリストごとのconfig.phで行う。

ちなみに,config.phをいじると,コントロールパネルから設定を変更すると上書きされてしまうので注意

config.phに追記。最後の1;の直上に書く

要は,filename属性があったときには拒否するということ

ネットで調べた下記方法では,HTMLメールまでおかしくなってしまうので,NG

いろいろ調べてしまった。

TensorflowでMNIST(5)

毎回学習させるのは効率が悪いので、一度学習させそれを保存しておき、判定時には判定のみをさせるように修正します

畳み込みニューラルネットワーク(CNN)のプログラムを修正していきます

学習用

tf_cnn3.py

判定用

tf_cnn3_exec.py

実行

学習させて、テストデータの先頭の1つを判定します。その際、どの数値をどの確率で判定しているかのリストを表示させています。その数値が最も高いものがこのエンジンでの判定結果となります。

この結果では7が9.99985099e-01で最も数値が高くなっています

TensorflowでMNIST(4)

前回までで、MNISTをDeeplearningするにあたって、回帰分析、多層パーセプトロン、畳み込みニューラルネットワークとTensorflowで実装してみました。

入力データに関しての補足です

入力用のデータはMNISTのデータを使っているのですが、28×28のビットマップデータを0-254までの数値(白黒)で表したデータを入力とします。

これを用いてTensorflowの入力データ用に1次元配列に変換します。その際、ビットマップデータを左上から順に1次元の配列に格納しているので、結局784要素の配列となります。これを、ビットマップデータ数分用意(60000)するので結局、784×60000という巨大な行列が入力となります。

実際の入力利用したデータは、その列の先頭に正解を付与しているので、785×60000でできたファイルとなります

入力ファイル

これが1つのデータです。先頭の5が正解データ、それ以降0から続くデータがビットマップの数値表現です

train.txt

Tensorflow入力

実際にTensorflowに計算させる際には0-254のビットマップデータを0-1の表現に変更します

教師データ

正解データは1-of-k方式のデータに直します。下記ですと7になります

回帰分析のダミー変数みたいな感じだと思えばいいかと思います

TensorflowでMNIST(3)

最後は畳み込みニューラルネットワーク(CNN)を実装します。

TensorflowではExpertとしてTutorialに入っているものです。

前回と同様に、MNISTのデータを作成し、Deeplearningしてみます。

コードは前回、前々回のものの一部エンジン部分のみを変更していますので合わせて比較してみるとよくわかるかもしません。

データ作成

まずデータを作成します。こちらの手順を実行します

http://d.hatena.ne.jp/anagotan/20160328/1459156607

train.txtとt10k.txtを作成しておきます

tf_cnn.py

こちらのコードは以下のものを流用させていただきました

http://qiita.com/ikki8412/items/95bc81a744dc377d9119

実行

回帰(0.9227)、多層パーセプトロン(0.9562)に比較し0.9806とかなり精度が上がりました

TensorflowでMNIST(2)

今回は中級?者向けの多層パーセプトロン(multilayer perceptron)を実装します

こちらのコードを流用させていただきました

http://qiita.com/TomokIshii/items/92a266b805d7eee02b1d

前回と同様に、input_data.pyを使わずにデータを自前で作成します

http://d.hatena.ne.jp/anagotan/20160328/1459156607

train.txtとt10k.txtを作成しておきます

tf_mlp.py

実行

回帰の場合には0.9227だったのですが、0.9562まで精度が上がりました

TensorflowでMNIST(1)

GoogleのDeeplearningプラットフォームであるtensorflowを触ってみました。

https://www.tensorflow.org/

世の中にはMNISTのサンプルを実行したブログが多いのですが、tutorialを開設しているだけのものが多くちょっとよく理解できていませんでした

自分なりに色々と調べてMNISTを理解していきます

まずはBeginnerということのサンプルです。

Beginnerというか、Deeplearningというよりは回帰分析をTensorflowで行っているというサンプルです

データダウンロード

input_data.pyを使うとよくわからないので自分でデータ取得からハンドリングします。

まず、データをダウンロードします。

https://www.tensorflow.org/versions/master/tutorials/mnist/download/index.html

こちらの真ん中ほどにあるリンクから下記4つをダウンロードし解凍しておきます。

train-images-idx3-ubyte.gz

train-labels-idx1-ubyte.gz

t10k-images-idx3-ubyte.gz

t10k-labels-idx1-ubyte.gz

データの整形

そのままでは使いづらいので整形します

train.txtとt10k.txtというファイルが作成されます。このファイルは1行ごとにMNISTの画像データの数値データ、0-255までの値で構成されています。その行の先頭に正解数字を入れてたデータです。

Deeplearning

Tensorflowのプログラムはこちらの方のサンプルを流用させていただきました

http://tensorflow.classcat.com/2016/02/11/tensorflow-how-tos-visualizing-learning/

実行

これを実行します

精度はあまり良くありませんが計算できました

EC2インスタンスでTensorflow

GoogleのTensorflow、GPUマシンでないとなかなか性能がでないので

EC2で作成してみます。

TensorflowはCUDA3.5以降対応だとかで、AWSのEC2インスタンスで使用可能なg2.2xlargeではCUDA3.0。ということでそのままでは使えないそうです

というわけで、いろいろ調べたところ、偉い方々が手順を示してくれています。

https://www.tecnos-dsm.co.jp/archives/info/technical_info_04

2016/3/17現在、これらの手順ですとTensorflowをコンパイルする際にエラーになります

これの回避策がこちらに

http://stackoverflow.com/questions/34941620/unable-to-build-tensorflow-from-source-with-bazel-22nd-january-2016

単純な話でbazelのバージョンのせいだとか。

bazelをコンパイルしなおします

その後、Tensorflowのコンパイル

うまくいきました