@nguyen.van.quan@HQuang Cảm ơn 2 bạn đã trả lời tận tình cho mình. Tuy nhiên, ý 5 ở câu trả lời của bạn Quân mình chưa hiểu được lời giải thích của bạn Quân của câu hỏi số 5.
"Còn 1 cách giải thích chi tiết hơn là cách này giúp computation cost có thể giảm xuống". Tốc độ khi sử dụng 3x3 DWConv và 3x3 Conv kể cả khi sử dụng từ thư viện của bài báo này thì nó cũng chỉ ngang nhau, còn nếu không sử dụng code từ bài báo này (Pytorch) thì tốc độ sẽ còn chậm hơn: "Một vấn đề nữa là DW convolution như chúng ta biết thì không đạt được hiệu quả tính toán song song trên các thiết bị như GPU. Điều này là đúng với DW conv có kernel 3×3 bởi vì phép toán DW tạo ra tỷ lệ bất cân xứng giữa hiệu quả tính toán so với chi phí truy cập bộ nhớ."
"do đó việc dùng conv 1x1 là để tăng tính interactive giữa các channel". Với việc sử dụng DWConv, ta còn phải thêm vào 1x1 Conv ở sau đó nữa theo như bạn giải thích, do đó ta phải tính toán 2 lớp là 3x3 DWConv và 1x1 Conv thay vì chỉ một lớp 3x3 Conv, thì sao mà computation cost có thể giảm xuống được ạ?
Mình thích file config dạng .js hơn là json, bởi nó cho phép dùng logic phức tạp, ví dụ:
"etc/no-commented-out-code":
process.env.STRICT_MODE === "TRUE" ? "error" : "off",
@HQuang "Từ góc nhìn này, nếu sự thay đổi ở input biểu diễn bởi 1 phép identity ở không gian output, ta có thể xem invariance là 1 trường hợp của equivariance." Tức là với invariance thì phép identity này không tạo ra sự thay đổi ở không gian output đúng k hquang ?
Đối với ViT, khi không có skip connection thì ma trận attention sẽ thành low rank, tức là các token khác nhau lại có attention weight giống nhau, dẫn đến hiện tượng oversmoothing, tức là feature của các token lại trở thành giống nhau (dễ hiểu hơn nếu bạn nhìn từ góc độ graph). Đối với large kernel cnn, kernel tại các vị trí khác nhau sẽ overlap nhiều, nên khi stack nhiều layer lại thì dễ gặp hiện tượng oversmoothing (hơn cnn với kernel nhỏ), tức là thông tin từ 2 vị trí khác nhau lại được aggregate từ 1 tập tương đối giống nhau. Về mặt trực quan thì khi thêm skip connection, thông tin từ các layer đầu sẽ được nhấn mạnh hơn, mà tại các layer đầu thì vùng được aggregate sẽ có tính phân biệt hơn các layer sau.
Về tính chất equivariance, thường chúng ta nghĩ rằng điều này thể hiện thay đổi input như thế nào thì output cũng đổi như vậy. Nhưng mình cho rằng nó nên được hiểu là input thay đổi thế nào thì output cũng thay đổi một cách tương đối theo không gian output. Lấy ví dụ là 1 phép downscale ảnh xuống kích cỡ một nửa, nếu input bị dịch 10px thì output sẽ bị dịch 5px chứ không phải 10px. Từ góc nhìn này, nếu sự thay đổi ở input biểu diễn bởi 1 phép identity ở không gian output, ta có thể xem invariance là 1 trường hợp của equivariance.
mình thấy tác giả lấy cố định chỉ số dòng 1 và dòng 2 là 40, nếu giả sử ảnh detect biển số quá lớn hoặc quá bé thì nó sẽ ko chia đúng vào dòng 1 và dòng 2.
THẢO LUẬN
@nguyen.van.quan @HQuang Cảm ơn 2 bạn đã trả lời tận tình cho mình. Tuy nhiên, ý 5 ở câu trả lời của bạn Quân mình chưa hiểu được lời giải thích của bạn Quân của câu hỏi số 5.
"Còn 1 cách giải thích chi tiết hơn là cách này giúp computation cost có thể giảm xuống". Tốc độ khi sử dụng 3x3 DWConv và 3x3 Conv kể cả khi sử dụng từ thư viện của bài báo này thì nó cũng chỉ ngang nhau, còn nếu không sử dụng code từ bài báo này (Pytorch) thì tốc độ sẽ còn chậm hơn: "Một vấn đề nữa là DW convolution như chúng ta biết thì không đạt được hiệu quả tính toán song song trên các thiết bị như GPU. Điều này là đúng với DW conv có kernel 3×3 bởi vì phép toán DW tạo ra tỷ lệ bất cân xứng giữa hiệu quả tính toán so với chi phí truy cập bộ nhớ."
"do đó việc dùng conv 1x1 là để tăng tính interactive giữa các channel". Với việc sử dụng DWConv, ta còn phải thêm vào 1x1 Conv ở sau đó nữa theo như bạn giải thích, do đó ta phải tính toán 2 lớp là 3x3 DWConv và 1x1 Conv thay vì chỉ một lớp 3x3 Conv, thì sao mà computation cost có thể giảm xuống được ạ?
giống trang này vậy bác
http://thomay.vn/thomay/
@Honganh lâu rồi cậu chưa viết bài mới kìa, thêm ít vài về AI phân tích số liệu đi cậu.
Mình thích file config dạng .js hơn là json, bởi nó cho phép dùng logic phức tạp, ví dụ: "etc/no-commented-out-code": process.env.STRICT_MODE === "TRUE" ? "error" : "off",
@nguyen.van.quan đúng rồi ông
@HQuang "Từ góc nhìn này, nếu sự thay đổi ở input biểu diễn bởi 1 phép identity ở không gian output, ta có thể xem invariance là 1 trường hợp của equivariance." Tức là với invariance thì phép identity này không tạo ra sự thay đổi ở không gian output đúng k hquang ?
bạn ơi bạn dùng version trả phí nên host làm nhiều app django được à
Đối với ViT, khi không có skip connection thì ma trận attention sẽ thành low rank, tức là các token khác nhau lại có attention weight giống nhau, dẫn đến hiện tượng oversmoothing, tức là feature của các token lại trở thành giống nhau (dễ hiểu hơn nếu bạn nhìn từ góc độ graph). Đối với large kernel cnn, kernel tại các vị trí khác nhau sẽ overlap nhiều, nên khi stack nhiều layer lại thì dễ gặp hiện tượng oversmoothing (hơn cnn với kernel nhỏ), tức là thông tin từ 2 vị trí khác nhau lại được aggregate từ 1 tập tương đối giống nhau. Về mặt trực quan thì khi thêm skip connection, thông tin từ các layer đầu sẽ được nhấn mạnh hơn, mà tại các layer đầu thì vùng được aggregate sẽ có tính phân biệt hơn các layer sau.
Về tính chất equivariance, thường chúng ta nghĩ rằng điều này thể hiện thay đổi input như thế nào thì output cũng đổi như vậy. Nhưng mình cho rằng nó nên được hiểu là input thay đổi thế nào thì output cũng thay đổi một cách tương đối theo không gian output. Lấy ví dụ là 1 phép downscale ảnh xuống kích cỡ một nửa, nếu input bị dịch 10px thì output sẽ bị dịch 5px chứ không phải 10px. Từ góc nhìn này, nếu sự thay đổi ở input biểu diễn bởi 1 phép identity ở không gian output, ta có thể xem invariance là 1 trường hợp của equivariance.
đây nhé bạn - https://devopsvn.tech/devops/nhung-cuon-sach-nen-doc-de-hoc-kubernetes-cho-nguoi-moi-bat-dau#ccc6a2e544b743ad8d9b116a57fd956b
@maitrungduc1410 Anh cho em hỏi bài trước khi Dockerize Laravel em thấy có dùng nginx sao bên này lại không dùng vậy ạ.
đúng rồi bạn nhưng thư viện này build trên rust nhé
Dùng Kubernetes đó: https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/
Cho ra part 2 đi bác, hay quá
@KevinChu Cảm ơn bạn nhiều. Có phần mềm nào tương tự như OpenShift mà máy chủ dùng Window không bạn nhỉ?
Openshift có 2 phiên bản. Bản Origin thì dùng Fedora CoreOS (FCOS). Bản Enterprise thì dùng Red Hat Enterprise Linux CoreOS (RHCOS)
Bạn cho hỏi:
à giải pháp là thêm AWS_URL=http://localhost:9000/laravel-local vào env
mình bị lỗi khi dùng docker compose là khi get url nó sẽ trả về link kiểu http://minio:9000/laravel-local/content.txt chứ không phải http://localhost:9000/laravel-local/content.txt nên không thể truy cập được bên ngoài docker 😓
mình thấy tác giả lấy cố định chỉ số dòng 1 và dòng 2 là 40, nếu giả sử ảnh detect biển số quá lớn hoặc quá bé thì nó sẽ ko chia đúng vào dòng 1 và dòng 2.
Mảng Mũi têncó phải giốngvector trong C++phải k bạn