Anurag1734/cuda-error-resolution-analysis
07
1[2 {3 "post_stream": {4 "posts": [5 {6 "id": 205372,7 "name": "NA GONG",8 "username": "NA_GONG",9 "avatar_template": "/user_avatar/discuss.pytorch.org/na_gong/{size}/25873_2.png",10 "created_at": "2020-06-22T10:14:04.352Z",11 "cooked": "<p>Hi,<br>\nI wrote a custom def CrossEntropy() to remove the softmax in the torch.nn.CrossEntropy():</p>\n<pre><code class=\"lang-auto\">def CrossEntropy(self, output, target):\n '''\n input: softmaxted output\n '''\n loss = nn.NLLLoss().to(self.device)\n return loss(torch.log(output), target)\n</code></pre>\n<p>As I tested with a complete model training, it can successfully reproduce the result of the torch.nn.CrossEntropy():<br>\n(old class_loss: calculated by torch.nn.CrossEntropy(); new class_loss: calculated by custom def CrossEntropy():</p>\n<pre><code class=\"lang-auto\">class_loss = self.class_criterion(model_outputs, labels) # self.class_criterion = torch.nn.CrossEntropy()\nprint('old class_loss: ', self.class_criterion(model_outputs, labels))\nprint('new class_loss: ', self.CrossEntropy(self.softmax(model_outputs), labels))\n</code></pre>\n<pre><code class=\"lang-auto\">old class_loss: tensor(0.8386, device='cuda:0', grad_fn=<NllLossBackward>)\nnew class_loss: tensor(0.8386, device='cuda:0', grad_fn=<NllLossBackward>)\nold class_loss: tensor(0.6758, device='cuda:0', grad_fn=<NllLossBackward>)\nnew class_loss: tensor(0.6758, device='cuda:0', grad_fn=<NllLossBackward>)\nold class_loss: tensor(0.5868, device='cuda:0', grad_fn=<NllLossBackward>)\nnew class_loss: tensor(0.5868, device='cuda:0', grad_fn=<NllLossBackward>)\nold class_loss: tensor(0.5376, device='cuda:0', grad_fn=<NllLossBackward>)\nnew class_loss: tensor(0.5376, device='cuda:0', grad_fn=<NllLossBackward>)\n ....\n</code></pre>\n<p>Problem: When I use my own def CrossEntropy() to run the same training procedure, both class_losses are still the same, but the general loss results of my own CrossEntropy(right cloumn below) became different from the training with torch.nn.CrossEntropy() (left column below) from the 5th training steps:</p>\n<pre><code class=\"lang-auto\">class_loss = self.CrossEntropy(self.softmax(model_outputs), labels)\nprint('old class_loss: ', self.class_criterion(model_outputs, labels))\nprint('new class_loss: ', self.CrossEntropy(self.softmax(model_outputs), labels))\n</code></pre>\n<p><div class=\"lightbox-wrapper\"><a class=\"lightbox\" href=\"https://discuss.pytorch.org/uploads/default/original/3X/b/9/b9bc685b09db3bc53625d9c31bdb607115f3fc08.png\" data-download-href=\"https://discuss.pytorch.org/uploads/default/b9bc685b09db3bc53625d9c31bdb607115f3fc08\" title=\"2\"><img src=\"https://discuss.pytorch.org/uploads/default/original/3X/b/9/b9bc685b09db3bc53625d9c31bdb607115f3fc08.png\" alt=\"2\" data-base62-sha1=\"qv5ZB9Z9pGlqE71P66DFYnEeqJa\" width=\"690\" height=\"293\" data-dominant-color=\"E0DEDE\"><div class=\"meta\"><svg class=\"fa d-icon d-icon-far-image svg-icon\" aria-hidden=\"true\"><use href=\"#far-image\"></use></svg><span class=\"filename\">2</span><span class=\"informations\">1396×593 18.9 KB</span><svg class=\"fa d-icon d-icon-discourse-expand svg-icon\" aria-hidden=\"true\"><use href=\"#discourse-expand\"></use></svg></div></a></div></p>\n<p>Can anyone please let me know why this happens and how could I solve it so that my own def CrossEntropy() could completely reproduce the training results? Thanks a lot!</p>",12 "post_number": 1,13 "post_type": 1,14 "posts_count": 3,15 "updated_at": "2020-06-22T10:17:31.815Z",16 "reply_count": 0,17 "reply_to_post_number": null,18 "quote_count": 0,19 "incoming_link_count": 623,20 "reads": 30,21 "readers_count": 29,22 "score": 3121.0,23 "yours": false,24 "topic_id": 86382,25 "topic_slug": "why-my-custom-crossentropyloss-got-different-loss-with-the-nn-crossentropy-from-the-middle-of-the-training",26 "display_username": "NA GONG",27 "primary_group_name": null,28 "flair_name": null,29 "flair_url": null,30 "flair_bg_color": null,31 "flair_color": null,32 "flair_group_id": null,33 "badges_granted": [],34 "version": 2,35 "can_edit": false,36 "can_delete": false,37 "can_recover": false,38 "can_see_hidden_post": false,39 "can_wiki": false,40 "link_counts": [41 {42 "url": "https://discuss.pytorch.org/uploads/default/original/3X/b/9/b9bc685b09db3bc53625d9c31bdb607115f3fc08.png",43 "internal": true,44 "reflection": false,45 "clicks": 046 }47 ],48 "read": true,49 "user_title": null,50 "bookmarked": false,51 "actions_summary": [],52 "moderator": false,53 "admin": false,54 "staff": false,55 "user_id": 33371,56 "hidden": false,57 "trust_level": 1,58 "deleted_at": null,59 "user_deleted": false,60 "edit_reason": null,61 "can_view_edit_history": true,62 "wiki": false,63 "post_url": "/t/why-my-custom-crossentropyloss-got-different-loss-with-the-nn-crossentropy-from-the-middle-of-the-training/86382/1",64 "can_accept_answer": false,65 "can_unaccept_answer": false,66 "accepted_answer": false,67 "topic_accepted_answer": null,68 "can_vote": false69 },70 {71 "id": 205675,72 "name": "",73 "username": "ptrblck",74 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",75 "created_at": "2020-06-23T02:42:51.668Z",76 "cooked": "<p><code>torch.log(torch.softmax(tensor))</code> is less numerically stable than <code>F.log_softmax</code>, which is used internally in <code>nn.CrossEntropyLoss</code>. The numerical stability is increased by applying the <a href=\"https://en.wikipedia.org/wiki/LogSumExp\">log-sum-exp trick</a>. You should get the same values, if you use <code>F.log_softmax</code> instead of the separate function calls.</p>",77 "post_number": 2,78 "post_type": 1,79 "posts_count": 3,80 "updated_at": "2020-06-23T02:42:51.668Z",81 "reply_count": 1,82 "reply_to_post_number": null,83 "quote_count": 0,84 "incoming_link_count": 2,85 "reads": 28,86 "readers_count": 27,87 "score": 35.6,88 "yours": false,89 "topic_id": 86382,90 "topic_slug": "why-my-custom-crossentropyloss-got-different-loss-with-the-nn-crossentropy-from-the-middle-of-the-training",91 "display_username": "",92 "primary_group_name": null,93 "flair_name": null,94 "flair_url": null,95 "flair_bg_color": null,96 "flair_color": null,97 "flair_group_id": null,98 "badges_granted": [],99 "version": 1,100 "can_edit": false,101 "can_delete": false,102 "can_recover": false,103 "can_see_hidden_post": false,104 "can_wiki": false,105 "link_counts": [106 {107 "url": "https://en.wikipedia.org/wiki/LogSumExp",108 "internal": false,109 "reflection": false,110 "title": "LogSumExp - Wikipedia",111 "clicks": 46112 }113 ],114 "read": true,115 "user_title": "",116 "bookmarked": false,117 "actions_summary": [118 {119 "id": 2,120 "count": 1121 }122 ],123 "moderator": true,124 "admin": true,125 "staff": true,126 "user_id": 3534,127 "hidden": false,128 "trust_level": 2,129 "deleted_at": null,130 "user_deleted": false,131 "edit_reason": null,132 "can_view_edit_history": true,133 "wiki": false,134 "post_url": "/t/why-my-custom-crossentropyloss-got-different-loss-with-the-nn-crossentropy-from-the-middle-of-the-training/86382/2",135 "can_accept_answer": false,136 "can_unaccept_answer": false,137 "accepted_answer": false,138 "topic_accepted_answer": null139 },140 {141 "id": 210749,142 "name": "NA GONG",143 "username": "NA_GONG",144 "avatar_template": "/user_avatar/discuss.pytorch.org/na_gong/{size}/25873_2.png",145 "created_at": "2020-07-09T14:28:42.035Z",146 "cooked": "<p>Thanks, it works good.</p>",147 "post_number": 3,148 "post_type": 1,149 "posts_count": 3,150 "updated_at": "2020-07-09T14:28:42.035Z",151 "reply_count": 0,152 "reply_to_post_number": 2,153 "quote_count": 0,154 "incoming_link_count": 2,155 "reads": 27,156 "readers_count": 26,157 "score": 15.4,158 "yours": false,159 "topic_id": 86382,160 "topic_slug": "why-my-custom-crossentropyloss-got-different-loss-with-the-nn-crossentropy-from-the-middle-of-the-training",161 "display_username": "NA GONG",162 "primary_group_name": null,163 "flair_name": null,164 "flair_url": null,165 "flair_bg_color": null,166 "flair_color": null,167 "flair_group_id": null,168 "badges_granted": [],169 "version": 1,170 "can_edit": false,171 "can_delete": false,172 "can_recover": false,173 "can_see_hidden_post": false,174 "can_wiki": false,175 "read": true,176 "user_title": null,177 "reply_to_user": {178 "id": 3534,179 "username": "ptrblck",180 "name": "",181 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png"182 },183 "bookmarked": false,184 "actions_summary": [],185 "moderator": false,186 "admin": false,187 "staff": false,188 "user_id": 33371,189 "hidden": false,190 "trust_level": 1,191 "deleted_at": null,192 "user_deleted": false,193 "edit_reason": null,194 "can_view_edit_history": true,195 "wiki": false,196 "post_url": "/t/why-my-custom-crossentropyloss-got-different-loss-with-the-nn-crossentropy-from-the-middle-of-the-training/86382/3",197 "can_accept_answer": false,198 "can_unaccept_answer": false,199 "accepted_answer": false,200 "topic_accepted_answer": null201 }202 ],203 "stream": [204 205372,205 205675,206 210749207 ]208 },209 "timeline_lookup": [210 [211 1,212 1952213 ],214 [215 2,216 1951217 ],218 [219 3,220 1934221 ]222 ],223 "suggested_topics": [224 {225 "fancy_title": "5070Ti+Ubuntu 20.04.6+cuda?",226 "id": 217901,227 "title": "5070Ti+Ubuntu 20.04.6+cuda?",228 "slug": "5070ti-ubuntu-20-04-6-cuda",229 "posts_count": 3,230 "reply_count": 1,231 "highest_post_number": 3,232 "image_url": null,233 "created_at": "2025-03-16T03:22:30.520Z",234 "last_posted_at": "2025-03-19T10:15:03.040Z",235 "bumped": true,236 "bumped_at": "2025-03-19T10:15:03.040Z",237 "archetype": "regular",238 "unseen": false,239 "pinned": false,240 "unpinned": null,241 "visible": true,242 "closed": false,243 "archived": false,244 "bookmarked": null,245 "liked": null,246 "tags_descriptions": {},247 "like_count": 0,248 "views": 273,249 "category_id": 1,250 "featured_link": null,251 "has_accepted_answer": false,252 "posters": [253 {254 "extras": "latest",255 "description": "Original Poster, Most Recent Poster",256 "user": {257 "id": 83301,258 "username": "riva_lei",259 "name": "riva lei",260 "avatar_template": "/user_avatar/discuss.pytorch.org/riva_lei/{size}/76187_2.png",261 "trust_level": 1262 }263 },264 {265 "extras": null,266 "description": "Frequent Poster",267 "user": {268 "id": 3534,269 "username": "ptrblck",270 "name": "",271 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",272 "admin": true,273 "moderator": true,274 "trust_level": 2275 }276 }277 ]278 },279 {280 "fancy_title": "During evaluation process, my model keeps predicting the same result",281 "id": 215639,282 "title": "During evaluation process, my model keeps predicting the same result",283 "slug": "during-evaluation-process-my-model-keeps-predicting-the-same-result",284 "posts_count": 1,285 "reply_count": 0,286 "highest_post_number": 1,287 "image_url": null,288 "created_at": "2025-01-20T21:47:32.297Z",289 "last_posted_at": "2025-01-20T21:47:32.341Z",290 "bumped": true,291 "bumped_at": "2025-01-22T09:04:02.720Z",292 "archetype": "regular",293 "unseen": false,294 "pinned": false,295 "unpinned": null,296 "visible": true,297 "closed": false,298 "archived": false,299 "bookmarked": null,300 "liked": null,301 "tags_descriptions": {},302 "like_count": 0,303 "views": 52,304 "category_id": 1,305 "featured_link": null,306 "has_accepted_answer": false,307 "posters": [308 {309 "extras": "latest single",310 "description": "Original Poster, Most Recent Poster",311 "user": {312 "id": 77180,313 "username": "L_Z",314 "name": "L Z",315 "avatar_template": "/user_avatar/discuss.pytorch.org/l_z/{size}/71230_2.png",316 "trust_level": 1317 }318 }319 ]320 },321 {322 "fancy_title": "Best way to save a model including its parameters",323 "id": 216331,324 "title": "Best way to save a model including its parameters",325 "slug": "best-way-to-save-a-model-including-its-parameters",326 "posts_count": 8,327 "reply_count": 6,328 "highest_post_number": 9,329 "image_url": null,330 "created_at": "2025-02-06T19:30:04.110Z",331 "last_posted_at": "2025-02-09T19:00:44.814Z",332 "bumped": true,333 "bumped_at": "2025-02-09T19:00:44.814Z",334 "archetype": "regular",335 "unseen": false,336 "pinned": false,337 "unpinned": null,338 "visible": true,339 "closed": false,340 "archived": false,341 "bookmarked": null,342 "liked": null,343 "tags_descriptions": {},344 "like_count": 0,345 "views": 199,346 "category_id": 1,347 "featured_link": null,348 "has_accepted_answer": false,349 "posters": [350 {351 "extras": "latest",352 "description": "Original Poster, Most Recent Poster",353 "user": {354 "id": 32812,355 "username": "Bjorn_Lindqvist",356 "name": "Björn Lindqvist",357 "avatar_template": "/user_avatar/discuss.pytorch.org/bjorn_lindqvist/{size}/25326_2.png",358 "trust_level": 2359 }360 },361 {362 "extras": null,363 "description": "Frequent Poster",364 "user": {365 "id": 82537,366 "username": "Shmes1955",367 "name": null,368 "avatar_template": "/letter_avatar_proxy/v4/letter/s/6bbea6/{size}.png",369 "trust_level": 0370 }371 },372 {373 "extras": null,374 "description": "Frequent Poster",375 "user": {376 "id": 3534,377 "username": "ptrblck",378 "name": "",379 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",380 "admin": true,381 "moderator": true,382 "trust_level": 2383 }384 }385 ]386 },387 {388 "fancy_title": "ModuleNotFoundError: No module named ‘torch.backends’ with easyocr and Python 3.13 (Windows 11) - Exhaustive Troubleshooting, Still Stuck!",389 "id": 216718,390 "title": "ModuleNotFoundError: No module named 'torch.backends' with easyocr and Python 3.13 (Windows 11) - Exhaustive Troubleshooting, Still Stuck!",391 "slug": "modulenotfounderror-no-module-named-torch-backends-with-easyocr-and-python-3-13-windows-11-exhaustive-troubleshooting-still-stuck",392 "posts_count": 2,393 "reply_count": 0,394 "highest_post_number": 2,395 "image_url": null,396 "created_at": "2025-02-15T16:46:16.515Z",397 "last_posted_at": "2025-02-15T16:55:26.057Z",398 "bumped": true,399 "bumped_at": "2025-02-15T16:55:26.057Z",400 "archetype": "regular",401 "unseen": false,402 "pinned": false,403 "unpinned": null,404 "visible": true,405 "closed": false,406 "archived": false,407 "bookmarked": null,408 "liked": null,409 "tags_descriptions": {},410 "like_count": 1,411 "views": 187,412 "category_id": 1,413 "featured_link": null,414 "has_accepted_answer": false,415 "posters": [416 {417 "extras": null,418 "description": "Original Poster",419 "user": {420 "id": 82709,421 "username": "Kirn_anat",422 "name": "Kirn anat",423 "avatar_template": "/user_avatar/discuss.pytorch.org/kirn_anat/{size}/75673_2.png",424 "trust_level": 0425 }426 },427 {428 "extras": "latest",429 "description": "Most Recent Poster",430 "user": {431 "id": 3534,432 "username": "ptrblck",433 "name": "",434 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",435 "admin": true,436 "moderator": true,437 "trust_level": 2438 }439 }440 ]441 },442 {443 "fancy_title": "Segmentation fault in 50K x 50K torch.matmul (fixed)",444 "id": 218513,445 "title": "Segmentation fault in 50K x 50K torch.matmul (fixed)",446 "slug": "segmentation-fault-in-50k-x-50k-torch-matmul-fixed",447 "posts_count": 2,448 "reply_count": 0,449 "highest_post_number": 2,450 "image_url": null,451 "created_at": "2025-04-02T05:10:32.606Z",452 "last_posted_at": "2025-04-02T14:44:43.440Z",453 "bumped": true,454 "bumped_at": "2025-04-02T14:44:43.440Z",455 "archetype": "regular",456 "unseen": false,457 "pinned": false,458 "unpinned": null,459 "visible": true,460 "closed": false,461 "archived": false,462 "bookmarked": null,463 "liked": null,464 "tags_descriptions": {},465 "like_count": 0,466 "views": 40,467 "category_id": 1,468 "featured_link": null,469 "has_accepted_answer": false,470 "posters": [471 {472 "extras": "latest single",473 "description": "Original Poster, Most Recent Poster",474 "user": {475 "id": 77475,476 "username": "Sanjeev_Rampal",477 "name": "Sanjeev Rampal",478 "avatar_template": "/user_avatar/discuss.pytorch.org/sanjeev_rampal/{size}/62377_2.png",479 "trust_level": 1480 }481 }482 ]483 }484 ],485 "tags_descriptions": {},486 "fancy_title": "Why my custom CrossEntropyLoss got different loss with the nn.CrossEntropy() from the middle of the training?",487 "id": 86382,488 "title": "Why my custom CrossEntropyLoss got different loss with the nn.CrossEntropy() from the middle of the training?",489 "posts_count": 3,490 "created_at": "2020-06-22T10:14:04.290Z",491 "views": 1401,492 "reply_count": 1,493 "like_count": 1,494 "last_posted_at": "2020-07-09T14:28:42.035Z",495 "visible": true,496 "closed": false,497 "archived": false,498 "has_summary": false,499 "archetype": "regular",500 "slug": "why-my-custom-crossentropyloss-got-different-loss-with-the-nn-crossentropy-from-the-middle-of-the-training",501 "category_id": 1,502 "word_count": 340,503 "deleted_at": null,504 "user_id": 33371,505 "featured_link": null,506 "pinned_globally": false,507 "pinned_at": null,508 "pinned_until": null,509 "image_url": "https://discuss.pytorch.org/uploads/default/optimized/3X/b/9/b9bc685b09db3bc53625d9c31bdb607115f3fc08_2_1024x434.png",510 "slow_mode_seconds": 0,511 "draft": null,512 "draft_key": "topic_86382",513 "draft_sequence": null,514 "unpinned": null,515 "pinned": false,516 "current_post_number": 1,517 "highest_post_number": 3,518 "deleted_by": null,519 "actions_summary": [520 {521 "id": 4,522 "count": 0,523 "hidden": false,524 "can_act": false525 },526 {527 "id": 8,528 "count": 0,529 "hidden": false,530 "can_act": false531 },532 {533 "id": 10,534 "count": 0,535 "hidden": false,536 "can_act": false537 },538 {539 "id": 7,540 "count": 0,541 "hidden": false,542 "can_act": false543 }544 ],545 "chunk_size": 20,546 "bookmarked": false,547 "topic_timer": null,548 "message_bus_last_id": 0,549 "participant_count": 2,550 "show_read_indicator": false,551 "thumbnails": [552 {553 "max_width": null,554 "max_height": null,555 "width": 1396,556 "height": 593,557 "url": "https://discuss.pytorch.org/uploads/default/original/3X/b/9/b9bc685b09db3bc53625d9c31bdb607115f3fc08.png"558 },559 {560 "max_width": 1024,561 "max_height": 1024,562 "width": 1024,563 "height": 434,564 "url": "https://discuss.pytorch.org/uploads/default/optimized/3X/b/9/b9bc685b09db3bc53625d9c31bdb607115f3fc08_2_1024x434.png"565 }566 ],567 "slow_mode_enabled_until": null,568 "can_vote": false,569 "vote_count": 0,570 "user_voted": false,571 "discourse_zendesk_plugin_zendesk_id": null,572 "discourse_zendesk_plugin_zendesk_url": "https://your-url.zendesk.com/agent/tickets/",573 "details": {574 "can_edit": false,575 "notification_level": 1,576 "participants": [577 {578 "id": 33371,579 "username": "NA_GONG",580 "name": "NA GONG",581 "avatar_template": "/user_avatar/discuss.pytorch.org/na_gong/{size}/25873_2.png",582 "post_count": 2,583 "primary_group_name": null,584 "flair_name": null,585 "flair_url": null,586 "flair_color": null,587 "flair_bg_color": null,588 "flair_group_id": null,589 "trust_level": 1590 },591 {592 "id": 3534,593 "username": "ptrblck",594 "name": "",595 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",596 "post_count": 1,597 "primary_group_name": null,598 "flair_name": null,599 "flair_url": null,600 "flair_color": null,601 "flair_bg_color": null,602 "flair_group_id": null,603 "admin": true,604 "moderator": true,605 "trust_level": 2606 }607 ],608 "created_by": {609 "id": 33371,610 "username": "NA_GONG",611 "name": "NA GONG",612 "avatar_template": "/user_avatar/discuss.pytorch.org/na_gong/{size}/25873_2.png"613 },614 "last_poster": {615 "id": 33371,616 "username": "NA_GONG",617 "name": "NA GONG",618 "avatar_template": "/user_avatar/discuss.pytorch.org/na_gong/{size}/25873_2.png"619 },620 "links": [621 {622 "url": "https://en.wikipedia.org/wiki/LogSumExp",623 "title": "LogSumExp - Wikipedia",624 "internal": false,625 "attachment": false,626 "reflection": false,627 "clicks": 46,628 "user_id": 3534,629 "domain": "en.wikipedia.org",630 "root_domain": "wikipedia.org"631 }632 ]633 },634 "bookmarks": []635 },636 {637 "post_stream": {638 "posts": [639 {640 "id": 210280,641 "name": "Wai Tik Chan",642 "username": "Wai_Tik_Chan",643 "avatar_template": "/user_avatar/discuss.pytorch.org/wai_tik_chan/{size}/15819_2.png",644 "created_at": "2020-07-08T09:01:08.464Z",645 "cooked": "<p>Hi all,<br>\nCurrently, I am working on a model with the following setup :</p>\n<p><div class=\"lightbox-wrapper\"><a class=\"lightbox\" href=\"https://discuss.pytorch.org/uploads/default/original/3X/e/4/e46c76332f1af7a9a11a96aa990a2f6cb3543be3.jpeg\" data-download-href=\"https://discuss.pytorch.org/uploads/default/e46c76332f1af7a9a11a96aa990a2f6cb3543be3\" title=\"Untitled 1\"><img src=\"https://discuss.pytorch.org/uploads/default/optimized/3X/e/4/e46c76332f1af7a9a11a96aa990a2f6cb3543be3_2_690x487.jpeg\" alt=\"Untitled 1\" data-base62-sha1=\"wAJeY1KXvRRQLewC4l8hy0M7BHt\" width=\"690\" height=\"487\" srcset=\"https://discuss.pytorch.org/uploads/default/optimized/3X/e/4/e46c76332f1af7a9a11a96aa990a2f6cb3543be3_2_690x487.jpeg, https://discuss.pytorch.org/uploads/default/optimized/3X/e/4/e46c76332f1af7a9a11a96aa990a2f6cb3543be3_2_1035x730.jpeg 1.5x, https://discuss.pytorch.org/uploads/default/original/3X/e/4/e46c76332f1af7a9a11a96aa990a2f6cb3543be3.jpeg 2x\" data-dominant-color=\"F0F3F8\"><div class=\"meta\"><svg class=\"fa d-icon d-icon-far-image svg-icon\" aria-hidden=\"true\"><use href=\"#far-image\"></use></svg><span class=\"filename\">Untitled 1</span><span class=\"informations\">1123×794 62 KB</span><svg class=\"fa d-icon d-icon-discourse-expand svg-icon\" aria-hidden=\"true\"><use href=\"#discourse-expand\"></use></svg></div></a></div></p>\n<p>However, it is found that there is no weight.grad for those encoder layers (before torch.cat) in vgg16 from tensorboard as following screen capture : (Picture 1)</p>\n<p>In compare to those Conv2d layers after torch.cat (Picture 2)</p>\n<p>Is the torch.cat blocking the loss.backward working in the model ?</p>\n<p>Thanks ~ Dick</p>\n<p>Here is some code snap for reference :</p>\n<p>Model :</p>\n<pre><code class=\"lang-auto\">class Vgg16PairInput(nn.Module):\n \n def weight_init(self,m):\n classname=m.__class__.__name__\n if classname.find('ConvTran')!=-1:\n m.weight.data.normal_(0,0.1)\n \n def __init__(self):\n super(Vgg16PairInput,self).__init__()\n self.pretrained_model = models.vgg16(pretrained=True)\n self.encoder = nn.Sequential(*list(self.pretrained_model.features.children())[:-1],\n nn.Conv2d(512,8,kernel_size=3,stride=1,padding=1),\n nn.Sigmoid()\n )\n self.compare=nn.Sequential(\n nn.Conv2d(16,1,kernel_size=3,stride=1,padding=1),\n nn.Sigmoid(),\n nn.Conv2d(1,1,kernel_size=16,stride=1,padding=0)\n #nn.Sigmoid()\n )\n \n del self.pretrained_model\n \n def encode(self,images):\n code=self.encoder(images)\n return code\n \n \n \n def forward(self,leftimage,rightimage):\n lcode = self.encoder(leftimage)\n #print(lcode.shape)\n rcode = self.encoder(rightimage)\n #print(rcode.shape)\n combin = torch.cat((lcode,rcode),1)\n #print(combin.shape)\n result = self.compare(combin)\n return result.to(torch.double)\n\n</code></pre>\n<p>Main for for training :</p>\n<pre><code class=\"lang-auto\">lossfunction=nn.BCEWithLogitsLoss()\noptimizer = torch.optim.Adam(model.parameters(),lr=0.1)\n\n\nfor epoch in range(epochs):\n \n print('epoch [{}/{}]'.format(epoch+1, epochs))\n loss_train = 0\n loss_val = 0\n totaldiff = 0\n model.train()\n\n for i, data in enumerate(trainloader):\n tampimg,maskimg,result=data\n \n output=model(tampimg.cuda(),maskimg.cuda())\n output=output.view(output.shape[0])\n \n loss=lossfunction(output,result.cuda())\n optimizer.zero_grad()\n loss.backward()\n \n optimizer.step()\n \n loss_train += loss.data.cpu()\n \n print(\"Training batch : {} , loss : {:.4f}, Output: {}, Target : {}\".format(i,loss.data.cpu(),str(output.sigmoid()),str(result)))\n \n torch.cuda.empty_cache()\n</code></pre>",646 "post_number": 1,647 "post_type": 1,648 "posts_count": 5,649 "updated_at": "2020-07-08T09:01:08.464Z",650 "reply_count": 0,651 "reply_to_post_number": null,652 "quote_count": 0,653 "incoming_link_count": 453,654 "reads": 19,655 "readers_count": 18,656 "score": 2268.8,657 "yours": false,658 "topic_id": 88353,659 "topic_slug": "gradient-propagation-is-none-after-torch-cat",660 "display_username": "Wai Tik Chan",661 "primary_group_name": null,662 "flair_name": null,663 "flair_url": null,664 "flair_bg_color": null,665 "flair_color": null,666 "flair_group_id": null,667 "badges_granted": [],668 "version": 1,669 "can_edit": false,670 "can_delete": false,671 "can_recover": false,672 "can_see_hidden_post": false,673 "can_wiki": false,674 "link_counts": [675 {676 "url": "https://discuss.pytorch.org/uploads/default/original/3X/e/4/e46c76332f1af7a9a11a96aa990a2f6cb3543be3.jpeg",677 "internal": true,678 "reflection": false,679 "clicks": 0680 }681 ],682 "read": true,683 "user_title": null,684 "bookmarked": false,685 "actions_summary": [],686 "moderator": false,687 "admin": false,688 "staff": false,689 "user_id": 34029,690 "hidden": false,691 "trust_level": 1,692 "deleted_at": null,693 "user_deleted": false,694 "edit_reason": null,695 "can_view_edit_history": true,696 "wiki": false,697 "post_url": "/t/gradient-propagation-is-none-after-torch-cat/88353/1",698 "can_accept_answer": false,699 "can_unaccept_answer": false,700 "accepted_answer": false,701 "topic_accepted_answer": null,702 "can_vote": false703 },704 {705 "id": 210281,706 "name": "Wai Tik Chan",707 "username": "Wai_Tik_Chan",708 "avatar_template": "/user_avatar/discuss.pytorch.org/wai_tik_chan/{size}/15819_2.png",709 "created_at": "2020-07-08T09:03:49.396Z",710 "cooked": "<p>sorry , guys<br>\nAs new user can’t post more than 1 photo in a post , I have separated the screen cap in reply post</p>\n<p>Picture 1 is the screen capture in tensorboard for encoder layers<br>\n<div class=\"lightbox-wrapper\"><a class=\"lightbox\" href=\"https://discuss.pytorch.org/uploads/default/original/3X/b/0/b0bcdd675061ab6cf270e612dfa792ebb97ba799.png\" data-download-href=\"https://discuss.pytorch.org/uploads/default/b0bcdd675061ab6cf270e612dfa792ebb97ba799\" title=\"Screenshot from 2020-07-08 16-50-20\"><img src=\"https://discuss.pytorch.org/uploads/default/optimized/3X/b/0/b0bcdd675061ab6cf270e612dfa792ebb97ba799_2_322x500.png\" alt=\"Screenshot from 2020-07-08 16-50-20\" data-base62-sha1=\"pduFU7CA6n2nNvT083EACxeaTnX\" width=\"322\" height=\"500\" srcset=\"https://discuss.pytorch.org/uploads/default/optimized/3X/b/0/b0bcdd675061ab6cf270e612dfa792ebb97ba799_2_322x500.png, https://discuss.pytorch.org/uploads/default/original/3X/b/0/b0bcdd675061ab6cf270e612dfa792ebb97ba799.png 1.5x, https://discuss.pytorch.org/uploads/default/original/3X/b/0/b0bcdd675061ab6cf270e612dfa792ebb97ba799.png 2x\" data-dominant-color=\"FBF7F5\"><div class=\"meta\"><svg class=\"fa d-icon d-icon-far-image svg-icon\" aria-hidden=\"true\"><use href=\"#far-image\"></use></svg><span class=\"filename\">Screenshot from 2020-07-08 16-50-20</span><span class=\"informations\">398×617 25.4 KB</span><svg class=\"fa d-icon d-icon-discourse-expand svg-icon\" aria-hidden=\"true\"><use href=\"#discourse-expand\"></use></svg></div></a></div></p>",711 "post_number": 2,712 "post_type": 1,713 "posts_count": 5,714 "updated_at": "2020-07-08T09:03:49.396Z",715 "reply_count": 0,716 "reply_to_post_number": null,717 "quote_count": 0,718 "incoming_link_count": 1,719 "reads": 17,720 "readers_count": 16,721 "score": 8.4,722 "yours": false,723 "topic_id": 88353,724 "topic_slug": "gradient-propagation-is-none-after-torch-cat",725 "display_username": "Wai Tik Chan",726 "primary_group_name": null,727 "flair_name": null,728 "flair_url": null,729 "flair_bg_color": null,730 "flair_color": null,731 "flair_group_id": null,732 "badges_granted": [],733 "version": 1,734 "can_edit": false,735 "can_delete": false,736 "can_recover": false,737 "can_see_hidden_post": false,738 "can_wiki": false,739 "link_counts": [740 {741 "url": "https://discuss.pytorch.org/uploads/default/original/3X/b/0/b0bcdd675061ab6cf270e612dfa792ebb97ba799.png",742 "internal": true,743 "reflection": false,744 "clicks": 0745 }746 ],747 "read": true,748 "user_title": null,749 "bookmarked": false,750 "actions_summary": [],751 "moderator": false,752 "admin": false,753 "staff": false,754 "user_id": 34029,755 "hidden": false,756 "trust_level": 1,757 "deleted_at": null,758 "user_deleted": false,759 "edit_reason": null,760 "can_view_edit_history": true,761 "wiki": false,762 "post_url": "/t/gradient-propagation-is-none-after-torch-cat/88353/2",763 "can_accept_answer": false,764 "can_unaccept_answer": false,765 "accepted_answer": false,766 "topic_accepted_answer": null767 },768 {769 "id": 210285,770 "name": "Wai Tik Chan",771 "username": "Wai_Tik_Chan",772 "avatar_template": "/user_avatar/discuss.pytorch.org/wai_tik_chan/{size}/15819_2.png",773 "created_at": "2020-07-08T09:05:00.606Z",774 "cooked": "<p>Picture 2 is the screen capture in tensorboard for Conv2d layers after torch.cat<br>\n<div class=\"lightbox-wrapper\"><a class=\"lightbox\" href=\"https://discuss.pytorch.org/uploads/default/original/3X/6/7/671db56ffa5ddc64f0286813eeb18e52caac2478.png\" data-download-href=\"https://discuss.pytorch.org/uploads/default/671db56ffa5ddc64f0286813eeb18e52caac2478\" title=\"Screenshot from 2020-07-08 16-58-19\"><img src=\"https://discuss.pytorch.org/uploads/default/optimized/3X/6/7/671db56ffa5ddc64f0286813eeb18e52caac2478_2_288x500.png\" alt=\"Screenshot from 2020-07-08 16-58-19\" data-base62-sha1=\"eIcPt3702VcpFJs9A0MzsoppTOU\" width=\"288\" height=\"500\" srcset=\"https://discuss.pytorch.org/uploads/default/optimized/3X/6/7/671db56ffa5ddc64f0286813eeb18e52caac2478_2_288x500.png, https://discuss.pytorch.org/uploads/default/original/3X/6/7/671db56ffa5ddc64f0286813eeb18e52caac2478.png 1.5x, https://discuss.pytorch.org/uploads/default/original/3X/6/7/671db56ffa5ddc64f0286813eeb18e52caac2478.png 2x\" data-dominant-color=\"F8E6DF\"><div class=\"meta\"><svg class=\"fa d-icon d-icon-far-image svg-icon\" aria-hidden=\"true\"><use href=\"#far-image\"></use></svg><span class=\"filename\">Screenshot from 2020-07-08 16-58-19</span><span class=\"informations\">370×642 28.8 KB</span><svg class=\"fa d-icon d-icon-discourse-expand svg-icon\" aria-hidden=\"true\"><use href=\"#discourse-expand\"></use></svg></div></a></div></p>",775 "post_number": 3,776 "post_type": 1,777 "posts_count": 5,778 "updated_at": "2020-07-08T09:05:00.606Z",779 "reply_count": 1,780 "reply_to_post_number": null,781 "quote_count": 0,782 "incoming_link_count": 5,783 "reads": 16,784 "readers_count": 15,785 "score": 33.2,786 "yours": false,787 "topic_id": 88353,788 "topic_slug": "gradient-propagation-is-none-after-torch-cat",789 "display_username": "Wai Tik Chan",790 "primary_group_name": null,791 "flair_name": null,792 "flair_url": null,793 "flair_bg_color": null,794 "flair_color": null,795 "flair_group_id": null,796 "badges_granted": [],797 "version": 1,798 "can_edit": false,799 "can_delete": false,800 "can_recover": false,801 "can_see_hidden_post": false,802 "can_wiki": false,803 "link_counts": [804 {805 "url": "https://discuss.pytorch.org/uploads/default/original/3X/6/7/671db56ffa5ddc64f0286813eeb18e52caac2478.png",806 "internal": true,807 "reflection": false,808 "clicks": 0809 }810 ],811 "read": true,812 "user_title": null,813 "bookmarked": false,814 "actions_summary": [],815 "moderator": false,816 "admin": false,817 "staff": false,818 "user_id": 34029,819 "hidden": false,820 "trust_level": 1,821 "deleted_at": null,822 "user_deleted": false,823 "edit_reason": null,824 "can_view_edit_history": true,825 "wiki": false,826 "post_url": "/t/gradient-propagation-is-none-after-torch-cat/88353/3",827 "can_accept_answer": false,828 "can_unaccept_answer": false,829 "accepted_answer": false,830 "topic_accepted_answer": null831 },832 {833 "id": 210681,834 "name": "",835 "username": "ptrblck",836 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",837 "created_at": "2020-07-09T09:55:07.428Z",838 "cooked": "<p>Could you try to check the gradients by printing them (i.e. without TensorBoard) just for the same of debugging?</p>\n<p>To do so, you could iterate the parameters using this code snippet:</p>\n<pre><code class=\"lang-python\">for name, param in model.named_parameters():\n print(name, param.grad)\n</code></pre>\n<p>If some <code>param.grad</code> attributes are returning <code>None</code>, then the computation graph is indeed detached (and I cannot find the line of code where this is happening <img src=\"https://discuss.pytorch.org/images/emoji/apple/confused.png?v=9\" title=\":confused:\" class=\"emoji\" alt=\":confused:\"> ).</p>",839 "post_number": 4,840 "post_type": 1,841 "posts_count": 5,842 "updated_at": "2020-07-09T09:55:07.428Z",843 "reply_count": 0,844 "reply_to_post_number": 3,845 "quote_count": 0,846 "incoming_link_count": 5,847 "reads": 14,848 "readers_count": 13,849 "score": 27.8,850 "yours": false,851 "topic_id": 88353,852 "topic_slug": "gradient-propagation-is-none-after-torch-cat",853 "display_username": "",854 "primary_group_name": null,855 "flair_name": null,856 "flair_url": null,857 "flair_bg_color": null,858 "flair_color": null,859 "flair_group_id": null,860 "badges_granted": [],861 "version": 1,862 "can_edit": false,863 "can_delete": false,864 "can_recover": false,865 "can_see_hidden_post": false,866 "can_wiki": false,867 "read": true,868 "user_title": "",869 "reply_to_user": {870 "id": 34029,871 "username": "Wai_Tik_Chan",872 "name": "Wai Tik Chan",873 "avatar_template": "/user_avatar/discuss.pytorch.org/wai_tik_chan/{size}/15819_2.png"874 },875 "bookmarked": false,876 "actions_summary": [],877 "moderator": true,878 "admin": true,879 "staff": true,880 "user_id": 3534,881 "hidden": false,882 "trust_level": 2,883 "deleted_at": null,884 "user_deleted": false,885 "edit_reason": null,886 "can_view_edit_history": true,887 "wiki": false,888 "post_url": "/t/gradient-propagation-is-none-after-torch-cat/88353/4",889 "can_accept_answer": false,890 "can_unaccept_answer": false,891 "accepted_answer": false,892 "topic_accepted_answer": null893 },894 {895 "id": 210747,896 "name": "Wai Tik Chan",897 "username": "Wai_Tik_Chan",898 "avatar_template": "/user_avatar/discuss.pytorch.org/wai_tik_chan/{size}/15819_2.png",899 "created_at": "2020-07-09T14:20:29.192Z",900 "cooked": "<p>Hi ptrblck,</p>\n<p>Thanks for your reply. It really helps a lot.<br>\nThe problems turn out to be a silly mistake in the code as I have put the tensorboard code right after model.eval() with torch.no_grad() set, so, it is showing none.<br>\nWhen i have apply your check in the main loop , it shows gradient for the whole model.</p>\n<p>Thanks for you help again~~</p>\n<p>Dick</p>",901 "post_number": 5,902 "post_type": 1,903 "posts_count": 5,904 "updated_at": "2020-07-09T14:20:29.192Z",905 "reply_count": 0,906 "reply_to_post_number": null,907 "quote_count": 0,908 "incoming_link_count": 5,909 "reads": 13,910 "readers_count": 12,911 "score": 27.6,912 "yours": false,913 "topic_id": 88353,914 "topic_slug": "gradient-propagation-is-none-after-torch-cat",915 "display_username": "Wai Tik Chan",916 "primary_group_name": null,917 "flair_name": null,918 "flair_url": null,919 "flair_bg_color": null,920 "flair_color": null,921 "flair_group_id": null,922 "badges_granted": [],923 "version": 1,924 "can_edit": false,925 "can_delete": false,926 "can_recover": false,927 "can_see_hidden_post": false,928 "can_wiki": false,929 "read": true,930 "user_title": null,931 "bookmarked": false,932 "actions_summary": [],933 "moderator": false,934 "admin": false,935 "staff": false,936 "user_id": 34029,937 "hidden": false,938 "trust_level": 1,939 "deleted_at": null,940 "user_deleted": false,941 "edit_reason": null,942 "can_view_edit_history": true,943 "wiki": false,944 "post_url": "/t/gradient-propagation-is-none-after-torch-cat/88353/5",945 "can_accept_answer": false,946 "can_unaccept_answer": false,947 "accepted_answer": false,948 "topic_accepted_answer": null949 }950 ],951 "stream": [952 210280,953 210281,954 210285,955 210681,956 210747957 ]958 },959 "timeline_lookup": [960 [961 1,962 1936963 ],964 [965 4,966 1935967 ],968 [969 5,970 1934971 ]972 ],973 "suggested_topics": [974 {975 "fancy_title": "Why OneCycleLR stores part of variables in optimizer groups",976 "id": 213114,977 "title": "Why OneCycleLR stores part of variables in optimizer groups",978 "slug": "why-onecyclelr-stores-part-of-variables-in-optimizer-groups",979 "posts_count": 1,980 "reply_count": 0,981 "highest_post_number": 1,982 "image_url": null,983 "created_at": "2024-11-18T13:51:06.706Z",984 "last_posted_at": "2024-11-18T13:51:06.751Z",985 "bumped": true,986 "bumped_at": "2024-11-19T00:17:38.548Z",987 "archetype": "regular",988 "unseen": false,989 "pinned": false,990 "unpinned": null,991 "visible": true,992 "closed": false,993 "archived": false,994 "bookmarked": null,995 "liked": null,996 "tags_descriptions": {},997 "like_count": 1,998 "views": 115,999 "category_id": 1,1000 "featured_link": null,1001 "has_accepted_answer": false,1002 "posters": [1003 {1004 "extras": "latest single",1005 "description": "Original Poster, Most Recent Poster",1006 "user": {1007 "id": 80985,1008 "username": "mombip",1009 "name": "",1010 "avatar_template": "/user_avatar/discuss.pytorch.org/mombip/{size}/74062_2.png",1011 "trust_level": 01012 }1013 }1014 ]1015 },1016 {1017 "fancy_title": "Nvidia N-body executing CUDA kernel with pytorch",1018 "id": 214635,1019 "title": "Nvidia N-body executing CUDA kernel with pytorch",1020 "slug": "nvidia-n-body-executing-cuda-kernel-with-pytorch",1021 "posts_count": 2,1022 "reply_count": 0,1023 "highest_post_number": 2,1024 "image_url": null,1025 "created_at": "2024-12-25T19:12:49.505Z",1026 "last_posted_at": "2024-12-25T23:25:25.282Z",1027 "bumped": true,1028 "bumped_at": "2024-12-25T23:25:25.282Z",1029 "archetype": "regular",1030 "unseen": false,1031 "pinned": false,1032 "unpinned": null,1033 "visible": true,1034 "closed": false,1035 "archived": false,1036 "bookmarked": null,1037 "liked": null,1038 "tags_descriptions": {},1039 "like_count": 0,1040 "views": 106,1041 "category_id": 1,1042 "featured_link": null,1043 "has_accepted_answer": false,1044 "posters": [1045 {1046 "extras": null,1047 "description": "Original Poster",1048 "user": {1049 "id": 69390,1050 "username": "Georges_Leukic",1051 "name": "Georges Leukic",1052 "avatar_template": "/user_avatar/discuss.pytorch.org/georges_leukic/{size}/63838_2.png",1053 "trust_level": 01054 }1055 },1056 {1057 "extras": "latest",1058 "description": "Most Recent Poster",1059 "user": {1060 "id": 3534,1061 "username": "ptrblck",1062 "name": "",1063 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",1064 "admin": true,1065 "moderator": true,1066 "trust_level": 21067 }1068 }1069 ]1070 },1071 {1072 "fancy_title": "Best way to find a specific tensor within a model",1073 "id": 214277,1074 "title": "Best way to find a specific tensor within a model",1075 "slug": "best-way-to-find-a-specific-tensor-within-a-model",1076 "posts_count": 5,1077 "reply_count": 2,1078 "highest_post_number": 5,1079 "image_url": null,1080 "created_at": "2024-12-16T15:35:30.104Z",1081 "last_posted_at": "2024-12-16T16:49:25.910Z",1082 "bumped": true,1083 "bumped_at": "2024-12-16T16:49:25.910Z",1084 "archetype": "regular",1085 "unseen": false,1086 "pinned": false,1087 "unpinned": null,1088 "visible": true,1089 "closed": false,1090 "archived": false,1091 "bookmarked": null,1092 "liked": null,1093 "tags_descriptions": {},1094 "like_count": 2,1095 "views": 59,1096 "category_id": 1,1097 "featured_link": null,1098 "has_accepted_answer": true,1099 "posters": [1100 {1101 "extras": "latest",1102 "description": "Original Poster, Most Recent Poster, Accepted Answer",1103 "user": {1104 "id": 6296,1105 "username": "pytorcher",1106 "name": "",1107 "avatar_template": "/letter_avatar_proxy/v4/letter/p/7ea924/{size}.png",1108 "trust_level": 11109 }1110 },1111 {1112 "extras": null,1113 "description": "Frequent Poster",1114 "user": {1115 "id": 211,1116 "username": "albanD",1117 "name": "Alban D",1118 "avatar_template": "/user_avatar/discuss.pytorch.org/alband/{size}/215_2.png",1119 "admin": true,1120 "moderator": true,1121 "trust_level": 41122 }1123 }1124 ]1125 },1126 {1127 "fancy_title": "How to calculate the activation memory usage of a model",1128 "id": 215402,1129 "title": "How to calculate the activation memory usage of a model",1130 "slug": "how-to-calculate-the-activation-memory-usage-of-a-model",1131 "posts_count": 2,1132 "reply_count": 0,1133 "highest_post_number": 2,1134 "image_url": null,1135 "created_at": "2025-01-15T02:31:38.595Z",1136 "last_posted_at": "2025-01-16T13:52:14.855Z",1137 "bumped": true,1138 "bumped_at": "2025-01-16T13:52:14.855Z",1139 "archetype": "regular",1140 "unseen": false,1141 "pinned": false,1142 "unpinned": null,1143 "visible": true,1144 "closed": false,1145 "archived": false,1146 "bookmarked": null,1147 "liked": null,1148 "tags_descriptions": {},1149 "like_count": 0,1150 "views": 185,1151 "category_id": 1,1152 "featured_link": null,1153 "has_accepted_answer": false,1154 "posters": [1155 {1156 "extras": null,1157 "description": "Original Poster",1158 "user": {1159 "id": 72471,1160 "username": "shadowshadow",1161 "name": "",1162 "avatar_template": "/user_avatar/discuss.pytorch.org/shadowshadow/{size}/62985_2.png",1163 "trust_level": 21164 }1165 },1166 {1167 "extras": "latest",1168 "description": "Most Recent Poster",1169 "user": {1170 "id": 3534,1171 "username": "ptrblck",1172 "name": "",1173 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",1174 "admin": true,1175 "moderator": true,1176 "trust_level": 21177 }1178 }1179 ]1180 },1181 {1182 "fancy_title": ":RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED",1183 "id": 217297,1184 "title": ":RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED",1185 "slug": "cudnn-error-cudnn-status-execution-failed",1186 "posts_count": 3,1187 "reply_count": 1,1188 "highest_post_number": 3,1189 "image_url": null,1190 "created_at": "2025-02-28T14:38:05.225Z",1191 "last_posted_at": "2025-02-28T14:52:24.878Z",1192 "bumped": true,1193 "bumped_at": "2025-02-28T14:58:09.597Z",1194 "archetype": "regular",1195 "unseen": false,1196 "pinned": false,1197 "unpinned": null,1198 "visible": true,1199 "closed": false,1200 "archived": false,