機械学習初心者です。
ニューラルネットワークで層数をと精度がどの様な関係にあるのか
活性化関数を使わずに実験を行なっていました。
実験とはMNISTの画像分類をしています。
そうすると、
2層から4層までは精度は上昇していましたが、
5層目から急に精度が落ちてしまい
5層目以降では飽和してしまいました。
なお、検証は10層まで行いました。
5層目から急に精度が落ちた原因の考察がわからず悩んでいます。
何かアドバイスまたは参考になるサイトや文献がありましたら
教えていただけると助かります。
よろしくお願い致します。
ソースは下記です。
Python
1from __future__ import print_function 2import numpy as np 3from keras.datasets import mnist 4from keras.models import Sequential 5from keras.layers.core import Dense, Dropout, Activation 6from keras.optimizers import SGD 7from keras.utils import np_utils 8from make_tensorboard import make_tensorboard 9 10 11np.random.seed(1671) # for reproducibility 12 13# network and training 14NB_EPOCH = 20 15BATCH_SIZE = 128 16VERBOSE = 1 17NB_CLASSES = 10 # number of outputs = number of digits 18OPTIMIZER = SGD() # optimizer, explained later in this chapter 19N_HIDDEN = 128 20VALIDATION_SPLIT = 0.2 # how much TRAIN is reserved for VALIDATION 21DROPOUT = 0.3 22 23# data: shuffled and split between train and test sets 24(X_train, y_train), (X_test, y_test) = mnist.load_data() 25 26# X_train is 60000 rows of 28x28 values --> reshaped in 60000 x 784 27RESHAPED = 784 28# 29X_train = X_train.reshape(60000, RESHAPED) 30X_test = X_test.reshape(10000, RESHAPED) 31X_train = X_train.astype('float32') 32X_test = X_test.astype('float32') 33 34# normalize 35X_train /= 255 36X_test /= 255 37print(X_train.shape[0], 'train samples') 38print(X_test.shape[0], 'test samples') 39 40# convert class vectors to binary class matrices 41Y_train = np_utils.to_categorical(y_train, NB_CLASSES) 42Y_test = np_utils.to_categorical(y_test, NB_CLASSES) 43 44# M_HIDDEN hidden layers 45# 10 outputs 46# final stage is softmax 47 48model = Sequential() 49model.add(Dense(N_HIDDEN, input_shape=(RESHAPED,))) 50 51model.add(Dense(N_HIDDEN)) 52model.add(Dense(N_HIDDEN))#この行のみを増やして実験 53 54 55model.add(Dense(NB_CLASSES)) 56model.add(Activation('softmax')) 57model.summary() 58 59model.compile(loss='categorical_crossentropy', 60 optimizer=OPTIMIZER, 61 metrics=['accuracy']) 62 63callbacks = [make_tensorboard(set_dir_name='keras_MINST_V3')] 64 65model.fit(X_train, Y_train, 66 batch_size=BATCH_SIZE, epochs=NB_EPOCH, 67 callbacks=callbacks, 68 verbose=VERBOSE, validation_split=VALIDATION_SPLIT) 69 70score = model.evaluate(X_test, Y_test, verbose=VERBOSE) 71print("\nTest score:", score[0]) 72print('Test accuracy:', score[1]) 73
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/25 14:04
2021/01/25 14:25 編集
2021/01/26 02:25