質問編集履歴

3

解決したので解決コード書いた。

2021/03/20 07:47

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -299,3 +299,249 @@
299
299
 
300
300
 
301
301
  デスクトップ上ではできます。
302
+
303
+
304
+
305
+
306
+
307
+ できました、ありがとうございます、以下にコード書きます、皆さん使ってみて下さい。
308
+
309
+ ```python
310
+
311
+ import sys
312
+
313
+
314
+
315
+ from google.colab import drive
316
+
317
+ drive.mount('/content/drive')
318
+
319
+
320
+
321
+ sys.path.append('/content/drive/My Drive')
322
+
323
+
324
+
325
+ import numpy as np
326
+
327
+ import ActivationFunction as AF
328
+
329
+
330
+
331
+ # 3層ニューラルネットワーク
332
+
333
+ class ThreeLayerNetwork:
334
+
335
+ # コンストラクタ
336
+
337
+ def __init__(self, inodes, hnodes, onodes, lr):
338
+
339
+ # 各レイヤーのノード数
340
+
341
+ self.inodes = inodes
342
+
343
+ self.hnodes = hnodes
344
+
345
+ self.onodes = onodes
346
+
347
+
348
+
349
+ # 学習率
350
+
351
+ self.lr = lr
352
+
353
+
354
+
355
+ # 重みの初期化
356
+
357
+ self.w_ih = np.random.normal(0.0, 1.0, (self.hnodes, self.inodes))
358
+
359
+ self.w_ho = np.random.normal(0.0, 1.0, (self.onodes, self.hnodes))
360
+
361
+
362
+
363
+ # 活性化関数
364
+
365
+ self.af = AF.sigmoid
366
+
367
+ self.daf = AF.derivative_sigmoid
368
+
369
+
370
+
371
+ # 誤差逆伝搬
372
+
373
+ def backprop(self, idata, tdata):
374
+
375
+ # 縦ベクトルに変換
376
+
377
+ o_i = np.array(idata, ndmin=2).T
378
+
379
+ t = np.array(tdata, ndmin=2).T
380
+
381
+
382
+
383
+ # 隠れ層
384
+
385
+ x_h = np.dot(self.w_ih, o_i)
386
+
387
+ o_h = self.af(x_h)
388
+
389
+
390
+
391
+ # 出力層
392
+
393
+ x_o = np.dot(self.w_ho, o_h)
394
+
395
+ o_o = self.af(x_o)
396
+
397
+
398
+
399
+ # 誤差計算
400
+
401
+ e_o = (t - o_o)
402
+
403
+ e_h = np.dot(self.w_ho.T, e_o)
404
+
405
+
406
+
407
+ # 重みの更新
408
+
409
+ self.w_ho += self.lr * np.dot((e_o * self.daf(o_o)), o_h.T)
410
+
411
+ self.w_ih += self.lr * np.dot((e_h * self.daf(o_h)), o_i.T)
412
+
413
+
414
+
415
+
416
+
417
+ # 順伝搬
418
+
419
+ def feedforward(self, idata):
420
+
421
+ # 入力のリストを縦ベクトルに変換
422
+
423
+ o_i = np.array(idata, ndmin=2).T
424
+
425
+
426
+
427
+ # 隠れ層
428
+
429
+ x_h = np.dot(self.w_ih, o_i)
430
+
431
+ o_h = self.af(x_h)
432
+
433
+
434
+
435
+ # 出力層
436
+
437
+ x_o = np.dot(self.w_ho, o_h)
438
+
439
+ o_o = self.af(x_o)
440
+
441
+
442
+
443
+ return o_o
444
+
445
+
446
+
447
+ if __name__=='__main__':
448
+
449
+ # パラメータ
450
+
451
+ inodes = 784
452
+
453
+ hnodes = 100
454
+
455
+ onodes = 10
456
+
457
+ lr = 0.3
458
+
459
+
460
+
461
+ # ニューラルネットワークの初期化
462
+
463
+ nn = ThreeLayerNetwork(inodes, hnodes, onodes, lr)
464
+
465
+
466
+
467
+ # トレーニングデータのロード
468
+
469
+ training_data_file = open('drive/My Drive/mnist_dataset/mnist_train.csv', 'r')
470
+
471
+ training_data_list = training_data_file.readlines()
472
+
473
+ training_data_file.close()
474
+
475
+
476
+
477
+ # テストデータのロード
478
+
479
+ test_data_file = open('drive/My Drive/mnist_dataset/mnist_test.csv')
480
+
481
+ test_data_list = test_data_file.readlines()
482
+
483
+ test_data_file.close()
484
+
485
+
486
+
487
+ # 学習
488
+
489
+ epoch = 10
490
+
491
+ for e in range(epoch):
492
+
493
+ print('#epoch ', e)
494
+
495
+ data_size = len(training_data_list)
496
+
497
+ for i in range(data_size):
498
+
499
+ if i % 1000 == 0:
500
+
501
+ print(' train: {0:>5d} / {1:>5d}'.format(i, data_size))
502
+
503
+ val = training_data_list[i].split(',')
504
+
505
+ idata = (np.asfarray(val[1:]) / 255.0 * 0.99) + 0.01
506
+
507
+ tdata = np.zeros(onodes) + 0.01
508
+
509
+ tdata[int(val[0])] = 0.99
510
+
511
+ nn.backprop(idata, tdata)
512
+
513
+ pass
514
+
515
+ pass
516
+
517
+
518
+
519
+ # テスト
520
+
521
+ scoreboard = []
522
+
523
+ for record in test_data_list:
524
+
525
+ val = record.split(',')
526
+
527
+ idata = (np.asfarray(val[1:]) / 255.0 * 0.99) + 0.01
528
+
529
+ tlabel = int(val[0])
530
+
531
+ predict = nn.feedforward(idata)
532
+
533
+ plabel = np.argmax(predict)
534
+
535
+ scoreboard.append(tlabel == plabel)
536
+
537
+ pass
538
+
539
+
540
+
541
+ scoreboard_array = np.asarray(scoreboard)
542
+
543
+ print('performance: ', scoreboard_array.sum() / scoreboard_array.size)
544
+
545
+ コード
546
+
547
+ ```

