前提・実現したいこと
Xceptionモデルの学習を一から行おうと思い、ImageNetのデータから学習を行ったのですが精度が早いうちから頭打ちになりうまくいっておりません。
分類問題の精度を上げるためにどうすればよいかご協力をお願いできますでしょうか。
optimizerやlearning rate等は文献に基づいて設定しておりますがあまり効果が見られません
– Optimizer: SGD
– Momentum: 0.9
– Initial learning rate: 0.045
– Learning rate decay: decay of rate 0.94 every 2 epochs
PC環境の問題(Google ColabのHDD容量不足)でImageNetにある1000 class中の500 classしか使用していないのですが、影響はありますでしょうか
該当のソースコード
Python
1import tensorflow as tf 2import tensorflow.keras as keras 3from tensorflow.keras import layers, losses, models, optimizers, callbacks, applications, preprocessing 4 5# scheduler 6def scheduler(epoch, lr): 7 return 0.045*0.94**(epoch/2.0) 8lr_decay = callbacks.LearningRateScheduler(scheduler) 9 10# early stopping 11EarlyStopping = callbacks.EarlyStopping(monitor='val_loss', min_delta=0, patience=500, verbose=0, mode='auto', restore_best_weights=True) 12 13# build xception 14inputs = tf.keras.Input(shape=(224, 224, 3)) 15x = tf.cast(inputs, tf.float32) 16x = tf.keras.applications.xception.preprocess_input(x) #preprocess image 17x = applications.xception.Xception(weights=None, include_top=False,)(x, training=True) 18x = layers.GlobalAveragePooling2D()(x) 19x = layers.Dense(nb_class)(x) 20outputs = layers.Softmax()(x) 21model = tf.keras.Model(inputs, outputs) 22 23model.compile(optimizer=optimizers.SGD(momentum=0.9, nesterov=True), 24 loss = 'categorical_crossentropy', 25 metrics= ['accuracy']) 26 27# fitting data 28history = model.fit(image_gen(df_train_chunk, 224, 224, ), #feed images with a generator 29 batch_size = 32, 30 steps_per_epoch = 64, 31 epochs=1000000000, 32 validation_data = image_gen(df_valid_chunk, 224, 224, ), #feed images with a generator 33 validation_steps = 64, 34 callbacks = [lr_decay, EarlyStopping], 35 ) 36
発生している問題・エラーメッセージ
本来は精度が0.8程度まで行くはずなのですが、行きません
補足情報(FW/ツールのバージョンなど)
Google Colab使用
Stackoverflowで同様の質問中
回答1件
あなたの回答
tips
プレビュー