環境:macOS catalina, pipenv, pyenv, vs code
Kerasの昔のサンプルコードを試そうと思って、詰まったのでメモ。
https://github.com/keras-team/keras/blob/master/examples/mnist_mlp.py
最近、kerasを始めた方だと、環境構築の情報やkerasのサンプルコードが以前のままになっているケースがあるので要注意。
簡単な解決方法
googleのcolaboratoryを使うと、すでに前のバージョンのtensorflowやkerasのセットアップがされていいます。下記のコードを前にインサートするだけでOK。
%tensorflow_version 1.x
#以前のKeras(TensolFlow1.x)環境を再現する。
kerasは、2019年10月以前、Tensorflow1.xをバックグラウンドにして動いていました。コードの書式も少し変更になっています。そのため、古いコードを試す場合は、pipenvなどで当時の依存関係を再現する必要があります。
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
tensorflow = "==1.15"
keras = "==2.2.4"
[requires]
python_version = "3.6"
tensorflowは1.x、kerasは2.2.4までは動くことを確認しています。pythonも、python 3.8
だとtensorflow 1.x
がうまく動かないことがあるようです。pyenv
をインストールした上でpython3.6
をPipleに指定して仮想環境を作るなどしてください。
現在のKeras(tensorFlow 2.0以降)との書式の違い
表記の細かく変更があるようです。layer関連の関数は、小区分がなくなって、すべてkeras.layersにまとまったようです。
from keras.models import Sequential, Model, load_model
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.layers.core import Dense, Dropout, Activation, Flatten
from keras.layers.pooling import GlobalAveragePooling2D
from keras.callbacks import EarlyStopping, ReduceLROnPlateau
from keras.preprocessing.image import ImageDataGenerator
↓
from tensorflow.keras.models import Sequential, Model, load_model
from tensorflow.keras.layers import Conv2D, MaxPooling2D
from tensorflow.keras.layers import Dense, Dropout, Flatten
from tensorflow.keras.layers import GlobalAveragePooling2D
from tensorflow.keras.callbacks import EarlyStopping, ReduceLROnPlateau
from tensorflow.keras.preprocessing.image import ImageDataGenerator
#GPU関連の依存関係
GPUを使う場合は、keras、CUDA、cuDNNのバージョン、GPUのチップの種類との依存関係もあります。ここでつまづくことも多いので、依存関係をきちんと確認してインストールして下さいませ〜。