Asked Jan 6th, 8:10 a.m. 58 0 2
  • 58 0 2
0

GAP và Softmax trong ResNet

Share
  • 58 0 2

Chào tất cả mọi người, hiện tại em đang tìm hiểu về ResNet và khi em nhìn vào paper, có 1 tấm hình về architecture của ResNet. Trong ảnh em thấy phần cuối cùng chính là Average Pool, 1000d-fc, softmax. Nhưng khi em thực hiện model như hình thì cho ra kết quả rất tệ (~10%) và rồi em tìm hiểu trên mạng thì thấy mọi người không sử dụng softmax và average pool mà chỉ sử dụng Flatten -> Linear Combination thì cho ra kết quả rất tốt (~95-98%). Anh chị cho em hỏi là tại sao lại không sử dụng softmax cho bài toán classification ạ. Em sử dụng: MNIST dataset Batch size: 32 optimize: SGD

2 ANSWERS


Answered Jan 7th, 8:42 a.m.
Accepted
+1

Hàm softmax thường được sử dụng cho các bài toán phân loại, mình nghĩ vấn đề ở đây không phải là do softmax mà do lớp 1000d-fc. Bạn thử thay lớp đó thành bằng với num classes của tập dataset và thay optimizer bằng Adam thử xem

Share
Avatar Pikaman @pikamanh
Jan 7th, 3:42 p.m.

Em có sử dụng Adam thì đúng là nó có hiệu quả hơn so với SGD nhưng mà khi test trên tập test thì cho ra kết quả rất tệ. Mặc dù accuracy Train > 95% nhưng khi test thì accuracy Test giảm từ 95% xuốngLoss của nó từ từ tăng lên. Có cách nào để khắc phục được tình trạng này không ạ.

Note: Em đã thay 1000d-fc -> 10 num classes

0
| Reply
Share
Avatar Hoài Nam @namtmh31
Jan 7th, 4:21 p.m.

@pikamanh Mình muốn hỏi là acc test đã giảm xuống còn bao nhiêu ấy tại vì thường acc test thấp hơn acc train là khá bình thường. Ví dụ acc vẫn ở trên 85% thì vẫn chấp nhận được. Bạn cho mình xin thêm thông tin là đang train với bao nhiêu epoch

0
| Reply
Share
Answered Jan 8th, 6:17 p.m.
0

Có rất nhiều vấn đề trong câu hỏi của bạn

  1. "em tìm hiểu trên mạng thì thấy mọi người không sử dụng (...) average pool". Mình dạo qua 2 lib cực nổi tiếng bên CV là timm và MMPretrain thì đều thấy họ sử dụng AvgPool cho Resnet:
  1. "em tìm hiểu trên mạng thì thấy mọi người không sử dụng softmax (...) thì cho ra kết quả rất tốt". Bạn train sử dụng loss gì và khi thực hiện inference thì bạn thực hiện như nào? Nếu bạn vừa sử dụng softmax vừa sử dụng CrossEntropyLoss của Pytorch thì rõ ràng là bạn đã sử dụng sai cách. Bạn có thể đọc về CrossEntropyLoss để hiểu rõ hơn
Share
Viblo
Let's register a Viblo Account to get more interesting posts.