Yêu cầu Thứ Hai, 8:10 SA 28 0 2
  • 28 0 2
0

GAP và Softmax trong ResNet

Chia sẻ
  • 28 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 CÂU TRẢ LỜI


Đã trả lời Thứ Ba, 8:42 SA
Đã được chấp nhận
+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

Chia sẻ
Avatar Pikaman @pikamanh
Thứ Ba, 3:42 CH

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

Avatar Hoài Nam @namtmh31
Thứ Ba, 4:21 CH

@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

Đã trả lời khoảng 3 giờ trước
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
Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí