見出し画像

「Deep Learning」って何?--Colabを使おう!

Google driveの中に必要なデータを使ってColabでMinistデータを読み込んでみよう!

のサンプルデータを使います。

Google driveをマウント。

from google.colab import drive
drive.mount('/content/drive')

deep-learning-from-scratchディレクトリに参考データが入っています。

cd /content/drive/My Drive/deep-learning-from-scratch

としてディレクトリに映ります。

あとは実行のみです。Ministデータを読み込みます。

import sys, os
from dataset.mnist import load_mnist
(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False)
# それぞれのデータ形状を出力
print(x_train.shape) # (60000, 784)
print(t_train.shape) # (60000,)
print(x_test.shape) # (10000, 784)
print(t_test.shape) # (10000,)
(60000, 784)
(60000,)
(10000, 784)
(10000,)

と出力されます。

推論処理もしてみましょう。

import sys, os

import numpy as np
import pickle
from dataset.mnist import load_mnist
from common.functions import sigmoid, softmax

def get_data():
   (x_train, t_train), (x_test, t_test) = load_mnist(normalize=True, flatten=True, one_hot_label=False)
   return x_test, t_test

def init_network():
   with open("ch03/sample_weight.pkl", 'rb') as f:
       network = pickle.load(f)
   return network

def predict(network, x):
   W1, W2, W3 = network['W1'], network['W2'], network['W3']
   b1, b2, b3 = network['b1'], network['b2'], network['b3']
   a1 = np.dot(x, W1) + b1
   z1 = sigmoid(a1)
   a2 = np.dot(z1, W2) + b2
   z2 = sigmoid(a2)
   a3 = np.dot(z2, W3) + b3
   y = softmax(a3)
   return y

x, t = get_data()
network = init_network()
accuracy_cnt = 0
for i in range(len(x)):
   y = predict(network, x[i])
   p= np.argmax(y) # 最も確率の高い要素のインデックスを取得
   if p == t[i]:
       accuracy_cnt += 1
print("Accuracy:" + str(float(accuracy_cnt) / len(x)))
Accuracy:0.9352

と出力されます。

Colabを使うときに注意することはデータの入っているディレクトリまで移動してから実行すれば比較的簡単に実行できます。

今回は「deep-learning-from-scratch」ディレクトリまで移動してから実行しました。うまくいきました。

from dataset.mnist import load_mnist

mnist.pyに記述してあるload_mnist関数を読み込みます。

あと、

def init_network():
   with open("ch03/sample_weight.pkl", 'rb') as f:
       network = pickle.load(f)
   return network
ch03/sample_weight.pkl

はch03/を付け加えています。

こうすることで自分で環境を作らずにどこでも実行、試行できますね。

ただし、Google Driveを使えること、Googleのアカウントを持っていることなどが必要です。

ちなみに、ディレクトリの移動せずに実行する方法もあります。こちらお方がさらに簡単かも。

を参考に少し手を加えます。

sys.path.append('/content/drive/My Drive/deep-learning-from-scratch')

はアドレスを少し変更しています。

from dataset.mnist import load_mnist

を付け加えました。

import sys, os
# sys.path.append(os.pardir) # 下記に変更
sys.path.append('/content/drive/My Drive/deep-learning-from-scratch')
from dataset.mnist import load_mnist
# 最初の呼び出しは数分待ちます...
(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False)
# それぞれのデータ形状を出力
print(x_train.shape) # (60000, 784)
print(t_train.shape) # (60000,)
print(x_test.shape) # (10000, 784)
print(t_test.shape) # (10000,)

これをGoogle Driveマウント後に実行すると、

(60000, 784)
(60000,)
(10000, 784)
(10000,)

出ました!


この記事が気に入ったらサポートをしてみませんか?