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.
"Although large-kernel CNNs may degenerate in a different mechanism from ViT’s, we also observed without shortcut, it is difficult for the network to capture local details." Cái này là do nhóm tác giả quan sát và đưa ra kết luận, còn theo như mình biết thì chính chủ của skip connection - Kaiming He sử dụng nó với mục đích đưa gradient flow backward và fordward dễ hơn trong mạng => model dễ tối ưu hóa hơn. Nếu như theo lối suy nghĩ này thì shortcuts giúp gradient đi sâu hơn lúc backprop -> những layer đầu cũng nhận được nhiều gradient signal hơn là model không có shortcuts, từ đó dễ học được local information. Bạn có thể refer đến bài này của tác giả : Identity Mappings in Deep Residual Networks
Các model CNN Classifier có 2 tính chất chính là translation equivariant và translation invariant. Một model mạnh thì 2 tính chất trên phải càng mạnh. Với tính chất translation equivariant thì càng gần input layer -> cầng gần spatial domain -> tính spatial equivariance phải cành mạnh -> cho phép tạo ra feature map đủ thông tin spatial (edge, texture, shape), tính chất này được tạo bởi các lớp conv + nonlinear. Đồng thời, tính chất translation invariant được tạo bởi các lớp Pooling, càng về sau thì trong feature map dần ít đi thông tin spatial mà thay vào đó là context, dó đó các lớp pooling mang nhiệm vụ tổng hợp thông tin quan trọng -> biến nó thành semantic feature, gói gọn nó cho lớp MLP (một phần cũng vì MLP khá nhạy cảm với thông tin spatial, nếu như để quá nhiều thì model sẽ bị ảnh hưởng khi object trong ảnh dịch chuyển như bạn nói). "tính chất này giúp performance của mạng không bị ảnh hưởng nhiều nếu object trong ảnh bị dịch chuyển" có lẽ cách diễn giải này của mình làm bạn thắc mắc, nhưng ý của mình muốn nói là tính chất này vẫn là một tính chất rất quan trọng mà mạng CNN cần có.
"we also find when the pretraining dataset increases to 73 million images (refer to RepLKNet-XL in the next section), re-parameterization can be omitted without degradation" câu này theo ý tác giả thì là khi train với 73 triệu ảnh, có thể bỏ re-param mà không làm giảm performance. Tức là vẫn giữ các nhánh phụ, mình cũng không rõ mình có hiểu đúng ý tác giả hay không :v sorry bạn vì câu này mình không trả lời rõ ràng được.
Nếu như bạn đọc 2 paper visual attention network và segnext rồi thì sẽ thấy cách làm này có vẻ khá tương tự như 2 paper trên. Cách này giúp model vẫn có performance của conventional convolution kxk, nhưng computation cost có thể giảm đi !? 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, vì khi sử dụng DW 3x3 khối lượng tính toán ít hơn conv 3x3 thông thường rât nhiều nhưng giữa các channel lại thiếu sự giao tiếp với nhau nếu như bạn hiểu cách depth-wise conv và conventional conv làm việc, do đó việc dùng conv 1x1 là để tăng tính interactive giữa các channel. Tóm tắt lại thì cách làm này giúp model giữ performance đồng thời giảm computational cost.
Tất cả những câu trả lời trên của mình đều được đưa ra dựa trên kiến thức cá nhân, nên nếu có chỗ nào sai sót thì mong bạn góp ý thêm. Cảm ơn bạn rất nhiều, rất mong nhận được phản hồi từ bạn.
"Cũng tương tự cho CNN, khi không có shortcut, mạng sẽ rất khó để bắt được local information" mong tác giả của bài viết giải thích hộ mình điều này với, mình vẫn chưa rõ tại sao lại như thế?
"Phương pháp này sẽ giúp gia cố tính chất translational equivariance (tính chất này giúp performance của mạng không bị ảnh hưởng nhiều nếu object trong ảnh bị dịch chuyển)". Mình không hiểu rõ chỗ này lắm, mình tưởng nếu tính translation equivariance mạnh thì output của mạng sẽ bị thay đổi khá nhiều nếu object trong ảnh dịch chuyển chứ nhỉ?
"Khi pretrained với tập dữ liệu 73 triệu ảnh (RepLKNet-XL) thì có thể bỏ re-param mà không làm giảm hiệu năng." Tức là lúc này RepLKNet chỉ sử dụng thuần 1 nhánh large kernel thay vì large kernel + 3x3 Conv phải không ạ?
Ở guide line 5, làm thế nào để có thể áp dụng kernel lớn hơn feature maps vậy ạ?
"DW 3×3 được thêm vào để lấy low-level pattern". Theo mình thì sử dụng 3x3 Conv thông thường ở đoạn đầu của model thì cũng có thể lấy được low-level pattern mà nhỉ, và hiệu năng của nó cũng tốt hơn là DWConv nữa. Thêm nữa, khi sử dụng DWConv thì lại còn phải đưa thêm vào 1x1 Conv phía sau đó. Tại sao lại không sử dụng 3x3 Conv ở đoạn này ạ?
middleware sinh ra là để quản lý, chứ nó không thay thế cho các thư viện call API trực tiếp. nhắm thấy phải dùng thì dùng, vì dùng đồng nghĩa với việc tốn thêm tài nguyên để quản lý, kiến thức để sử dụng và cả các vấn đề phát sinh nữa. nhưng không dùng không có nghĩa là không học không biết
redux-thunk ở đây giúp cho redux hiểu và hoạt động một cách chính xác nếu nó nhận được 1 async logic, đồng thời làm bàn đạp đế phát triển lên các phần tiếp theo tốt hơn như RTK Query và Mutation, nó không bắt ngta phải bỏ cách viết redux thuần, đơn giản là nếu chúng mày truyền láo (async) vào thì tao vẫn sẽ hiểu và làm việc bình thường, chứ không phải không xử lý được như trước khi có thunk
THẢO LUẬN
à 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"Although large-kernel CNNs may degenerate in a different mechanism from ViT’s, we also observed without shortcut, it is difficult for the network to capture local details." Cái này là do nhóm tác giả quan sát và đưa ra kết luận, còn theo như mình biết thì chính chủ của skip connection - Kaiming He sử dụng nó với mục đích đưa gradient flow backward và fordward dễ hơn trong mạng => model dễ tối ưu hóa hơn. Nếu như theo lối suy nghĩ này thì shortcuts giúp gradient đi sâu hơn lúc backprop -> những layer đầu cũng nhận được nhiều gradient signal hơn là model không có shortcuts, từ đó dễ học được local information. Bạn có thể refer đến bài này của tác giả : Identity Mappings in Deep Residual Networks
Các model CNN Classifier có 2 tính chất chính là translation equivariant và translation invariant. Một model mạnh thì 2 tính chất trên phải càng mạnh. Với tính chất translation equivariant thì càng gần input layer -> cầng gần spatial domain -> tính spatial equivariance phải cành mạnh -> cho phép tạo ra feature map đủ thông tin spatial (edge, texture, shape), tính chất này được tạo bởi các lớp conv + nonlinear. Đồng thời, tính chất translation invariant được tạo bởi các lớp Pooling, càng về sau thì trong feature map dần ít đi thông tin spatial mà thay vào đó là context, dó đó các lớp pooling mang nhiệm vụ tổng hợp thông tin quan trọng -> biến nó thành semantic feature, gói gọn nó cho lớp MLP (một phần cũng vì MLP khá nhạy cảm với thông tin spatial, nếu như để quá nhiều thì model sẽ bị ảnh hưởng khi object trong ảnh dịch chuyển như bạn nói). "tính chất này giúp performance của mạng không bị ảnh hưởng nhiều nếu object trong ảnh bị dịch chuyển" có lẽ cách diễn giải này của mình làm bạn thắc mắc, nhưng ý của mình muốn nói là tính chất này vẫn là một tính chất rất quan trọng mà mạng CNN cần có.
"we also find when the pretraining dataset increases to 73 million images (refer to RepLKNet-XL in the next section), re-parameterization can be omitted without degradation" câu này theo ý tác giả thì là khi train với 73 triệu ảnh, có thể bỏ re-param mà không làm giảm performance. Tức là vẫn giữ các nhánh phụ, mình cũng không rõ mình có hiểu đúng ý tác giả hay không :v sorry bạn vì câu này mình không trả lời rõ ràng được.
Ví dụ kích thước feature map là 7x7. Nếu muốn sử dụng conv có kernel 13x13 với feature map này thì chắc là phải có padding đấy ạ
Trong code thì tác giả muốn giữ nguyên kích thước feature map nên để padding kernel_size//2 (https://github.com/DingXiaoH/RepLKNet-pytorch/blob/b76808ac2c763eaed6af9d286c6163c9345b4d5f/replknet.py#L86)
Nếu như bạn đọc 2 paper visual attention network và segnext rồi thì sẽ thấy cách làm này có vẻ khá tương tự như 2 paper trên. Cách này giúp model vẫn có performance của conventional convolution kxk, nhưng computation cost có thể giảm đi !? 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, vì khi sử dụng DW 3x3 khối lượng tính toán ít hơn conv 3x3 thông thường rât nhiều nhưng giữa các channel lại thiếu sự giao tiếp với nhau nếu như bạn hiểu cách depth-wise conv và conventional conv làm việc, do đó việc dùng conv 1x1 là để tăng tính interactive giữa các channel. Tóm tắt lại thì cách làm này giúp model giữ performance đồng thời giảm computational cost.
Tất cả những câu trả lời trên của mình đều được đưa ra dựa trên kiến thức cá nhân, nên nếu có chỗ nào sai sót thì mong bạn góp ý thêm. Cảm ơn bạn rất nhiều, rất mong nhận được phản hồi từ bạn.
Bài viết hay, em đang tìm hiểu về CRDs của K8S, không biết bác có gợi ý nào về sách hoặc tutorials nào hay cho em với ạ.
.
@nampt.me ,làm sao để dùng tiếp khi hết 500 giờ
Các bạn tham khảo website kiến thức chuyên môn về bao bì nhé: https://ipak.vn/
Rất khó để hiểu hết các khái niệm này, bạn có thể đưa dẫn chứng, trường hợp cụ thể để dùng vào mục đích gì và khi nào được không?
@tungbuitien bạn có phần demo chưa ạ. mình có thể xin tham khảo được không ạ
thanks bác, vậy hóa ra nó chỉ khác nhau cái return, 1 cái return function 1 cái return value
làm thế nào để add được package quill-image-resize
Câu số 6 có chút sơ sót cả nhà thông cảm. Sau đây được edit: 6. Em có biết về Boundary Testing và Branch Testing không ?
@khangnd Vâng Em cũng thấy rối thiệt mà em muốn bấm vào đúng item nớ thì lấy key languages trong chính nó luôn
Kiểu như dưới hình á anh
Em muốn reuse lại component MenuItem ấy
Nhưng vấn để là cái MenuItem có các props typpe là optional.
Em chưa biết passing như nào cả
xịn quá anh
thank bạn, mình đã sửa lại
middleware sinh ra là để quản lý, chứ nó không thay thế cho các thư viện call API trực tiếp. nhắm thấy phải dùng thì dùng, vì dùng đồng nghĩa với việc tốn thêm tài nguyên để quản lý, kiến thức để sử dụng và cả các vấn đề phát sinh nữa. nhưng không dùng không có nghĩa là không học không biết
redux-thunk ở đây giúp cho redux hiểu và hoạt động một cách chính xác nếu nó nhận được 1 async logic, đồng thời làm bàn đạp đế phát triển lên các phần tiếp theo tốt hơn như RTK Query và Mutation, nó không bắt ngta phải bỏ cách viết redux thuần, đơn giản là nếu chúng mày truyền láo (async) vào thì tao vẫn sẽ hiểu và làm việc bình thường, chứ không phải không xử lý được như trước khi có thunk