2

修正します。

2021/03/20 07:47

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 自分でニューラルネットワークを作ろう
1
+ 自分でニューラルネットワークを作ろうのプログラムをGoogleCollaboratoryで動かしたい。
test CHANGED
@@ -1,6 +1,6 @@
1
1
  https://qiita.com/takahiro_itazuri/items/d2bea1c643d7cca11352
2
2
 
3
- ここを参考にしたのですが、以下そのまま転載。
3
+ プログラムはここを参考にしたのですが、以下そのまま転載。
4
4
 
5
5
 
6
6
 
@@ -287,3 +287,15 @@
287
287
 
288
288
 
289
289
  と出ます、どうすれば良いでしょうか?
290
+
291
+
292
+
293
+ また、パスは
294
+
295
+ https://blog.mktia.com/file-access-from-colab-to-google-drive/
296
+
297
+ ここを参考に、そのまま書きました、そのままなので間違ってると思います。
298
+
299
+
300
+
301
+ デスクトップ上ではできます。

1

一部、編集。

2021/03/20 01:26

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -6,6 +6,18 @@
6
6
 
7
7
  ```python
8
8
 
9
+ from google.colab import drive
10
+
11
+ drive.mount('/content/drive')
12
+
13
+
14
+
15
+ import sys
16
+
17
+ sys.path.append('/content/drive/My Drive/colab')
18
+
19
+
20
+
9
21
  import numpy as np
10
22
 
11
23
  import ActivationFunction as AF
@@ -234,19 +246,23 @@
234
246
 
235
247
 
236
248
 
249
+ Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
250
+
251
+ ---------------------------------------------------------------------------
252
+
237
253
  ModuleNotFoundError Traceback (most recent call last)
238
254
 
239
- <ipython-input-9-e65fe1f73758> in <module>()
255
+ <ipython-input-5-21a5c5cca7e6> in <module>()
256
+
240
-
257
+ 6
258
+
241
- 1 import numpy as np
259
+ 7 import numpy as np
242
-
260
+
243
- ----> 2 import ActivationFunction as AF
261
+ ----> 8 import ActivationFunction as AF
244
-
262
+
245
- 3
263
+ 9
246
-
264
+
247
- 4 # 3層ニューラルネットワーク
265
+ 10 # 3層ニューラルネットワーク
248
-
249
- 5 class ThreeLayerNetwork:
250
266
 
251
267
 
252
268
 
@@ -254,4 +270,20 @@
254
270
 
255
271
 
256
272
 
273
+ ---------------------------------------------------------------------------
274
+
275
+ NOTE: If your import is failing due to a missing package, you can
276
+
277
+ manually install dependencies using either !pip or !apt.
278
+
279
+
280
+
281
+ To view examples of installing some common dependencies, click the
282
+
283
+ "Open Examples" button below.
284
+
285
+ ---------------------------------------------------------------------------
286
+
287
+
288
+
257
289
  と出ます、どうすれば良いでしょうか?