トレーニングシーケンスの品質のいくつかの側面

Habréには、プロセスとしても結果としても(教育レベル)教育の質に関する多くの記事が掲載されました。



トピックは興味深いものでした。また、トレーニングシーケンスの品質が結果に影響を与えるかどうかを確認し、人工知能ロボットの ミツバチとどのように機能するかを確認するために手を合わせました。



Kerasの例から単純なネットワークを選択し 1行追加しました。 入力トレーニングシーケンスmnistの順序がMLPトレーニングの結果にどのように影響するかに興味があります。



結果は予想外で奇妙だったので、再確認する必要がありましたが、ビジネスと詳細に取りかかりましょう。



実験のアイデアはシンプルで普通です-MLPを公開されているmnistのケラスからトレーニングし、ガイドラインを取得してから、シーケンス01234567890123..7890123をトレーニングします。 生徒の教え方-少し基本、少しアセンブラー、少しフォートランなど そして最初のトレーニングに匹敵します。 結果は非常に期待されており、元のシーケンスの方が優れていますが、順序は同じです。 64回の試行のグラフです









そして、この方法でネットワークを学習し、「0」からすべての写真、次にすべて「1」、次にすべて「2」などを「9」に送信します。結果は「いいえ」です。ネットワークは学習しません。 直観的には、良くも悪くも同等の結果が期待できます-これらはすでに詳細ですが、ここに64回のトレーニング結果の表があります



Nativと実験
ステップ0

(「テスト精度:」、0.9708)

(「テスト精度:」、0.976899999999999999)

(「テスト精度:」、0.1009)

ステップ1

(「テスト精度:」、0.976899999999999999)

(「テスト精度:」、0.97219999999999995)

(「テスト精度:」、0.1009)

ステップ2

(「テスト精度:」、0.97330000000000005)

(「テスト精度:」、0.97609999999999997)

(「テスト精度:」、0.1028)

ステップ3

(「テスト精度:」、0.97040000000000004)

(「テスト精度:」、0.97160000000000002)

(「テスト精度:」、0.1135)

ステップ4

(「テスト精度:」、0.97370000000000001)

(「テスト精度:」、0.97050000000000003)

(「テスト精度:」、0.098199999999999996)

ステップ5

(「テスト精度:」、0.96999999999999997)

(「テスト精度:」、0.96909999999999996)

(「テスト精度:」、0.1009)

ステップ6

(「テスト精度:」、0.975899999999999999)

(「テスト精度:」、0.97540000000000004)

(「テスト精度:」、0.1028)

ステップ7

(「テスト精度:」、0.97360000000000002)

(「テスト精度:」、0.97350000000000003)

(「テスト精度:」、0.1135)

ステップ8

(「テスト精度:」、0.97740000000000005)

(「テスト精度:」、0.97109999999999996)

(「テスト精度:」、0.1135)

ステップ9

(「テスト精度:」、0.97260000000000002)

(「テスト精度:」、0.970899999999999999)

(「テスト精度:」、0.1135)

ステップ10

(「テスト精度:」、0.96930000000000005)

(「テスト精度:」、0.9708)

(「テスト精度:」、0.1028)

ステップ11

(「テスト精度:」、0.97419999999999995)

(「テスト精度:」、0.9709999999999999797)

(「テスト精度:」、0.1135)

ステップ12

(「テスト精度:」、0.97419999999999995)

(「テスト精度:」、0.97519999999999996)

(「テスト精度:」、0.1009)

ステップ13

(「テスト精度:」、0.97719999999999996)

(「テスト精度:」、0.97370000000000001)

(「テスト精度:」、0.1135)

ステップ14

(「テスト精度:」、0.974899999999999999)

(「テスト精度:」、0.971899999999999999)

(「テスト精度:」、0.1135)

ステップ15

(「テスト精度:」、0.9758)

(「テスト精度:」、0.97219999999999995)

(「テスト精度:」、0.104899999999999999)

ステップ16

(「テスト精度:」、0.97419999999999995)

(「テスト精度:」、0.97529999999999994)

(「テスト精度:」、0.1135)

ステップ17

(「テスト精度:」、0.97819999999999996)

(「テスト精度:」、0.97170000000000001)

(「テスト精度:」、0.1009)

ステップ18

(「テスト精度:」、0.97850000000000004)

(「テスト精度:」、0.97260000000000002)

(「テスト精度:」、0.1009)

ステップ19

(「テスト精度:」、0.97419999999999995)

(「テスト精度:」、0.975899999999999999)

(「テスト精度:」、0.0974)

ステップ20

(「テスト精度:」、0.97699999999999998)

(「テスト精度:」、0.97319999999999995)

(「テスト精度:」、0.1135)

ステップ21

(「テスト精度:」、0.97309999999999997)

(「テスト精度:」、0.97260000000000002)

(「テスト精度:」、0.1009)

ステップ22

(「テスト精度:」、0.97560000000000002)

(「テスト精度:」、0.97519999999999996)

(「テスト精度:」、0.1135)

ステップ23

