「ゼロから作るDeepLearning」のサンプルコードをGoogle Colaboratoryで動かしてみている。
3章でうまく動かなかったところをメモしておく。

3.6.1 MNISTデータセット

p.73

【問題点】 MNISTデータのダウンロードが出来ない

【原因】 データのあるサーバからエラーが返されているらしい 1

【対策】 データをダウンロードする代わりに、keras等からMNISTデータを取得する 2

from keras.datasets import mnist
(x_train, t_train), (x_test, t_test) = mnist.load_data()

# それぞれのデータの形状を出力
print(x_train.shape)
print(t_train.shape)
print(x_test.shape)
print(t_test.shape)

【備考】

  • Google Drive上の別ファイルをインポートするには、Google Driveをマウントする必要がある
    from google.colab import drive
    drive.mount('/content/drive', force_remount=True)
    

    上記コードを実行後、ブラウザ上で認証手続きを行うとマウントできる
    インポートは以下の要領で行う

import sys
sys.path.append('/content/drive/My Drive/ColabNotebooks/path/to/dataset/')
from mnist import load_mnist
  • x_trainx_testのサイズに注意
    • サンプルコードでは768個の要素からなる1次元配列として取得されるが、kerasで取得したデータは28*28の2次元配列のまま取得される

p.74〜75

【問題点】
MNIST画像の表示ができない

【原因】
Google Colaboratory上だとPILImageshow()がうまく動かない

【対策】
代わりにIPython.display()を使う 3

from PIL import Image
from IPython.display import display

def img_show(img):
    pil_img = Image.fromarray(np.uint8(img))
    display(pil_img)

3.6.2 ニューラルネットワークの推論処理

p.76〜77

【問題点】
MNISTのデータをkerasから取得したが、データのshapeがサンプルコードと違う

【対策】
以下の要領で変換したデータを使う

reshaped_data = x_test.reshape(10000, 784)  

【備考】
サンプルコードでは画像データを正規化しているので、同様の処理をすると本に書かれている通りのAccuracyが出る

normalized_data = x_test.reshape(10000, 784) / 255.0