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で実行します。
画像みたいな感じで学習が進めば成功です!
次回はMNISTのサンプルコードを見てみたいと思います。