بررسی نسبت Validation به loss - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

بررسی نسبت Validation به loss

0 امتیاز

با سلام. مدل cnn ای دارم اموزش میدم که روی تصاویر اسپکتروگرام اموزش میبینه. به دقت ۹۴ رسیدم ولی val_loss خیلی بالاست و ۰.۴۷ هست. از adam و lr=0.001 و categorical_crossentropy با تعداد کلاس ۱۲۰۰ تا استفاده میکنم. Dataaugmentation  هم استفاده میکنم.
بنظرتون اشکال از کجای کاره؟ بعد از لایه های conv یک لایه dense 4096 دارم که قبل و بعدش از dropout 0.5 استفاده کردم. ودر نهایت dense 1200 .

def create_model():
  return tf.keras.Sequential(
      [tf.keras.layers.Conv2D(16,(3,3),activation='relu',input_shape=(128,161,1),padding='same'),
       tf.keras.layers.BatchNormalization(),

       tf.keras.layers.Conv2D(16,(3,3),activation='relu',padding='same'),
       tf.keras.layers.BatchNormalization(),
       tf.keras.layers.MaxPooling2D(pool_size=(2,2),strides=(2,2)),

       tf.keras.layers.Conv2D(32,(3,3),activation='relu',padding='same'),
       tf.keras.layers.BatchNormalization(),

       tf.keras.layers.Conv2D(32,(3,3),activation='relu',padding='same'),
       tf.keras.layers.BatchNormalization(),
       tf.keras.layers.MaxPooling2D(pool_size=(2,2),strides=(2,2)),

       tf.keras.layers.Conv2D(64,(3,3),activation='relu',padding='same'),
       tf.keras.layers.BatchNormalization(),

       tf.keras.layers.Conv2D(64,(3,3),activation='relu',padding='same'),
       tf.keras.layers.BatchNormalization(),
       tf.keras.layers.MaxPooling2D(pool_size=(2,2),strides=(2,2)),

       tf.keras.layers.Conv2D(128,(3,3),activation='relu',padding='same'),
       tf.keras.layers.BatchNormalization(),

       tf.keras.layers.Conv2D(128,(3,3),activation='relu',padding='same'),
       tf.keras.layers.BatchNormalization(),
       tf.keras.layers.MaxPooling2D(pool_size=(2,2),strides=(2,2)),

       tf.keras.layers.Conv2D(256,(3,3),activation='relu',padding='same'),
       tf.keras.layers.BatchNormalization(),

       tf.keras.layers.Conv2D(256,(3,3),activation='relu',padding='same'),
       tf.keras.layers.BatchNormalization(),
       tf.keras.layers.MaxPooling2D(pool_size=(2,2),strides=(2,2)),

       tf.keras.layers.GlobalAveragePooling2D(),
       tf.keras.layers.Dropout(0.5),

       tf.keras.layers.Dense(4096,activation='relu'),

       tf.keras.layers.Dropout(0.5),

       tf.keras.layers.Dense(1200,activation='softmax')])

with tf.device("/device:GPU:0"):
    model=create_model()
    model.compile(optimizer=tf.keras.optimizers.Adam(lr=0.001),
                  loss=tf.keras.losses.CategoricalCrossentropy(),
                  metrics=['accuracy'])


my_callbacks=[
              tf.keras.callbacks.ModelCheckpoint(filepath="/content/drive/My Drive/best.h5",verbose=1,save_best_only=True,monitor='val_accuracy')]
model.fit(trainAug.flow(x_train,y_train,batch_size=512),epochs=700,steps_per_epoch=len(x_train)//512,validation_data=(x_val,y_val),
                    validation_steps=len(x_val)//512,callbacks=my_callbacks)

 

سوال شده تیر 24, 1399  بوسیله ی شبنم (امتیاز 25)   4 5
ویرایش شده تیر 24, 1399 بوسیله ی مصطفی ساتکی

1 پاسخ

0 امتیاز
دلایل مختلفی می تواند وجود داشته باشد که چرا از دست دادن اعتبار شما بالا است، حتی اگر دقت شما 94٪ باشد. برخی از دلایل احتمالی عبارتند از:
 
1- برازش بیش از حد: مدل شما ممکن است داده های آموزشی را بیش از حد برازش دهد، به این معنی که نویز و نوسانات تصادفی در داده های آموزشی را خیلی خوب یاد می گیرد، اما به خوبی به داده های اعتبار سنجی تعمیم نمی دهد.
 
2- معماری بیش از حد پیچیده: ممکن است مدل شما برای انجام کار بسیار پیچیده باشد، که منجر به همگرایی بیش از حد یا کندی می شود. می توانید سعی کنید تعداد پارامترها را در مدل خود کاهش دهید یا معماری را ساده کنید.
 
3- نرخ یادگیری: میزان یادگیری ممکن است خیلی زیاد یا خیلی کم باشد. می‌توانید نرخ یادگیری را کاهش یا افزایش دهید تا ببینید آیا تأثیری بر کاهش اعتبار دارد یا خیر.
 
4- عدم تعادل داده: اگر یک مجموعه داده نامتعادل دارید، ممکن است منجر به عملکرد ضعیف در کلاس اقلیت شود. می‌توانید نمونه‌برداری بیش‌ازحد از کلاس اقلیت، کم‌نمونه‌گیری از کلاس اکثریت یا استفاده از تابع کاهش وزنی را امتحان کنید.
 
5- داده‌های با کیفیت پایین: داده‌های شما ممکن است نویز یا مصنوعات زیادی داشته باشد که نشان دهنده سیگنال اصلی نباشد. می‌توانید داده‌های خود را از قبل پردازش کنید یا از تکنیک‌های پیچیده‌تر افزایش داده برای بهبود کیفیت داده‌های خود استفاده کنید.
 
6- روش بهینه‌سازی نامناسب: روش بهینه‌سازی آدام ممکن است برای مشکل شما مناسب نباشد، می‌توانید روش‌های بهینه‌سازی مختلف مانند نزول گرادیان تصادفی (SGD) یا Adagrad را امتحان کنید تا ببینید آیا عملکرد مدل شما را بهبود می‌بخشد یا خیر.
 
همچنین ممکن است که از دست دادن اعتبار بالا ممکن است به دلیل ترکیبی از این عوامل باشد. برای رفع مشکل، باید آزمایش و تجزیه و تحلیل انجام دهید تا علت اصلی را مشخص کنید.
پاسخ داده شده بهمن 14, 1401 بوسیله ی عباس همت خواه (امتیاز 436)   2 8 13
...