CentOS7 に Keras/tensorflow導入

概要

Vagrantで立ち上げたCentOS7にKerasを導入して、サンプルを動かすまでです。

前回記事 mashi-prog.hatenablog.com

環境は以下

ホスト

 ・macOS High Sierra 10.13.4
 ・VirtualBox 5.2.1
 ・Vagrant 2.0.4

ゲスト

 ・CentOS7
 ・Anaconda3-5.2.0
 ・Python3.6.5(Anaconda経由でインストール)

機械学習ライブラリ

 ・tensorflow-1.8.0
 ・keras 2.2.0

関連ライブラリのインストール

多分必要となるであろう、ライブラリなどをインストールします。

$ sudo yum group install "Development Tools"
$ sudo yum install openssl-devel readline-devel zlib-devel bzip2-devel

tensorflow/kerasの設定

作業ディレクトリの作成、anacondaでの環境の作成を行います。

# 作業ディレクトリの作成
$ mkdir ~/tensorflow-test && cd $_
# condaで環境の作成
$ conda create -n tensorflow
$ source activate tensorflow
$ pyenv local anaconda3-5.2.0 (set by /home/vagrant/.pyenv/version)
# version指定の確認
$ pyenv versions
  system
  anaconda3-5.2.0
* anaconda3-5.2.0/envs/tensorflow (set by /home/vagrant/tensorflow-test/.python-version)

tensorflowとkerasをインストールします。

$ conda install -c condo-forge tensorflow
$ pip install keras

サンプルコードの実行

前回紹介したjupyter notebook でサンプルコードを実行してみましょう。

# env tensorflowにはjupyter がないため、インストール
$ conda install jupyter
# jupyter 起動
$ jupyter notebook --no-browser --ip=0.0.0.0

前回と同じように、ホストのブラウザからアクセスしてみます。

http://192.168.33.10:8888/(環境によってアドレスは異なります。)

New -> Python3からノートブックを作成して、MNISTのサンプルコードを実行してみましょう。

import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.optimizers import RMSprop

batch_size = 128
num_classes = 10
epochs = 20

# the data, shuffled and split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train = x_train.reshape(60000, 784)
x_test = x_test.reshape(10000, 784)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')

# convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)

model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(784,)))
model.add(Dropout(0.2))
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(num_classes, activation='softmax'))

model.compile(loss='categorical_crossentropy',
              optimizer=RMSprop(),
              metrics=['accuracy'])

history = model.fit(x_train, y_train,
                    batch_size=batch_size,
                    epochs=epochs,
                    verbose=1,
                    validation_data=(x_test, y_test))

score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])

Shift + Enterで実行します。
画像みたいな感じで学習が進めば成功です! f:id:mashi-prog:20180609125116p:plain 次回はMNISTのサンプルコードを見てみたいと思います。

参考

qiita.com

takemikami.com