Anurag1734/cuda-error-resolution-analysis
07
1[2 {3 "post_stream": {4 "posts": [5 {6 "id": 318498,7 "name": "Dimitri",8 "username": "DK13",9 "avatar_template": "/letter_avatar_proxy/v4/letter/d/cdc98d/{size}.png",10 "created_at": "2021-11-22T21:16:43.950Z",11 "cooked": "<p>I use the PINN approach to solve elliptic BVPs. The loss function I exploit is a weighted sum of the MSE losses of a set of collocation points in a domain $D$ and of a set of boundary points on on the boundary B, i.e. $L=L_D+w * L_B$. Both $L_D$ and $L_B$ become sufficiently small after a number of iterations (epochs), however the loss L_B is 10 to 100 smaller than $L_D$. On the other hand though, because $w$ has to be around $10-100$ for the network to describe well the boundary, the term $w L_B$ is of the same order of $L_D$. Is this an indicator of overfitting on the boundary data or not?</p>",12 "post_number": 1,13 "post_type": 1,14 "posts_count": 1,15 "updated_at": "2021-11-22T21:22:25.703Z",16 "reply_count": 0,17 "reply_to_post_number": null,18 "quote_count": 0,19 "incoming_link_count": 72,20 "reads": 6,21 "readers_count": 5,22 "score": 351.2,23 "yours": false,24 "topic_id": 137530,25 "topic_slug": "is-small-boundary-loss-an-indicator-of-overfitiing-on-the-boundary-data-in-pinns",26 "display_username": "Dimitri",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 "read": true,41 "user_title": null,42 "bookmarked": false,43 "actions_summary": [],44 "moderator": false,45 "admin": false,46 "staff": false,47 "user_id": 45848,48 "hidden": false,49 "trust_level": 1,50 "deleted_at": null,51 "user_deleted": false,52 "edit_reason": null,53 "can_view_edit_history": true,54 "wiki": false,55 "post_url": "/t/is-small-boundary-loss-an-indicator-of-overfitiing-on-the-boundary-data-in-pinns/137530/1",56 "can_accept_answer": false,57 "can_unaccept_answer": false,58 "accepted_answer": false,59 "topic_accepted_answer": null,60 "can_vote": false61 }62 ],63 "stream": [64 31849865 ]66 },67 "timeline_lookup": [68 [69 1,70 143371 ]72 ],73 "suggested_topics": [74 {75 "fancy_title": "Where can I get all the `operators` of torch?",76 "id": 212833,77 "title": "Where can I get all the `operators` of torch?",78 "slug": "where-can-i-get-all-the-operators-of-torch",79 "posts_count": 3,80 "reply_count": 1,81 "highest_post_number": 3,82 "image_url": null,83 "created_at": "2024-11-12T03:29:43.397Z",84 "last_posted_at": "2024-11-12T18:56:38.421Z",85 "bumped": true,86 "bumped_at": "2024-11-12T18:56:38.421Z",87 "archetype": "regular",88 "unseen": false,89 "pinned": false,90 "unpinned": null,91 "visible": true,92 "closed": false,93 "archived": false,94 "bookmarked": null,95 "liked": null,96 "tags_descriptions": {},97 "like_count": 1,98 "views": 93,99 "category_id": 1,100 "featured_link": null,101 "has_accepted_answer": true,102 "posters": [103 {104 "extras": null,105 "description": "Original Poster",106 "user": {107 "id": 72718,108 "username": "shaoyu_young",109 "name": "shaoyu young",110 "avatar_template": "/user_avatar/discuss.pytorch.org/shaoyu_young/{size}/63697_2.png",111 "trust_level": 1112 }113 },114 {115 "extras": "latest",116 "description": "Most Recent Poster, Accepted Answer",117 "user": {118 "id": 3534,119 "username": "ptrblck",120 "name": "",121 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",122 "admin": true,123 "moderator": true,124 "trust_level": 2125 }126 }127 ]128 },129 {130 "fancy_title": "Alternatives to parallel processing of ensemble of the same architecture?",131 "id": 212634,132 "title": "Alternatives to parallel processing of ensemble of the same architecture?",133 "slug": "alternatives-to-parallel-processing-of-ensemble-of-the-same-architecture",134 "posts_count": 4,135 "reply_count": 1,136 "highest_post_number": 4,137 "image_url": null,138 "created_at": "2024-11-06T22:12:39.021Z",139 "last_posted_at": "2024-11-12T06:16:53.789Z",140 "bumped": true,141 "bumped_at": "2024-11-12T06:16:53.789Z",142 "archetype": "regular",143 "unseen": false,144 "pinned": false,145 "unpinned": null,146 "visible": true,147 "closed": false,148 "archived": false,149 "bookmarked": null,150 "liked": null,151 "tags_descriptions": {},152 "like_count": 2,153 "views": 36,154 "category_id": 1,155 "featured_link": null,156 "has_accepted_answer": false,157 "posters": [158 {159 "extras": "latest",160 "description": "Original Poster, Most Recent Poster",161 "user": {162 "id": 80628,163 "username": "fabrizio_chavez",164 "name": "fabrizio chavez",165 "avatar_template": "/user_avatar/discuss.pytorch.org/fabrizio_chavez/{size}/72477_2.png",166 "trust_level": 1167 }168 },169 {170 "extras": null,171 "description": "Frequent Poster",172 "user": {173 "id": 80724,174 "username": "paulge",175 "name": "",176 "avatar_template": "/letter_avatar_proxy/v4/letter/p/82dd89/{size}.png",177 "trust_level": 2178 }179 }180 ]181 },182 {183 "fancy_title": "FlexAttention with sparse edge bias",184 "id": 216376,185 "title": "FlexAttention with sparse edge bias",186 "slug": "flexattention-with-sparse-edge-bias",187 "posts_count": 1,188 "reply_count": 0,189 "highest_post_number": 1,190 "image_url": null,191 "created_at": "2025-02-07T18:02:41.974Z",192 "last_posted_at": "2025-02-07T18:02:42.019Z",193 "bumped": true,194 "bumped_at": "2025-02-07T18:02:42.019Z",195 "archetype": "regular",196 "unseen": false,197 "pinned": false,198 "unpinned": null,199 "visible": true,200 "closed": false,201 "archived": false,202 "bookmarked": null,203 "liked": null,204 "tags_descriptions": {},205 "like_count": 0,206 "views": 92,207 "category_id": 1,208 "featured_link": null,209 "has_accepted_answer": false,210 "posters": [211 {212 "extras": "latest single",213 "description": "Original Poster, Most Recent Poster",214 "user": {215 "id": 82551,216 "username": "mbaranov",217 "name": "Max Baranov",218 "avatar_template": "/letter_avatar_proxy/v4/letter/m/76d3ee/{size}.png",219 "trust_level": 0220 }221 }222 ]223 },224 {225 "fancy_title": "“Error when running official test cases: test cases not found.”",226 "id": 217519,227 "title": "\"Error when running official test cases: test cases not found.\"",228 "slug": "error-when-running-official-test-cases-test-cases-not-found",229 "posts_count": 2,230 "reply_count": 0,231 "highest_post_number": 2,232 "image_url": "https://discuss.pytorch.org/uploads/default/original/3X/0/7/07f427ed447441c796cc00368ae2ec68bd0ceb69.png",233 "created_at": "2025-03-06T13:57:26.260Z",234 "last_posted_at": "2025-03-06T14:49:14.749Z",235 "bumped": true,236 "bumped_at": "2025-03-06T14:49:14.749Z",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": 28,249 "category_id": 1,250 "featured_link": null,251 "has_accepted_answer": false,252 "posters": [253 {254 "extras": null,255 "description": "Original Poster",256 "user": {257 "id": 83094,258 "username": "mmzhangna",259 "name": null,260 "avatar_template": "/letter_avatar_proxy/v4/letter/m/278dde/{size}.png",261 "trust_level": 0262 }263 },264 {265 "extras": "latest",266 "description": "Most Recent 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": "ERROR: Could not find a version that satisfies the requirement pytorch-triton==2.3.1+958fccea74",281 "id": 218668,282 "title": "ERROR: Could not find a version that satisfies the requirement pytorch-triton==2.3.1+958fccea74",283 "slug": "error-could-not-find-a-version-that-satisfies-the-requirement-pytorch-triton-2-3-1-958fccea74",284 "posts_count": 1,285 "reply_count": 0,286 "highest_post_number": 1,287 "image_url": null,288 "created_at": "2025-04-06T17:26:03.775Z",289 "last_posted_at": "2025-04-06T17:26:03.820Z",290 "bumped": true,291 "bumped_at": "2025-04-06T17:26:03.820Z",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": 242,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": 83348,313 "username": "Krytern",314 "name": "",315 "avatar_template": "/user_avatar/discuss.pytorch.org/krytern/{size}/76527_2.png",316 "trust_level": 1317 }318 }319 ]320 }321 ],322 "tags_descriptions": {},323 "fancy_title": "Is small boundary loss an indicator of overfitiing on the boundary data in PINNs?",324 "id": 137530,325 "title": "Is small boundary loss an indicator of overfitiing on the boundary data in PINNs?",326 "posts_count": 1,327 "created_at": "2021-11-22T21:16:43.878Z",328 "views": 526,329 "reply_count": 0,330 "like_count": 0,331 "last_posted_at": "2021-11-22T21:16:43.950Z",332 "visible": true,333 "closed": false,334 "archived": false,335 "has_summary": false,336 "archetype": "regular",337 "slug": "is-small-boundary-loss-an-indicator-of-overfitiing-on-the-boundary-data-in-pinns",338 "category_id": 1,339 "word_count": 118,340 "deleted_at": null,341 "user_id": 45848,342 "featured_link": null,343 "pinned_globally": false,344 "pinned_at": null,345 "pinned_until": null,346 "image_url": null,347 "slow_mode_seconds": 0,348 "draft": null,349 "draft_key": "topic_137530",350 "draft_sequence": null,351 "unpinned": null,352 "pinned": false,353 "current_post_number": 1,354 "highest_post_number": 1,355 "deleted_by": null,356 "actions_summary": [357 {358 "id": 4,359 "count": 0,360 "hidden": false,361 "can_act": false362 },363 {364 "id": 8,365 "count": 0,366 "hidden": false,367 "can_act": false368 },369 {370 "id": 10,371 "count": 0,372 "hidden": false,373 "can_act": false374 },375 {376 "id": 7,377 "count": 0,378 "hidden": false,379 "can_act": false380 }381 ],382 "chunk_size": 20,383 "bookmarked": false,384 "topic_timer": null,385 "message_bus_last_id": 0,386 "participant_count": 1,387 "show_read_indicator": false,388 "thumbnails": null,389 "slow_mode_enabled_until": null,390 "can_vote": false,391 "vote_count": 0,392 "user_voted": false,393 "discourse_zendesk_plugin_zendesk_id": null,394 "discourse_zendesk_plugin_zendesk_url": "https://your-url.zendesk.com/agent/tickets/",395 "details": {396 "can_edit": false,397 "notification_level": 1,398 "participants": [399 {400 "id": 45848,401 "username": "DK13",402 "name": "Dimitri",403 "avatar_template": "/letter_avatar_proxy/v4/letter/d/cdc98d/{size}.png",404 "post_count": 1,405 "primary_group_name": null,406 "flair_name": null,407 "flair_url": null,408 "flair_color": null,409 "flair_bg_color": null,410 "flair_group_id": null,411 "trust_level": 1412 }413 ],414 "created_by": {415 "id": 45848,416 "username": "DK13",417 "name": "Dimitri",418 "avatar_template": "/letter_avatar_proxy/v4/letter/d/cdc98d/{size}.png"419 },420 "last_poster": {421 "id": 45848,422 "username": "DK13",423 "name": "Dimitri",424 "avatar_template": "/letter_avatar_proxy/v4/letter/d/cdc98d/{size}.png"425 }426 },427 "bookmarks": []428 },429 {430 "post_stream": {431 "posts": [432 {433 "id": 318320,434 "name": "Federico Ottomano",435 "username": "Federico_Ottomano",436 "avatar_template": "/user_avatar/discuss.pytorch.org/federico_ottomano/{size}/43102_2.png",437 "created_at": "2021-11-21T19:47:13.521Z",438 "cooked": "<p>Hello everybody, I’m writing here to ask some opinions about my situation. I’ve been using pytorch and pytorch geometric for my deep learning architecture on a multi-regression with two targets. Everything looks pretty ok, except that, during training process, my validation loss keeps being lower than training one.</p>\n<p>I’m attaching here my train and validation <code>for</code> loops:</p>\n<pre><code class=\"lang-auto\">def train_model(model, train_loader,val_loader,lr):\n \n \"Model training\"\n\n epochs=50\n \n\n model.train()\n\n train_losses = []\n \n val_losses = []\n\n criterion = nn.MSELoss()\n\n optimizer = torch.optim.Adam(model.parameters(), lr=lr, weight_decay=1e-5)\n \n #Reduce learning rate if no improvement is observed after 10 Epochs.\n \n #scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, 'min', patience=2, verbose=True)\n\n for epoch in range(epochs):\n \n loss_batches=[]\n \n for data in train_loader:\n\n y_pred = model.forward(data)\n\n loss1 = criterion(y_pred[:, 0], data.y[0])\n \n loss2 = criterion(y_pred[:,1], data.y[1])\n \n train_loss = 0.8*loss1+0.2*loss2\n\n optimizer.zero_grad()\n\n train_loss.backward()\n\n optimizer.step()\n \n loss_batches.append(train_loss.item())\n \n train_losses.append(sum(loss_batches)/len(loss_batches))\n \n with torch.no_grad():\n \n loss_batches=[]\n \n for data in val_loader:\n \n y_val = model.forward(data)\n \n loss1 = criterion(y_val[:,0], data.y[0])\n \n loss2 = criterion(y_val[:,1], data.y[1])\n \n val_loss = 0.5*loss1+0.5*loss2\n \n loss_batches.append(val_loss.item())\n \n val_losses.append(sum(loss_batches)/len(loss_batches))\n \n print(f'Epoch: {epoch}, train_loss: {train_losses[epoch]:.3f} , val_loss: {val_losses[epoch]:.3f}')\n \n return train_losses, val_losses\n</code></pre>\n<p>I’m perplexed about the correctness of my methodology, especially about the indentation of my code, but I really can’t figure out what can be wrong. I’m also attaching the information printed out during training for each epoch: (as you can see from the code I’m displaying a final train/val loss that is just the average of all train/val losses of all batches)</p>\n<pre><code class=\"lang-auto\">Epoch: 0, train_loss: 7.378 , val_loss: 5.690\nEpoch: 1, train_loss: 5.618 , val_loss: 3.611\nEpoch: 2, train_loss: 2.789 , val_loss: 1.831\nEpoch: 3, train_loss: 2.037 , val_loss: 1.623\nEpoch: 4, train_loss: 1.850 , val_loss: 1.502\nEpoch: 5, train_loss: 1.682 , val_loss: 1.400\nEpoch: 6, train_loss: 1.536 , val_loss: 1.331\nEpoch: 7, train_loss: 1.440 , val_loss: 1.295\nEpoch: 8, train_loss: 1.387 , val_loss: 1.273\nEpoch: 9, train_loss: 1.356 , val_loss: 1.256\nEpoch: 10, train_loss: 1.335 , val_loss: 1.242\nEpoch: 11, train_loss: 1.319 , val_loss: 1.230\nEpoch: 12, train_loss: 1.306 , val_loss: 1.218\nEpoch: 13, train_loss: 1.295 , val_loss: 1.206\nEpoch: 14, train_loss: 1.284 , val_loss: 1.192\nEpoch: 15, train_loss: 1.273 , val_loss: 1.175\nEpoch: 16, train_loss: 1.261 , val_loss: 1.157\nEpoch: 17, train_loss: 1.250 , val_loss: 1.139\nEpoch: 18, train_loss: 1.239 , val_loss: 1.119\nEpoch: 19, train_loss: 1.227 , val_loss: 1.098\nEpoch: 20, train_loss: 1.216 , val_loss: 1.076\nEpoch: 21, train_loss: 1.204 , val_loss: 1.053\nEpoch: 22, train_loss: 1.192 , val_loss: 1.030\nEpoch: 23, train_loss: 1.181 , val_loss: 1.009\nEpoch: 24, train_loss: 1.171 , val_loss: 0.989\nEpoch: 25, train_loss: 1.161 , val_loss: 0.972\nEpoch: 26, train_loss: 1.153 , val_loss: 0.958\nEpoch: 27, train_loss: 1.146 , val_loss: 0.946\nEpoch: 28, train_loss: 1.140 , val_loss: 0.937\nEpoch: 29, train_loss: 1.135 , val_loss: 0.930\nEpoch: 30, train_loss: 1.131 , val_loss: 0.924\nEpoch: 31, train_loss: 1.128 , val_loss: 0.919\nEpoch: 32, train_loss: 1.124 , val_loss: 0.915\nEpoch: 33, train_loss: 1.122 , val_loss: 0.911\nEpoch: 34, train_loss: 1.119 , val_loss: 0.908\nEpoch: 35, train_loss: 1.117 , val_loss: 0.905\nEpoch: 36, train_loss: 1.114 , val_loss: 0.902\nEpoch: 37, train_loss: 1.112 , val_loss: 0.899\nEpoch: 38, train_loss: 1.110 , val_loss: 0.897\nEpoch: 39, train_loss: 1.108 , val_loss: 0.894\nEpoch: 40, train_loss: 1.106 , val_loss: 0.892\nEpoch: 41, train_loss: 1.105 , val_loss: 0.890\nEpoch: 42, train_loss: 1.103 , val_loss: 0.888\nEpoch: 43, train_loss: 1.102 , val_loss: 0.886\nEpoch: 44, train_loss: 1.100 , val_loss: 0.885\nEpoch: 45, train_loss: 1.099 , val_loss: 0.883\nEpoch: 46, train_loss: 1.097 , val_loss: 0.881\nEpoch: 47, train_loss: 1.096 , val_loss: 0.880\nEpoch: 48, train_loss: 1.095 , val_loss: 0.878\nEpoch: 49, train_loss: 1.093 , val_loss: 0.876\n</code></pre>\n<p>The funny thing is, that apart from this strangeness, the model seems to work, since considering completely new unseen data in my <code>test_loader</code>, the predictions appear to be pretty accurate, and I’m able to get to an <code>r2_score</code> of 0.52 for the first target and 0.72 for the second one. I appreciate anybody providing his/her opinion about this situation <img src=\"https://discuss.pytorch.org/images/emoji/apple/slight_smile.png?v=10\" title=\":slight_smile:\" class=\"emoji\" alt=\":slight_smile:\"></p>\n<p>Many thanks,</p>\n<p>Federico</p>",439 "post_number": 1,440 "post_type": 1,441 "posts_count": 4,442 "updated_at": "2021-11-21T21:29:44.355Z",443 "reply_count": 0,444 "reply_to_post_number": null,445 "quote_count": 0,446 "incoming_link_count": 916,447 "reads": 17,448 "readers_count": 16,449 "score": 4543.4,450 "yours": false,451 "topic_id": 137445,452 "topic_slug": "validation-loss-lower-than-training-loss",453 "display_username": "Federico Ottomano",454 "primary_group_name": null,455 "flair_name": null,456 "flair_url": null,457 "flair_bg_color": null,458 "flair_color": null,459 "flair_group_id": null,460 "badges_granted": [],461 "version": 2,462 "can_edit": false,463 "can_delete": false,464 "can_recover": false,465 "can_see_hidden_post": false,466 "can_wiki": false,467 "read": true,468 "user_title": null,469 "bookmarked": false,470 "actions_summary": [],471 "moderator": false,472 "admin": false,473 "staff": false,474 "user_id": 49912,475 "hidden": false,476 "trust_level": 1,477 "deleted_at": null,478 "user_deleted": false,479 "edit_reason": null,480 "can_view_edit_history": true,481 "wiki": false,482 "post_url": "/t/validation-loss-lower-than-training-loss/137445/1",483 "can_accept_answer": false,484 "can_unaccept_answer": false,485 "accepted_answer": false,486 "topic_accepted_answer": null,487 "can_vote": false488 },489 {490 "id": 318335,491 "name": "",492 "username": "ptrblck",493 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",494 "created_at": "2021-11-21T21:33:30.887Z",495 "cooked": "<p>It seems the loss weighting is different between training and validation.<br>\nCould you explain the loss weighting a bit and what its purpose is (I would guess you are trying to balance the losses for an imbalanced dataset)? Could you check if the losses would be closer to each other with the same weighting values?</p>",496 "post_number": 2,497 "post_type": 1,498 "posts_count": 4,499 "updated_at": "2021-11-21T21:33:30.887Z",500 "reply_count": 0,501 "reply_to_post_number": null,502 "quote_count": 0,503 "incoming_link_count": 1,504 "reads": 17,505 "readers_count": 16,506 "score": 8.4,507 "yours": false,508 "topic_id": 137445,509 "topic_slug": "validation-loss-lower-than-training-loss",510 "display_username": "",511 "primary_group_name": null,512 "flair_name": null,513 "flair_url": null,514 "flair_bg_color": null,515 "flair_color": null,516 "flair_group_id": null,517 "badges_granted": [],518 "version": 1,519 "can_edit": false,520 "can_delete": false,521 "can_recover": false,522 "can_see_hidden_post": false,523 "can_wiki": false,524 "read": true,525 "user_title": "",526 "bookmarked": false,527 "actions_summary": [],528 "moderator": true,529 "admin": true,530 "staff": true,531 "user_id": 3534,532 "hidden": false,533 "trust_level": 2,534 "deleted_at": null,535 "user_deleted": false,536 "edit_reason": null,537 "can_view_edit_history": true,538 "wiki": false,539 "post_url": "/t/validation-loss-lower-than-training-loss/137445/2",540 "can_accept_answer": false,541 "can_unaccept_answer": false,542 "accepted_answer": false,543 "topic_accepted_answer": null544 },545 {546 "id": 318421,547 "name": "Federico Ottomano",548 "username": "Federico_Ottomano",549 "avatar_template": "/user_avatar/discuss.pytorch.org/federico_ottomano/{size}/43102_2.png",550 "created_at": "2021-11-22T12:59:51.935Z",551 "cooked": "<p>Thanks for reaching out.</p>\n<p>Indeed it was just a silly mistake leaving different weighted losses between training and validation. I’ve just put both losses as <code>0.5*loss1 + 0.5* loss2</code> and this is how my training looks like now:</p>\n<pre><code class=\"lang-auto\">Epoch: 0, train_loss: 6.007 , val_loss: 5.639\nEpoch: 1, train_loss: 4.894 , val_loss: 3.604\nEpoch: 2, train_loss: 2.423 , val_loss: 1.695\nEpoch: 3, train_loss: 1.642 , val_loss: 1.520\nEpoch: 4, train_loss: 1.511 , val_loss: 1.408\nEpoch: 5, train_loss: 1.397 , val_loss: 1.297\nEpoch: 6, train_loss: 1.286 , val_loss: 1.196\nEpoch: 7, train_loss: 1.193 , val_loss: 1.116\nEpoch: 8, train_loss: 1.119 , val_loss: 1.053\nEpoch: 9, train_loss: 1.055 , val_loss: 0.992\nEpoch: 10, train_loss: 0.993 , val_loss: 0.936\nEpoch: 11, train_loss: 0.941 , val_loss: 0.895\nEpoch: 12, train_loss: 0.905 , val_loss: 0.870\nEpoch: 13, train_loss: 0.883 , val_loss: 0.856\nEpoch: 14, train_loss: 0.870 , val_loss: 0.847\nEpoch: 15, train_loss: 0.860 , val_loss: 0.840\nEpoch: 16, train_loss: 0.853 , val_loss: 0.834\nEpoch: 17, train_loss: 0.846 , val_loss: 0.830\nEpoch: 18, train_loss: 0.841 , val_loss: 0.826\nEpoch: 19, train_loss: 0.837 , val_loss: 0.822\nEpoch: 20, train_loss: 0.833 , val_loss: 0.819\nEpoch: 21, train_loss: 0.829 , val_loss: 0.817\nEpoch: 22, train_loss: 0.826 , val_loss: 0.814\nEpoch: 23, train_loss: 0.823 , val_loss: 0.812\nEpoch: 24, train_loss: 0.820 , val_loss: 0.810\nEpoch: 25, train_loss: 0.817 , val_loss: 0.808\nEpoch: 26, train_loss: 0.815 , val_loss: 0.806\nEpoch: 27, train_loss: 0.812 , val_loss: 0.805\nEpoch: 28, train_loss: 0.810 , val_loss: 0.803\nEpoch: 29, train_loss: 0.808 , val_loss: 0.802\nEpoch: 30, train_loss: 0.806 , val_loss: 0.801\nEpoch: 31, train_loss: 0.804 , val_loss: 0.799\nEpoch: 32, train_loss: 0.802 , val_loss: 0.798\nEpoch: 33, train_loss: 0.800 , val_loss: 0.797\nEpoch: 34, train_loss: 0.798 , val_loss: 0.796\nEpoch: 35, train_loss: 0.796 , val_loss: 0.794\nEpoch: 36, train_loss: 0.795 , val_loss: 0.793\nEpoch: 37, train_loss: 0.793 , val_loss: 0.792\nEpoch: 38, train_loss: 0.791 , val_loss: 0.791\nEpoch: 39, train_loss: 0.789 , val_loss: 0.790\nEpoch: 40, train_loss: 0.788 , val_loss: 0.789\nEpoch: 41, train_loss: 0.786 , val_loss: 0.788\nEpoch: 42, train_loss: 0.784 , val_loss: 0.787\nEpoch: 43, train_loss: 0.783 , val_loss: 0.786\nEpoch: 44, train_loss: 0.781 , val_loss: 0.785\nEpoch: 45, train_loss: 0.780 , val_loss: 0.784\nEpoch: 46, train_loss: 0.778 , val_loss: 0.783\nEpoch: 47, train_loss: 0.776 , val_loss: 0.782\nEpoch: 48, train_loss: 0.775 , val_loss: 0.781\nEpoch: 49, train_loss: 0.773 , val_loss: 0.780\n</code></pre>\n<p>I’m also attaching a plot to visualize the behaviour:</p>\n<p><img src=\"https://discuss.pytorch.org/uploads/default/original/3X/c/3/c3beef34e1d20eef5aba3ad1f2e9e0937bdaa4f7.png\" alt=\"train_val\" data-base62-sha1=\"rVEbgR4jwFYUpDTktM1aLk2Q3hd\" width=\"362\" height=\"248\"></p>\n<p>I also have the feeling that I may mess things up when I build <code>train_loader</code> and <code>val_loader</code> in a separate class. Basically I split the original data into training and test, and then I use the original train dataset to split again into training and validation. I’m attaching some additional code to let you better frame the situation:</p>\n<pre><code>df = pd.read_csv(data_path)\ndf_train, df_test = train_test_split(df, test_size=0.25)\ndf_tr, df_val = train_test_split(df_train, test_size=0.25)\n\ntrain_dataset = MyCompositionalDataset(df_tr, fea_path)\nval_dataset = MyCompositionalDataset(df_val, fea_path)\ntest_dataset = MyCompositionalDataset(df_test, fea_path)\n\ntrain_list = [Data(x=train, edge_index=make_fully_connected(train.shape[0]), y=target) for train,target in train_dataset]\nval_list = [Data(x=train, edge_index=make_fully_connected(train.shape[0]), y=target) for train,target in val_dataset]\ntest_list = [Data(x=train, edge_index=make_fully_connected(train.shape[0]), y=target) for train,target in test_dataset]\ntrain_loader = DataLoader(train_list, batch_size=batch_size)\nval_loader = DataLoader(val_list, batch_size=batch_size)\ntest_loader= DataLoader(test_list, batch_size=len(test_list))\n</code></pre>\n<p>this is part of my data processing method returning then <code>train_loader</code>,<code> val_loader</code>, <code>test_loader</code>. Maybe you can spot something from this… Do you think that the initial separation through <code>train_test_split()</code> has been done correctly?</p>\n<p>Many thanks,</p>\n<p>Fede</p>",552 "post_number": 3,553 "post_type": 1,554 "posts_count": 4,555 "updated_at": "2021-11-22T13:02:21.362Z",556 "reply_count": 1,557 "reply_to_post_number": null,558 "quote_count": 0,559 "incoming_link_count": 37,560 "reads": 16,561 "readers_count": 15,562 "score": 193.2,563 "yours": false,564 "topic_id": 137445,565 "topic_slug": "validation-loss-lower-than-training-loss",566 "display_username": "Federico Ottomano",567 "primary_group_name": null,568 "flair_name": null,569 "flair_url": null,570 "flair_bg_color": null,571 "flair_color": null,572 "flair_group_id": null,573 "badges_granted": [],574 "version": 2,575 "can_edit": false,576 "can_delete": false,577 "can_recover": false,578 "can_see_hidden_post": false,579 "can_wiki": false,580 "read": true,581 "user_title": null,582 "bookmarked": false,583 "actions_summary": [],584 "moderator": false,585 "admin": false,586 "staff": false,587 "user_id": 49912,588 "hidden": false,589 "trust_level": 1,590 "deleted_at": null,591 "user_deleted": false,592 "edit_reason": null,593 "can_view_edit_history": true,594 "wiki": false,595 "post_url": "/t/validation-loss-lower-than-training-loss/137445/3",596 "can_accept_answer": false,597 "can_unaccept_answer": false,598 "accepted_answer": false,599 "topic_accepted_answer": null600 },601 {602 "id": 318496,603 "name": "",604 "username": "ptrblck",605 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",606 "created_at": "2021-11-22T21:08:14.533Z",607 "cooked": "<p>Yes, the split looks correct and is often done in the same way and I can’t see any obvious issues in your code.</p>",608 "post_number": 4,609 "post_type": 1,610 "posts_count": 4,611 "updated_at": "2021-11-22T21:08:14.533Z",612 "reply_count": 0,613 "reply_to_post_number": 3,614 "quote_count": 0,615 "incoming_link_count": 2,616 "reads": 15,617 "readers_count": 14,618 "score": 28.0,619 "yours": false,620 "topic_id": 137445,621 "topic_slug": "validation-loss-lower-than-training-loss",622 "display_username": "",623 "primary_group_name": null,624 "flair_name": null,625 "flair_url": null,626 "flair_bg_color": null,627 "flair_color": null,628 "flair_group_id": null,629 "badges_granted": [],630 "version": 1,631 "can_edit": false,632 "can_delete": false,633 "can_recover": false,634 "can_see_hidden_post": false,635 "can_wiki": false,636 "read": true,637 "user_title": "",638 "reply_to_user": {639 "id": 49912,640 "username": "Federico_Ottomano",641 "name": "Federico Ottomano",642 "avatar_template": "/user_avatar/discuss.pytorch.org/federico_ottomano/{size}/43102_2.png"643 },644 "bookmarked": false,645 "actions_summary": [646 {647 "id": 2,648 "count": 1649 }650 ],651 "moderator": true,652 "admin": true,653 "staff": true,654 "user_id": 3534,655 "hidden": false,656 "trust_level": 2,657 "deleted_at": null,658 "user_deleted": false,659 "edit_reason": null,660 "can_view_edit_history": true,661 "wiki": false,662 "post_url": "/t/validation-loss-lower-than-training-loss/137445/4",663 "can_accept_answer": false,664 "can_unaccept_answer": false,665 "accepted_answer": false,666 "topic_accepted_answer": null667 }668 ],669 "stream": [670 318320,671 318335,672 318421,673 318496674 ]675 },676 "timeline_lookup": [677 [678 1,679 1434680 ],681 [682 3,683 1433684 ]685 ],686 "suggested_topics": [687 {688 "fancy_title": "Torch.version.cuda: 12.6",689 "id": 216049,690 "title": "Torch.version.cuda: 12.6",691 "slug": "torch-version-cuda-12-6",692 "posts_count": 9,693 "reply_count": 1,694 "highest_post_number": 9,695 "image_url": null,696 "created_at": "2025-01-30T11:38:17.442Z",697 "last_posted_at": "2025-05-22T08:26:25.561Z",698 "bumped": true,699 "bumped_at": "2025-05-22T08:26:25.561Z",700 "archetype": "regular",701 "unseen": false,702 "pinned": false,703 "unpinned": null,704 "visible": true,705 "closed": false,706 "archived": false,707 "bookmarked": null,708 "liked": null,709 "tags_descriptions": {},710 "like_count": 0,711 "views": 421,712 "category_id": 1,713 "featured_link": null,714 "has_accepted_answer": false,715 "posters": [716 {717 "extras": "latest",718 "description": "Original Poster, Most Recent Poster",719 "user": {720 "id": 82399,721 "username": "Alex_P",722 "name": "Alex P",723 "avatar_template": "/user_avatar/discuss.pytorch.org/alex_p/{size}/74893_2.png",724 "trust_level": 1725 }726 },727 {728 "extras": null,729 "description": "Frequent Poster",730 "user": {731 "id": 3534,732 "username": "ptrblck",733 "name": "",734 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",735 "admin": true,736 "moderator": true,737 "trust_level": 2738 }739 }740 ]741 },742 {743 "fancy_title": "NVIDIA L40S-48Q and “RuntimeError: CUDA error: operation not supported”",744 "id": 212716,745 "title": "NVIDIA L40S-48Q and \"RuntimeError: CUDA error: operation not supported\"",746 "slug": "nvidia-l40s-48q-and-runtimeerror-cuda-error-operation-not-supported",747 "posts_count": 11,748 "reply_count": 9,749 "highest_post_number": 11,750 "image_url": null,751 "created_at": "2024-11-08T19:29:41.292Z",752 "last_posted_at": "2025-02-11T14:25:17.459Z",753 "bumped": true,754 "bumped_at": "2025-02-11T14:26:35.274Z",755 "archetype": "regular",756 "unseen": false,757 "pinned": false,758 "unpinned": null,759 "visible": true,760 "closed": false,761 "archived": false,762 "bookmarked": null,763 "liked": null,764 "tags_descriptions": {},765 "like_count": 1,766 "views": 1360,767 "category_id": 1,768 "featured_link": null,769 "has_accepted_answer": false,770 "posters": [771 {772 "extras": null,773 "description": "Original Poster",774 "user": {775 "id": 7291,776 "username": "Chris_Palmer",777 "name": "Chris Palmer",778 "avatar_template": "/user_avatar/discuss.pytorch.org/chris_palmer/{size}/12322_2.png",779 "trust_level": 1780 }781 },782 {783 "extras": null,784 "description": "Frequent Poster",785 "user": {786 "id": 3534,787 "username": "ptrblck",788 "name": "",789 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",790 "admin": true,791 "moderator": true,792 "trust_level": 2793 }794 },795 {796 "extras": "latest",797 "description": "Most Recent Poster",798 "user": {799 "id": 82625,800 "username": "briskajanis1",801 "name": "Briskajanis1",802 "avatar_template": "/user_avatar/discuss.pytorch.org/briskajanis1/{size}/75599_2.png",803 "trust_level": 0804 }805 }806 ]807 },808 {809 "fancy_title": "Transformer application for spectra regression",810 "id": 212961,811 "title": "Transformer application for spectra regression",812 "slug": "transformer-application-for-spectra-regression",813 "posts_count": 1,814 "reply_count": 0,815 "highest_post_number": 1,816 "image_url": null,817 "created_at": "2024-11-14T02:47:03.765Z",818 "last_posted_at": "2024-11-14T02:47:03.809Z",819 "bumped": true,820 "bumped_at": "2024-11-14T02:47:03.809Z",821 "archetype": "regular",822 "unseen": false,823 "pinned": false,824 "unpinned": null,825 "visible": true,826 "closed": false,827 "archived": false,828 "bookmarked": null,829 "liked": null,830 "tags_descriptions": {},831 "like_count": 0,832 "views": 108,833 "category_id": 1,834 "featured_link": null,835 "has_accepted_answer": false,836 "posters": [837 {838 "extras": "latest single",839 "description": "Original Poster, Most Recent Poster",840 "user": {841 "id": 80903,842 "username": "Camouflage_aa",843 "name": "Camouflage aa",844 "avatar_template": "/user_avatar/discuss.pytorch.org/camouflage_aa/{size}/73986_2.png",845 "trust_level": 0846 }847 }848 ]849 },850 {851 "fancy_title": "Use flexattention with torchrec",852 "id": 215998,853 "title": "Use flexattention with torchrec",854 "slug": "use-flexattention-with-torchrec",855 "posts_count": 2,856 "reply_count": 0,857 "highest_post_number": 2,858 "image_url": null,859 "created_at": "2025-01-28T17:55:21.621Z",860 "last_posted_at": "2025-01-28T19:16:28.133Z",861 "bumped": true,862 "bumped_at": "2025-01-28T19:16:28.133Z",863 "archetype": "regular",864 "unseen": false,865 "pinned": false,866 "unpinned": null,867 "visible": true,868 "closed": false,869 "archived": false,870 "bookmarked": null,871 "liked": null,872 "tags_descriptions": {},873 "like_count": 0,874 "views": 136,875 "category_id": 1,876 "featured_link": null,877 "has_accepted_answer": false,878 "posters": [879 {880 "extras": "latest single",881 "description": "Original Poster, Most Recent Poster",882 "user": {883 "id": 82366,884 "username": "Tpopok",885 "name": "Topopk",886 "avatar_template": "/user_avatar/discuss.pytorch.org/tpopok/{size}/75353_2.png",887 "trust_level": 0888 }889 }890 ]891 },892 {893 "fancy_title": "Question About the Design of Serialization Function Signature in BackendMeta.",894 "id": 216745,895 "title": "Question About the Design of Serialization Function Signature in BackendMeta.",896 "slug": "question-about-the-design-of-serialization-function-signature-in-backendmeta",897 "posts_count": 1,898 "reply_count": 0,899 "highest_post_number": 1,900 "image_url": null,901 "created_at": "2025-02-16T15:50:51.238Z",902 "last_posted_at": "2025-02-16T15:50:51.270Z",903 "bumped": true,904 "bumped_at": "2025-02-16T15:50:51.270Z",905 "archetype": "regular",906 "unseen": false,907 "pinned": false,908 "unpinned": null,909 "visible": true,910 "closed": false,911 "archived": false,912 "bookmarked": null,913 "liked": null,914 "tags_descriptions": {},915 "like_count": 0,916 "views": 20,917 "category_id": 1,918 "featured_link": null,919 "has_accepted_answer": false,920 "posters": [921 {922 "extras": "latest single",923 "description": "Original Poster, Most Recent Poster",924 "user": {925 "id": 82722,926 "username": "Seungchul_Han",927 "name": "Seungchul Han",928 "avatar_template": "/user_avatar/discuss.pytorch.org/seungchul_han/{size}/74567_2.png",929 "trust_level": 0930 }931 }932 ]933 }934 ],935 "tags_descriptions": {},936 "fancy_title": "Validation loss lower than training loss",937 "id": 137445,938 "title": "Validation loss lower than training loss",939 "posts_count": 4,940 "created_at": "2021-11-21T19:47:13.433Z",941 "views": 1943,942 "reply_count": 1,943 "like_count": 1,944 "last_posted_at": "2021-11-22T21:08:14.533Z",945 "visible": true,946 "closed": false,947 "archived": false,948 "has_summary": false,949 "archetype": "regular",950 "slug": "validation-loss-lower-than-training-loss",951 "category_id": 1,952 "word_count": 1479,953 "deleted_at": null,954 "user_id": 49912,955 "featured_link": null,956 "pinned_globally": false,957 "pinned_at": null,958 "pinned_until": null,959 "image_url": null,960 "slow_mode_seconds": 0,961 "draft": null,962 "draft_key": "topic_137445",963 "draft_sequence": null,964 "unpinned": null,965 "pinned": false,966 "current_post_number": 1,967 "highest_post_number": 4,968 "deleted_by": null,969 "actions_summary": [970 {971 "id": 4,972 "count": 0,973 "hidden": false,974 "can_act": false975 },976 {977 "id": 8,978 "count": 0,979 "hidden": false,980 "can_act": false981 },982 {983 "id": 10,984 "count": 0,985 "hidden": false,986 "can_act": false987 },988 {989 "id": 7,990 "count": 0,991 "hidden": false,992 "can_act": false993 }994 ],995 "chunk_size": 20,996 "bookmarked": false,997 "topic_timer": null,998 "message_bus_last_id": 0,999 "participant_count": 2,1000 "show_read_indicator": false,1001 "thumbnails": null,1002 "slow_mode_enabled_until": null,1003 "can_vote": false,1004 "vote_count": 0,1005 "user_voted": false,1006 "discourse_zendesk_plugin_zendesk_id": null,1007 "discourse_zendesk_plugin_zendesk_url": "https://your-url.zendesk.com/agent/tickets/",1008 "details": {1009 "can_edit": false,1010 "notification_level": 1,1011 "participants": [1012 {1013 "id": 3534,1014 "username": "ptrblck",1015 "name": "",1016 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",1017 "post_count": 2,1018 "primary_group_name": null,1019 "flair_name": null,1020 "flair_url": null,1021 "flair_color": null,1022 "flair_bg_color": null,1023 "flair_group_id": null,1024 "admin": true,1025 "moderator": true,1026 "trust_level": 21027 },1028 {1029 "id": 49912,1030 "username": "Federico_Ottomano",1031 "name": "Federico Ottomano",1032 "avatar_template": "/user_avatar/discuss.pytorch.org/federico_ottomano/{size}/43102_2.png",1033 "post_count": 2,1034 "primary_group_name": null,1035 "flair_name": null,1036 "flair_url": null,1037 "flair_color": null,1038 "flair_bg_color": null,1039 "flair_group_id": null,1040 "trust_level": 11041 }1042 ],1043 "created_by": {1044 "id": 49912,1045 "username": "Federico_Ottomano",1046 "name": "Federico Ottomano",1047 "avatar_template": "/user_avatar/discuss.pytorch.org/federico_ottomano/{size}/43102_2.png"1048 },1049 "last_poster": {1050 "id": 3534,1051 "username": "ptrblck",1052 "name": "",1053 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png"1054 }1055 },1056 "bookmarks": []1057 },1058 {1059 "post_stream": {1060 "posts": [1061 {1062 "id": 318396,1063 "name": "",1064 "username": "drogor",1065 "avatar_template": "/letter_avatar_proxy/v4/letter/d/258eb7/{size}.png",1066 "created_at": "2021-11-22T09:55:31.430Z",1067 "cooked": "<p>Hello and thanks for your help in advance!</p>\n<p>As this is my first time posting here, I’ll try to make my post as clear as possible and am greatly sorry if this has already been answered in the past or is common knowledge.</p>\n<p>So, I have just recently started getting into ML and have already written some code with tensorflow, but am switiching over to pytorch right now. At some point inside my code, I would like to convolve a spectrum with a coiflet filter (Reconstruction low/high-pass filter), so a linear convolution of two one-dimensional sequences is needed. Previously, I would do that by using <strong>tf.nn.convolution</strong>, which takes both the spectra and filters as inputs. Pytorch on the other hand uses <strong>torch.nn.Conv1d</strong> with the number of channels as input.</p>\n<p>A similar function to what I would be looking for is <strong>numpy.convolve</strong>, but here I am faced with the issue that I have to use a number of .cpu().detach().numpy() operations as I am working on a server, which I would like to avoid. Also this seemes to mess up the backpropagation (must likely a bug in my code).</p>\n<p>I hope, I was able to state my problem clearly and sorry for any confusions. Mabe someone could help me understand how to adept torch.nn.Conv1d for my needs or how to avoid detaching/switching the data between server and cpu when using the numpy routine. I am pretty new to pytroch and ML, so any help is appreciated!</p>\n<p>Some sample code …<br>\nTensorflow:<br>\n<code>dataset_new = tf.nn.convolution(dataset, coiflet, padding='SAME')</code><br>\npytorch:</p>\n<pre><code class=\"lang-auto\">for i in range(batch):\n dataset_new [i,:] = torch.from_numpy(np.convolve(dataset[i,:].cpu().detach().numpy(), coiflet, mode='same')).to(device)\n</code></pre>\n<p>So, my question would be:</p>\n<ul>\n<li>Is there an efficient way to convolve spectra with predefined filters utilizing only pytorch commands?</li>\n</ul>",1068 "post_number": 1,1069 "post_type": 1,1070 "posts_count": 2,1071 "updated_at": "2021-11-22T09:56:14.722Z",1072 "reply_count": 1,1073 "reply_to_post_number": null,1074 "quote_count": 0,1075 "incoming_link_count": 156,1076 "reads": 6,1077 "readers_count": 5,1078 "score": 786.2,1079 "yours": false,1080 "topic_id": 137480,1081 "topic_slug": "how-to-use-convolutional-operations-inside-pytorch",1082 "display_username": "",1083 "primary_group_name": null,1084 "flair_name": null,1085 "flair_url": null,1086 "flair_bg_color": null,1087 "flair_color": null,1088 "flair_group_id": null,1089 "badges_granted": [],1090 "version": 1,1091 "can_edit": false,1092 "can_delete": false,1093 "can_recover": false,1094 "can_see_hidden_post": false,1095 "can_wiki": false,1096 "read": true,1097 "user_title": null,1098 "bookmarked": false,1099 "actions_summary": [],1100 "moderator": false,1101 "admin": false,1102 "staff": false,1103 "user_id": 50929,1104 "hidden": false,1105 "trust_level": 1,1106 "deleted_at": null,1107 "user_deleted": false,1108 "edit_reason": null,1109 "can_view_edit_history": true,1110 "wiki": false,1111 "post_url": "/t/how-to-use-convolutional-operations-inside-pytorch/137480/1",1112 "can_accept_answer": false,1113 "can_unaccept_answer": false,1114 "accepted_answer": false,1115 "topic_accepted_answer": null,1116 "can_vote": false1117 },1118 {1119 "id": 318494,1120 "name": "",1121 "username": "ptrblck",1122 "avatar_template": "/user_avatar/discuss.pytorch.org/ptrblck/{size}/1823_2.png",1123 "created_at": "2021-11-22T21:04:06.128Z",1124 "cooked": "<p>You could use the functional API via:</p>\n<pre data-code-wrap=\"python\"><code class=\"lang-python\">import torch.nn.functional as F\n\ndata = ... # input data\nweight = ... # conv filters\nbias = ... # conv bias\nout = F.conv2d(data, weight, bias, padding=...)\n</code></pre>\n<aside class=\"quote no-group\" data-username=\"drogor\" data-post=\"1\" data-topic=\"137480\">\n<div class=\"title\">\n<div class=\"quote-controls\"></div>\n<img loading=\"lazy\" alt=\"\" width=\"24\" height=\"24\" src=\"https://discuss.pytorch.org/letter_avatar_proxy/v4/letter/d/258eb7/48.png\" class=\"avatar\"> drogor:</div>\n<blockquote>\n<p>Also this seemes to mess up the backpropagation (must likely a bug in my code).</p>\n</blockquote>\n</aside>\n<p>I would guess it’s not a bug in your code but a known limitation, as using numpy operations will break the computation graph since Autograd is not aware of these ops and cannot track them.</p>",1125 "post_number": 2,1126 "post_type": 1,1127 "posts_count": 2,1128 "updated_at": "2021-11-22T21:04:06.128Z",1129 "reply_count": 0,1130 "reply_to_post_number": null,1131 "quote_count": 1,1132 "incoming_link_count": 2,1133 "reads": 6,1134 "readers_count": 5,1135 "score": 11.2,1136 "yours": false,1137 "topic_id": 137480,1138 "topic_slug": "how-to-use-convolutional-operations-inside-pytorch",1139 "display_username": "",1140 "primary_group_name": null,1141 "flair_name": null,1142 "flair_url": null,1143 "flair_bg_color": null,1144 "flair_color": null,1145 "flair_group_id": null,1146 "badges_granted": [],1147 "version": 1,1148 "can_edit": false,1149 "can_delete": false,1150 "can_recover": false,1151 "can_see_hidden_post": false,1152 "can_wiki": false,1153 "read": true,1154 "user_title": "",1155 "bookmarked": false,1156 "actions_summary": [],1157 "moderator": true,1158 "admin": true,1159 "staff": true,1160 "user_id": 3534,1161 "hidden": false,1162 "trust_level": 2,1163 "deleted_at": null,1164 "user_deleted": false,1165 "edit_reason": null,1166 "can_view_edit_history": true,1167 "wiki": false,1168 "post_url": "/t/how-to-use-convolutional-operations-inside-pytorch/137480/2",1169 "can_accept_answer": false,1170 "can_unaccept_answer": false,1171 "accepted_answer": false,1172 "topic_accepted_answer": null1173 }1174 ],1175 "stream": [1176 318396,1177 3184941178 ]1179 },1180 "timeline_lookup": [1181 [1182 1,1183 14331184 ]1185 ],1186 "suggested_topics": [1187 {1188 "fancy_title": "The scope of `torch.no_grad` and `torch.inference_mode`",1189 "id": 215094,1190 "title": "The scope of `torch.no_grad` and `torch.inference_mode`",1191 "slug": "the-scope-of-torch-no-grad-and-torch-inference-mode",1192 "posts_count": 2,1193 "reply_count": 0,1194 "highest_post_number": 2,1195 "image_url": null,1196 "created_at": "2025-01-08T04:50:22.062Z",1197 "last_posted_at": "2025-01-08T13:03:07.750Z",1198 "bumped": true,1199 "bumped_at": "2025-01-08T13:03:07.750Z",1200 "archetype": "regular",