(「テスト精度:」、0.97619999999999996)

(「テスト精度:」、0.97450000000000003)

(「テスト精度:」、0.1009)

ステップ24

(「テスト精度:」、0.976899999999999999)

(「テスト精度:」、0.97430000000000005)

(「テスト精度:」、0.1028)

ステップ25

(「テスト精度:」、0.97609999999999997)

(「テスト精度:」、0.97599999999999998)

(「テスト精度:」、0.1135)

ステップ26

(「テスト精度:」、0.97840000000000005)

(「テスト精度:」、0.97419999999999995)

(「テスト精度:」、0.1028)

ステップ27

(「テスト精度:」、0.96909999999999996)

(「テスト精度:」、0.97019999999999995)

(「テスト精度:」、0.1135)

ステップ28

(「テスト精度:」、0.9738)

(「テスト精度:」、0.97419999999999995)

(「テスト精度:」、0.1009)

ステップ29

(「テスト精度:」、0.97460000000000002)

(「テスト精度:」、0.97419999999999995)

(「テスト精度:」、0.1135)

ステップ30

(「テスト精度:」、0.97640000000000005)

(「テスト精度:」、0.97170000000000001)

(「テスト精度:」、0.1042)

ステップ31

(「テスト精度:」、0.97409999999999997)

(「テスト精度:」、0.95650000000000002)

(「テスト精度:」、0.089200000000000002)

ステップ32

(「テスト精度:」、0.976899999999999999)

(「テスト精度:」、0.97109999999999996)

(「テスト精度:」、0.1135)

ステップ33

(「テスト精度:」、0.97370000000000001)

(「テスト精度:」、0.97340000000000004)

(「テスト精度:」、0.1009)

ステップ34

(「テスト精度:」、0.97699999999999998)

(「テスト精度:」、0.97150000000000003)

(「テスト精度:」、0.1135)

ステップ35

(「テスト精度:」、0.97250000000000003)

(「テスト精度:」、0.97140000000000004)

(「テスト精度:」、0.1009)

ステップ36

(「テスト精度:」、0.975899999999999999)

(「テスト精度:」、0.96950000000000003)

(「テスト精度:」、0.1055)

ステップ37

(「テスト精度:」、0.97519999999999996)

(「テスト精度:」、0.96509999999999996)

(「テスト精度:」、0.1135)

ステップ38

(「テスト精度:」、0.97299999999999998)

(「テスト精度:」、0.9728)

(「テスト精度:」、0.1028)

ステップ39

(「テスト精度:」、0.96909999999999996)

(「テスト精度:」、0.97240000000000004)

(「テスト精度:」、0.1009)

ステップ40

(「テスト精度:」、0.97399999999999998)

(「テスト精度:」、0.9647999999999999999)

(「テスト精度:」、0.1135)

ステップ41

(「テスト精度:」、0.97799999999999998)

(「テスト精度:」、0.97319999999999995)

(「テスト精度:」、0.1135)

ステップ42

(「テスト精度:」、0.97419999999999995)

(「テスト精度:」、0.96340000000000003)

(「テスト精度:」、0.1009)

ステップ43

(「テスト精度:」、0.97740000000000005)

(「テスト精度:」、0.97170000000000001)

(「テスト精度:」、0.1009)

ステップ44

(「テスト精度:」、0.97160000000000002)

(「テスト精度:」、0.97389999999999999)

(「テスト精度:」、0.1135)

ステップ45

(「テスト精度:」、0.97599999999999998)

(「テスト精度:」、0.97360000000000002)

(「テスト精度:」、0.1033)

ステップ46

(「テスト精度:」、0.97389999999999999)

(「テスト精度:」、0.97019999999999995)

(「テスト精度:」、0.1135)

ステップ47

(「テスト精度:」、0.97650000000000003)

(「テスト精度:」、0.97619999999999996)

(「テスト精度:」、0.10290000000000001)

ステップ48

(「テスト精度:」、0.97409999999999997)

(「テスト精度:」、0.9647)

(「テスト精度:」、0.1009)

ステップ49

(「テスト精度:」、0.97240000000000004)

(「テスト精度:」、0.97450000000000003)

(「テスト精度:」、0.1135)

ステップ50

(「テスト精度:」、0.97570000000000001)

(「テスト精度:」、0.97040000000000004)

(「テスト精度:」、0.1135)

ステップ51

(「テスト精度:」、0.97250000000000003)

(「テスト精度:」、0.97219999999999995)

(「テスト精度:」、0.1135)

ステップ52

(「テスト精度:」、0.97230000000000005)

(「テスト精度:」、0.97309999999999997)

(「テスト精度:」、0.1135)

ステップ53

(「テスト精度:」、0.9758)

(「テスト精度:」、0.97230000000000005)

(「テスト精度:」、0.1135)

ステップ54

(「テスト精度:」、0.97770000000000001)

(「テスト精度:」、0.97260000000000002)

(「テスト精度:」、0.089200000000000002)

ステップ55

(「テスト精度:」、0.97340000000000004)

(「テスト精度:」、0.969199999999999955)

