tilfin.hatenablog.com
こちらの記事で書いたように Windows で Tensorflow を GPU で試してみました。この中で Python をオフィシャルのインストーラから入れて virtualenv で動作環境を作成したのですが、後々 matplotlib や OpenCV を入れようとしたところ Windows のために諸々嵌ることがあったので、より簡単に All-in-One 導入できる Anaconda から入れてみることにしました。
www.procrasist.com
またこちらの記事で見た Keras が、今後 Tensorflow で色々と試す上で非常分かりやすそうだったので、導入してみることにしました。
Anaconda で Python 3.5 をセットアップ
既にインストールしていた Python は「プログラムと機能」からアンインストールしておきました。
Download Anaconda Now! | Continuum から [Python 3.5 version 64-BIT INSTALLER] をダウンロードして実行します。インストール ウィザードで環境変数を通しておきます。(デフォルトのインストール場所ではなく D:\Anaconda35 に自分は入れました。)
Tensorflow + Keras をセットアップ
環境構築
ここから先は PowerShell で行います。
conda で work という名前の環境を作ります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| PS D:\> conda create -n work python=3.5 anaconda
…省略…
Extracting packages ... [ COMPLETE ]|##################################################| 100% Linking packages ... 1 個のファイルをコピーしました。################## | 71% [ COMPLETE ]|##################################################| 100% # # To activate this environment, use: # > activate work # # To deactivate this environment, use: # > deactivate work # # * for power-users using bash, you must source #
|
Tensorflow の導入
work 環境にして pip で tensorflow と tensorflow-GPU をインストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| PS D:\> activate work
PS D:\> pip install tensorflow Collecting tensorflow Using cached tensorflow-0.12.1-cp35-cp35m-win_amd64.whl Requirement already satisfied (use --upgrade to upgrade): wheel>=0.26 in d:\anaconda3\lib\site-packages (from tensorflow) Collecting protobuf>=3.1.0 (from tensorflow) Using cached protobuf-3.1.0.post1-py2.py3-none-any.whl Installing collected packages: protobuf, tensorflow Successfully installed protobuf-3.1.0.post1 tensorflow-0.12.1
PS D:\> pip install tensorflow-gpu Collecting tensorflow-gpu Using cached tensorflow_gpu-0.12.1-cp35-cp35m-win_amd64.whl Installing collected packages: tensorflow-gpu Successfully installed tensorflow-gpu-0.12.1
|
Keras をセットアップ
Keras Documentation は numpy, scipy, pyyaml OpenCV, HDF5, hdf5 に依存しています。この中で OpenCV は anaconda で入らないので別途インストール必要があります。
OpenCV 3.2 をインストール
hikuichi.hatenablog.com 単純に pip でインストールしても Windows では動かないので、こちらを参考にビルド済みパッケージを使って、OpenCV をインストールします。 http://www.lfd.uci.edu/~gohlke/pythonlibs/ から OpenCV_Python‑3.2.0+contrib‑cp35‑cp35m‑win_amd64.whl をダウンロードして、 pip で絶対パスを指定してインストールします。
1 2 3 4
| PS D:\> pip install D:\opencv_python-3.2.0+contrib-cp35-cp35m-win_amd64.whl Processing d:\opencv_python-3.2.0+contrib-cp35-cp35m-win_amd64.whl Installing collected packages: opencv-python Successfully installed opencv-python-3.2.0+contrib
|
Keras をインストール
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| PS D:\> pip install keras Collecting keras Downloading Keras-1.2.0.tar.gz (167kB) 100% |################################| 174kB 911kB/s Collecting theano (from keras) Downloading Theano-0.8.2.tar.gz (2.9MB) 100% |################################| 2.9MB 471kB/s Building wheels for collected packages: keras, theano Running setup.py bdist_wheel for keras ... done Stored in directory: C:\Users\someone\AppData\Local\pip\Cache\wheels\f8\2c\8e\ffffff128220b1acf6fcd5e692269c6e8d607 44c15fd160c2c Running setup.py bdist_wheel for theano ... done Stored in directory: C:\Users\someone\AppData\Local\pip\Cache\wheels\96\2b\3d\ffffff24a7171a4afb7144d1e944a7be643b4 48b23a35b9937 Successfully built keras theano Installing collected packages: theano, keras Successfully installed keras-1.2.0 theano-0.8.2
|
Matplotlib, OpenCV, Keras を試す
Matplotlib を試す
REPL からシグモイド関数をグラフ描画して表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| PS D:\> python Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import numpy as np >>> import matplotlib.pylab as plt >>> def sigmoid(x): ... return 1 / (1 + np.exp(-x)) ... >>> x = np.arange(-5.0, 5.0, 0.1) >>> y = sigmoid(x) >>> plt.plot(x, y) SetProcessDpiAwareness(2) failed: COM error 0xffffffff80070005 (Unknown error 0x0ffffffff80070005), using 2 [<matplotlib.lines.Line2D object at 0x000002370B81EA20>] >>> plt.ylim(-0.1,1.1) (-0.1, 1.1) >>> plt.show() >>> >>> ^Z
|
OpenCV を試す
REPL から画像ファイルを開いて表示してみます。
1 2 3 4 5 6 7 8 9 10 11 12
| PS D:\> python Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.imread('pic.jpg') >>> img = cv2.imread('./pic.jpg') >>> cv2.imshow('win1', img) >>> cv2.waitKey(0) 13 >>> >>> cv2.destroyWindow('win1') >>> ^Z
|
cv2.waitKey(0)
の後、ウィンドウに対して Enter を入力すると表示されます。
日本古典籍字形の文字認識で Keras を試す
www.procrasist.com Keras を実際に試してみます。こちらの記事を参考に日本古典籍字形の文字認識を試してみました。
書名一覧 | 日本古典籍字形データセット の「機械学習による文字認識」から サンプルコード(TAR+GZ 24.57 MB) をダウンロードします。 D:\pmjt_sample_20161116
に展開しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| PS D:\pmjt_sample_20161116> python .\run.py Using TensorFlow backend. I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cublas64_80.dll locally I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cudnn64_5.dll locally I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cufft64_80.dll locally I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library nvcuda.dll locally I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library curand64_80.dll locally X_train shape: (19909, 28, 28, 1) 19909 train samples 3514 test samples Train on 19909 samples, validate on 3514 samples Epoch 1/12 I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:885] Found device 0 with properties: name: GeForce GTX 960 major: 5 minor: 2 memoryClockRate (GHz) 1.253 pciBusID 0000:01:00.0 Total memory: 2.00GiB Free memory: 1.64GiB I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:906] DMA: 0 I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:916] 0: Y I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 960, pci bus id: 0000:01:00.0) 19909/19909 [==============================] - 5s - loss: 1.4426 - acc: 0.5135 - val_loss: 0.7607 - val_acc: 0.7803 Epoch 2/12 19909/19909 [==============================] - 3s - loss: 0.7044 - acc: 0.7817 - val_loss: 0.4843 - val_acc: 0.8677 Epoch 3/12 19909/19909 [==============================] - 3s - loss: 0.5310 - acc: 0.8401 - val_loss: 0.3561 - val_acc: 0.8973 Epoch 4/12 19909/19909 [==============================] - 2s - loss: 0.4451 - acc: 0.8646 - val_loss: 0.3038 - val_acc: 0.9124 Epoch 5/12 19909/19909 [==============================] - 2s - loss: 0.3969 - acc: 0.8815 - val_loss: 0.2888 - val_acc: 0.9121 Epoch 6/12 19909/19909 [==============================] - 2s - loss: 0.3606 - acc: 0.8928 - val_loss: 0.2586 - val_acc: 0.9266 Epoch 7/12 19909/19909 [==============================] - 2s - loss: 0.3389 - acc: 0.9012 - val_loss: 0.2390 - val_acc: 0.9306 Epoch 8/12 19909/19909 [==============================] - 2s - loss: 0.3208 - acc: 0.9065 - val_loss: 0.2283 - val_acc: 0.9308 Epoch 9/12 19909/19909 [==============================] - 2s - loss: 0.2999 - acc: 0.9116 - val_loss: 0.2147 - val_acc: 0.9351 Epoch 10/12 19909/19909 [==============================] - 2s - loss: 0.2819 - acc: 0.9176 - val_loss: 0.2038 - val_acc: 0.9397 Epoch 11/12 19909/19909 [==============================] - 2s - loss: 0.2677 - acc: 0.9181 - val_loss: 0.1995 - val_acc: 0.9394 Epoch 12/12 19909/19909 [==============================] - 2s - loss: 0.2605 - acc: 0.9219 - val_loss: 0.1968 - val_acc: 0.9405 Test score: 0.196767529901 Test accuracy: 0.940523619806
|
tilfin
freelance software engineer