Google 공동체와 환경에서 결과가 미묘하게 다른 원인

수중에 있는 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를 사용할 수 있습니다.

좋은 웹페이지 즐겨찾기