手元にあるPC(Ubuntu+GeForce RTX2080Ti)とGoogle Colaboratoryとで、実行結果が微妙に異なっていた原因について調べてみました。
自分用のメモと投稿の練習も兼ねて、記録しておきます。
##きっかけ
機械学習の勉強のため、CIFAR-10のデータセットを用いたチュートリアルをいろいろ試していました。
Google Colaboratoryも使えれば作業効率が上がると思って試したところ結果が異なっていたため、手元の環境と同時利用するにも不便かと思い原因を探っていました。
手元の環境では、TensorFlowは1.15.0、kerasは2.3.1を使用しています。
Google Colaboratoryの方では「%tensorflow_version 1.x」指定で使用しており、TensorFlowは1.15.2が使用されているようで、Kerasは2.2.4-tfのようです。
##どう異なっていたか
Google Colaboratoryでは
これくらいなのが、手元の環境では同一コードでも
こんな感じになってしまいました。ひどい。
何度試してみても、上下幅が大きいことには変わりませんでした。
##解決策
いろいろ試してみた結果、
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Conv2D, MaxPool2D, Flatten, BatchNormalization
from keras.optimizers import Adam, RMSprop
from keras.utils import to_categorical
from keras.callbacks import EarlyStopping, ModelCheckpoint
from keras.preprocessing.image import ImageDataGenerator
from keras.datasets import cifar10
これを
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation, Conv2D, MaxPool2D, Flatten, BatchNormalization
from tensorflow.keras.optimizers import Adam, RMSprop
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.datasets import cifar10
このように「from keras.*」の部分を「from tensorflow.keras.*」と書き換え、「from tensorflow import keras」行を追加したところ改善されました。
##修正後の結果
手元の環境でも、このくらいに落ち着きました。
詳しい人から見ると当たり前のことだったりするのかもしれませんが、こういうケースもあるんだなぁ、くらいで見ていただければと。
ちなみに、Google Colaboratory環境の方は書き換えてもあまり変わりませんでした。
Kerasのバージョンが「2.2.4-tf」となっていることから、「tensorflow.keras.*」と指定しなくても、TensorFlowに組み込まれたKerasが使用されるということかもしれません。