https://qiita.com/takahiro_itazuri/items/d2bea1c643d7cca11352
プログラムはここを参考にしたのですが、以下そのまま転載。
python
1from google.colab import drive 2drive.mount('/content/drive') 3 4import sys 5sys.path.append('/content/drive/My Drive/colab') 6 7import numpy as np 8import ActivationFunction as AF 9 10# 3層ニューラルネットワーク 11class ThreeLayerNetwork: 12 # コンストラクタ 13 def __init__(self, inodes, hnodes, onodes, lr): 14 # 各レイヤーのノード数 15 self.inodes = inodes 16 self.hnodes = hnodes 17 self.onodes = onodes 18 19 # 学習率 20 self.lr = lr 21 22 # 重みの初期化 23 self.w_ih = np.random.normal(0.0, 1.0, (self.hnodes, self.inodes)) 24 self.w_ho = np.random.normal(0.0, 1.0, (self.onodes, self.hnodes)) 25 26 # 活性化関数 27 self.af = AF.sigmoid 28 self.daf = AF.derivative_sigmoid 29 30 # 誤差逆伝搬 31 def backprop(self, idata, tdata): 32 # 縦ベクトルに変換 33 o_i = np.array(idata, ndmin=2).T 34 t = np.array(tdata, ndmin=2).T 35 36 # 隠れ層 37 x_h = np.dot(self.w_ih, o_i) 38 o_h = self.af(x_h) 39 40 # 出力層 41 x_o = np.dot(self.w_ho, o_h) 42 o_o = self.af(x_o) 43 44 # 誤差計算 45 e_o = (t - o_o) 46 e_h = np.dot(self.w_ho.T, e_o) 47 48 # 重みの更新 49 self.w_ho += self.lr * np.dot((e_o * self.daf(o_o)), o_h.T) 50 self.w_ih += self.lr * np.dot((e_h * self.daf(o_h)), o_i.T) 51 52 53 # 順伝搬 54 def feedforward(self, idata): 55 # 入力のリストを縦ベクトルに変換 56 o_i = np.array(idata, ndmin=2).T 57 58 # 隠れ層 59 x_h = np.dot(self.w_ih, o_i) 60 o_h = self.af(x_h) 61 62 # 出力層 63 x_o = np.dot(self.w_ho, o_h) 64 o_o = self.af(x_o) 65 66 return o_o 67 68if __name__=='__main__': 69 # パラメータ 70 inodes = 784 71 hnodes = 100 72 onodes = 10 73 lr = 0.3 74 75 # ニューラルネットワークの初期化 76 nn = ThreeLayerNetwork(inodes, hnodes, onodes, lr) 77 78 # トレーニングデータのロード 79 training_data_file = open('mnist_dataset/mnist_train.csv', 'r') 80 training_data_list = training_data_file.readlines() 81 training_data_file.close() 82 83 # テストデータのロード 84 test_data_file = open('mnist_dataset/mnist_test.csv') 85 test_data_list = test_data_file.readlines() 86 test_data_file.close() 87 88 # 学習 89 epoch = 10 90 for e in range(epoch): 91 print('#epoch ', e) 92 data_size = len(training_data_list) 93 for i in range(data_size): 94 if i % 1000 == 0: 95 print(' train: {0:>5d} / {1:>5d}'.format(i, data_size)) 96 val = training_data_list[i].split(',') 97 idata = (np.asfarray(val[1:]) / 255.0 * 0.99) + 0.01 98 tdata = np.zeros(onodes) + 0.01 99 tdata[int(val[0])] = 0.99 100 nn.backprop(idata, tdata) 101 pass 102 pass 103 104 # テスト 105 scoreboard = [] 106 for record in test_data_list: 107 val = record.split(',') 108 idata = (np.asfarray(val[1:]) / 255.0 * 0.99) + 0.01 109 tlabel = int(val[0]) 110 predict = nn.feedforward(idata) 111 plabel = np.argmax(predict) 112 scoreboard.append(tlabel == plabel) 113 pass 114 115 scoreboard_array = np.asarray(scoreboard) 116 print('performance: ', scoreboard_array.sum() / scoreboard_array.size)
これをそのままGoogleCollaboratoryにコピペして実行しても、
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-5-21a5c5cca7e6> in <module>()
6
7 import numpy as np
----> 8 import ActivationFunction as AF
9
10 # 3層ニューラルネットワーク
ModuleNotFoundError: No module named 'ActivationFunction'
NOTE: If your import is failing due to a missing package, you can
manually install dependencies using either !pip or !apt.
To view examples of installing some common dependencies, click the
"Open Examples" button below.
と出ます、どうすれば良いでしょうか?
また、パスは
https://blog.mktia.com/file-access-from-colab-to-google-drive/
ここを参考に、そのまま書きました、そのままなので間違ってると思います。
デスクトップ上ではできます。
できました、ありがとうございます、以下にコード書きます、皆さん使ってみて下さい。
python
1import sys 2 3from google.colab import drive 4drive.mount('/content/drive') 5 6sys.path.append('/content/drive/My Drive') 7 8import numpy as np 9import ActivationFunction as AF 10 11# 3層ニューラルネットワーク 12class ThreeLayerNetwork: 13 # コンストラクタ 14 def __init__(self, inodes, hnodes, onodes, lr): 15 # 各レイヤーのノード数 16 self.inodes = inodes 17 self.hnodes = hnodes 18 self.onodes = onodes 19 20 # 学習率 21 self.lr = lr 22 23 # 重みの初期化 24 self.w_ih = np.random.normal(0.0, 1.0, (self.hnodes, self.inodes)) 25 self.w_ho = np.random.normal(0.0, 1.0, (self.onodes, self.hnodes)) 26 27 # 活性化関数 28 self.af = AF.sigmoid 29 self.daf = AF.derivative_sigmoid 30 31 # 誤差逆伝搬 32 def backprop(self, idata, tdata): 33 # 縦ベクトルに変換 34 o_i = np.array(idata, ndmin=2).T 35 t = np.array(tdata, ndmin=2).T 36 37 # 隠れ層 38 x_h = np.dot(self.w_ih, o_i) 39 o_h = self.af(x_h) 40 41 # 出力層 42 x_o = np.dot(self.w_ho, o_h) 43 o_o = self.af(x_o) 44 45 # 誤差計算 46 e_o = (t - o_o) 47 e_h = np.dot(self.w_ho.T, e_o) 48 49 # 重みの更新 50 self.w_ho += self.lr * np.dot((e_o * self.daf(o_o)), o_h.T) 51 self.w_ih += self.lr * np.dot((e_h * self.daf(o_h)), o_i.T) 52 53 54 # 順伝搬 55 def feedforward(self, idata): 56 # 入力のリストを縦ベクトルに変換 57 o_i = np.array(idata, ndmin=2).T 58 59 # 隠れ層 60 x_h = np.dot(self.w_ih, o_i) 61 o_h = self.af(x_h) 62 63 # 出力層 64 x_o = np.dot(self.w_ho, o_h) 65 o_o = self.af(x_o) 66 67 return o_o 68 69if __name__=='__main__': 70 # パラメータ 71 inodes = 784 72 hnodes = 100 73 onodes = 10 74 lr = 0.3 75 76 # ニューラルネットワークの初期化 77 nn = ThreeLayerNetwork(inodes, hnodes, onodes, lr) 78 79 # トレーニングデータのロード 80 training_data_file = open('drive/My Drive/mnist_dataset/mnist_train.csv', 'r') 81 training_data_list = training_data_file.readlines() 82 training_data_file.close() 83 84 # テストデータのロード 85 test_data_file = open('drive/My Drive/mnist_dataset/mnist_test.csv') 86 test_data_list = test_data_file.readlines() 87 test_data_file.close() 88 89 # 学習 90 epoch = 10 91 for e in range(epoch): 92 print('#epoch ', e) 93 data_size = len(training_data_list) 94 for i in range(data_size): 95 if i % 1000 == 0: 96 print(' train: {0:>5d} / {1:>5d}'.format(i, data_size)) 97 val = training_data_list[i].split(',') 98 idata = (np.asfarray(val[1:]) / 255.0 * 0.99) + 0.01 99 tdata = np.zeros(onodes) + 0.01 100 tdata[int(val[0])] = 0.99 101 nn.backprop(idata, tdata) 102 pass 103 pass 104 105 # テスト 106 scoreboard = [] 107 for record in test_data_list: 108 val = record.split(',') 109 idata = (np.asfarray(val[1:]) / 255.0 * 0.99) + 0.01 110 tlabel = int(val[0]) 111 predict = nn.feedforward(idata) 112 plabel = np.argmax(predict) 113 scoreboard.append(tlabel == plabel) 114 pass 115 116 scoreboard_array = np.asarray(scoreboard) 117 print('performance: ', scoreboard_array.sum() / scoreboard_array.size) 118コード
回答1件
あなたの回答
tips
プレビュー