(「テスト精度:」、0.1135)

ステップ56

(「テスト精度:」、0.97170000000000001)

(「テスト精度:」、0.97070000000000001)

(「テスト精度:」、0.1028)

ステップ57

(「テスト精度:」、0.97670000000000001)

(「テスト精度:」、0.97330000000000005)

(「テスト精度:」、0.1135)

ステップ58

(「テスト精度:」、0.975899999999999999)

(「テスト精度:」、0.97370000000000001)

(「テスト精度:」、0.1033)

ステップ59

(「テスト精度:」、0.9748)

(「テスト精度:」、0.97419999999999995)

(「テスト精度:」、0.10290000000000001)

ステップ60

(「テスト精度:」、0.97409999999999997)

(「テスト精度:」、0.9709999999999999797)

(「テスト精度:」、0.1009)

ステップ61

(「テスト精度:」、0.9758)

(「テスト精度:」、0.97450000000000003)

(「テスト精度:」、0.1135)

ステップ62

(「テスト精度:」、0.97529999999999994)

(「テスト精度:」、0.97260000000000002)

(「テスト精度:」、0.1028)

ステップ63

(「テスト精度:」、0.97240000000000004)

(「テスト精度:」、0.96809999999999996)

(「テスト精度:」、0.1135)



人々がどのように行うかはわかりませんが、それは純粋にMLPのみであり、すべてのシーケンスではなく、とにかくトレーニングできることがわかります。



いくつかの場所で教えられているようにAIをトレーニングするには:最初に基本のみ、次にFortranのみ、次にアセンブラのみなど 成功しません。 / :-) /特定された特徴がすべての学習プロセス(人とロボットの両方)に固有である場合、すべての大学プログラムを慎重に研究する必要があります。



ソーステキスト
from keras import backend as K_B from keras.datasets import mnist from keras.layers import Input, Dense, Dropout from keras.models import Sequential from keras.optimizers import RMSprop from keras.utils import np_utils import numpy as np import matplotlib.pyplot as plt %matplotlib inline def MLP(ind): model = Sequential() model.add(Dense(512, activation='relu', input_shape=(width * height,))) model.add(Dropout(0.2)) model.add(Dense(512, activation='relu')) model.add(Dropout(0.2)) model.add(Dense(num_classes, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer=RMSprop(), metrics=['accuracy']) if (ind == 0): #          model.save_weights('weights.h5') # ,   else: model.load_weights('weights.h5', by_name = False) # ,   history = model.fit(X_train, Y_train, shuffle = False, #       keras   batch_size=batch_size, epochs=epochs, verbose=0, validation_data=(X_test, Y_test)) score = model.evaluate(X_test, Y_test, verbose=0) print('Test accuracy:', score[1]) K_B.clear_session() #     ,      return(score[1]) batch_size = 12 epochs = 12 hidden_size = 512 (X_train, y_train), (X_test, y_test) = mnist.load_data() num_train, width, height = X_train.shape num_test = X_test.shape[0] num_classes = np.unique(y_train).shape[0] X_train = X_train.astype('float32') X_test = X_test.astype('float32') X_train /= 255. X_test /= 255. X_train = X_train.reshape(num_train, height * width) X_test = X_test.reshape(num_test, height * width) XX_train = np.copy(X_train) yy_train = np.copy(y_train) Y_train = np_utils.to_categorical(y_train, num_classes) Y_test = np_utils.to_categorical(y_test, num_classes) steps = 64 st = np.arange(steps, dtype='int') res_N = np.arange((steps), dtype='float') res_1 = np.arange((steps), dtype='float') res_2 = np.arange((steps), dtype='float') for n in xrange(steps): # __  X_train = np.copy(XX_train) y_train = np.copy(yy_train) Y_train = np_utils.to_categorical(y_train, num_classes) print ' step ', n res_N[n] = MLP(0) # __ 00..0011..1122..2233.. .. 8899..99 perm = np.arange(num_train, dtype='int') cl = np.zeros(num_classes, dtype='int') for k in xrange(num_train): if (cl[yy_train[k]] * num_classes + yy_train[k] < num_train): perm[ cl[yy_train[k]] * num_classes + yy_train[k] ] = k cl[yy_train[k]] += 1 for k in xrange(num_train): X_train[k,...] = XX_train[perm[k],...] for k in xrange(num_train): y_train[k] = yy_train[perm[k]] Y_train = np_utils.to_categorical(y_train, num_classes) res_2[n] = MLP(2) # __ 0123..78901..7890123..789 perm = np.arange(num_train, dtype='int') j = 0 for k in xrange(num_classes): for i in xrange(num_train): if (yy_train[i] == k): perm[j] = i j += 1 for k in xrange(num_train): X_train[k,...] = XX_train[perm[k],...] y_train[k] = yy_train[perm[k]] Y_train = np_utils.to_categorical(y_train, num_classes) res_1[n] = MLP(1)
      
      







私は他の種類のネットワークをチェックしませんでしたが、このチェックはあまりテスラテスラではありませんでした。



All Articles