Không biết mọi người có ai biết về vấn đề này không có thể góp ý cho mình?

1 year ago 16 Replies
QN
Quang Nhat
4 years ago

[Solved] Xin chào mọi người.

Mình đang làm bài toán phân loại các hãng xe dùng Standford dataset (196 classes) với keras. Mình dùng mobilenet để train model trên Colab nhưng train loss tuy có giảm nhưng nhất nhỏ, train gần 3 tiếng thì accuracy cũng chỉ được ~1.3%.

Mình tham khảo notebook trên Kaggle thì thấy có người dùng fastai 10 epochs là đã được 60% accuracy rồi. Không biết mọi người có ai biết về vấn đề này không có thể góp ý cho mình?

60 Likes

Replies

Bồ Quang Đông 4 years ago

Bạn thử dùng Vgg 19 xem ntn

0 Likes
Vũ Đình Phong 4 years ago

Klq mà bài này tớ train dc 93% test accuracy :v

0 Likes
Quang Nhat (4 years ago)

Bạn có thể share source code được ko?

Quang Nhat 4 years ago

Xin chân thành cảm ơn cả nhà. Mình tham khảo ý kiến của a Tiệp, các bạn và hỏi thêm bác Google thì đã sửa được lỗi. Lý do khiến model của mình gặp lỗi như trên:

  1. Mình sử dụng pretrain-model với weight từ image-net nhưng không freeze layers để ngăn việc thay đổi weight trong các layers chính.

  2. Do bài toán có quá nhiều classes (196 classes) trong khi learning rate nhỏ nên loss giảm rất chậm.

Cách khắc phục:

  1. Freeze tất cả layer trừ 4 layers cuối cùng

  2. Remove layers output softmax 1000 và thay bằng dense layer 196

  3. Set learning rate là 0.01 và train cho đến khi giá trị loss giảm không đáng kể, sau đó giảm learning rate và train tiếp.

Kết quả là sau 40 epochs thì mình đã có train acc ~ 78%.

4 Likes
Nguyễn Đình Bảo Ân (4 years ago)

Nếu được thì share code cho mình tham khảo với nhé. Github hay colab cũng được.

Quang Nhat (4 years ago)

Nguyễn Đình Bảo Ân Mình dạo này đang bận quá chưa clean lại code trên notebook được, cuối tuần này mình sẽ share trên github nhé.

Quang Nhat (4 years ago)

Nguyễn Đình Bảo Ân Source code: https://github.com/quangnhat185/Machine_learning_projects/tree/master/Car_brand_classification

Bi Lê 4 years ago

E xin góp chút ngu kiến:

  1. có thể là underfitting -> chọn model khác phức tạp hơn tí
  2. thuật toán ko hội tụ dc -> a ráng mò learning rate đừng để quá to/quá nhỏ
  3. a áp model fastai a nói trên về fine-tune tí xem acc có lên tí nào hông
1 Like
Anhnam Xtanh 4 years ago

cái keras này còn bị kết quả evaluate trên tập validate và acc trên validate set không giống nhau nữa :3

0 Likes
Lê Minh Huy 4 years ago

Ban check lai input va label xem co matching ko

0 Likes
Nguyen Canh 4 years ago

Mình xem qua mô hình mobilenet thì nó output softmax 1000, sau đó bạn lại dùng Dense -softmax 196. Bạn dùng pretrain model lớn cho 1 bài toán nhỏ hơn nên mình nghĩ ko p underfiting. có 2 cách. 1 là bạn giữ nguyên mô hình trên nhưng random lại weight của toàn mạng.... 2 là bạn thử bỏ lớp softmax cuối của mobile và chỉ dùng softmax cho 196 output... vì activation softmax 2 lớp liên tiếp có thể có vấn đề nó giống như việc bạn bắt buộc input của lớp cuối phải là binary ấy.

1 Like
Học HIếu 4 years ago

Bạn bỏ lớp sofmax cuối cho 1000 đi, rồi thay bằng 196. Bạn fine tuning cho 2 lớp cuối xem thế nào.

1 Like
Thái Thanh Tuấn 4 years ago

Bạn train từ đầu hay load pretrained rồi train tiếp tục vậy bạn? Bạn có thử với các model khác như vgg hoặc ... chưa ta? Learning rate bạn set cho nó auto update thử xem nó hiệu quả hơn không? Nếu hiệu quả thì bạn giám sát rồi chỉnh tay tốt hơn.

1 Like
Tiep VuHuu 4 years ago

Ba nguyên ngân khả dĩ nhất:

  1. Mô hình bị underfitting nặng, mobilenet quá nhỏ.
  2. Bạn huấn luyện mạng từ đầu chứ không qua pretrained mobienet
  3. Learning rate quá nhỏ!
18 Likes
Quang Nhat (4 years ago)

Dạ vậy để em tăng đô với resnet xem thế nào? Em đang dùng learning rate = 0.01 với optimizer Adam cho bài toán này.

Khôi Tuấn Nguyễn (4 years ago)

stanford có 16k ảnh thôi mà anh, làm gì đến mức underfit được nhỉ, cái này giống processing có vấn đề hơn, lr = 0.01 cũng là rất lớn

Relate Discussions