{
  "id": 182869,
  "title": "Now i have some issues which could not over come when i run locally \"AttributeError: Can't pickle local object \"StringEncoder.<locals>.EncodeField\" ",
  "url": "/competitions/lyft-motion-prediction-autonomous-vehicles/discussion/182869",
  "author_name": "",
  "post_date": "2020-09-14T16:27:54.300627100Z",
  "votes": 1,
  "comment_count": 2,
  "views": 0,
  "content": "<h2><strong>Here is error i encounter when i run this certain code</strong></h2>\n<p>`# ==== EVAL LOOP<br>\nmodel.eval()<br>\ntorch.set_grad_enabled(False)</p>\n<h1>store information for evaluation</h1>\n<p>future_coords_offsets_pd = []<br>\ntimestamps = []</p>\n<p>agent_ids = []<br>\nprogress_bar = tqdm(eval_dataloader)<br>\nfor data in progress_bar:<br>\n    _, ouputs = forward(data, model, device, criterion)<br>\n    future_coords_offsets_pd.append(ouputs.cpu().numpy().copy())<br>\n    timestamps.append(data[\"timestamp\"].numpy().copy())<br>\n    agent_ids.append(data[\"track_id\"].numpy().copy())<br>\n    `</p>\n<h1>****## here is error</h1>\n<p>AttributeError                            Traceback (most recent call last)<br>\n in <br>\n      9 agent_ids = []<br>\n     10 progress_bar = tqdm(eval_dataloader)<br>\n---&gt; 11 for data in progress_bar:<br>\n     12     _, ouputs = forward(data, model, device, criterion)<br>\n     13     future_coords_offsets_pd.append(ouputs.cpu().numpy().copy())</p>\n<p>~\\AppData\\Roaming\\Python\\Python38\\site-packages\\tqdm\\std.py in <strong>iter</strong>(self)<br>\n   1128 <br>\n   1129         try:<br>\n-&gt; 1130             for obj in iterable:<br>\n   1131                 yield obj<br>\n   1132                 # Update and possibly print the progressbar.</p>\n<p>~\\anaconda3\\lib\\site-packages\\torch\\utils\\data\\dataloader.py in <strong>iter</strong>(self)<br>\n    277             return _SingleProcessDataLoaderIter(self)<br>\n    278         else:<br>\n--&gt; 279             return _MultiProcessingDataLoaderIter(self)<br>\n    280 <br>\n    281     <a href=\"https://www.kaggle.com/property\" target=\"_blank\">@property</a></p>\n<p>~\\anaconda3\\lib\\site-packages\\torch\\utils\\data\\dataloader.py in <strong>init</strong>(self, loader)<br>\n    717             #     before it starts, and <strong>del</strong> tries to join but will get:<br>\n    718             #     AssertionError: can only join a started process.<br>\n--&gt; 719             w.start()<br>\n    720             self._index_queues.append(index_queue)<br>\n    721             self._workers.append(w)</p>\n<p>~\\anaconda3\\lib\\multiprocessing\\process.py in start(self)<br>\n    119                'daemonic processes are not allowed to have children'<br>\n    120         _cleanup()<br>\n--&gt; 121         self._popen = self._Popen(self)<br>\n    122         self._sentinel = self._popen.sentinel<br>\n    123         # Avoid a refcycle if the target function holds an indirect</p>\n<p>~\\anaconda3\\lib\\multiprocessing\\context.py in _Popen(process_obj)<br>\n    222     <a href=\"https://www.kaggle.com/staticmethod\" target=\"_blank\">@staticmethod</a><br>\n    223     def _Popen(process_obj):<br>\n--&gt; 224         return _default_context.get_context().Process._Popen(process_obj)<br>\n    225 <br>\n    226 class DefaultContext(BaseContext):</p>\n<p>~\\anaconda3\\lib\\multiprocessing\\context.py in _Popen(process_obj)<br>\n    324         def _Popen(process_obj):<br>\n    325             from .popen_spawn_win32 import Popen<br>\n--&gt; 326             return Popen(process_obj)<br>\n    327 <br>\n    328     class SpawnContext(BaseContext):</p>\n<p>~\\anaconda3\\lib\\multiprocessing\\popen_spawn_win32.py in <strong>init</strong>(self, process_obj)<br>\n     91             try:<br>\n     92                 reduction.dump(prep_data, to_child)<br>\n---&gt; 93                 reduction.dump(process_obj, to_child)<br>\n     94             finally:<br>\n     95                 set_spawning_popen(None)</p>\n<p>~\\anaconda3\\lib\\multiprocessing\\reduction.py in dump(obj, file, protocol)<br>\n     58 def dump(obj, file, protocol=None):<br>\n     59     '''Replacement for pickle.dump() using ForkingPickler.'''<br>\n---&gt; 60     ForkingPickler(file, protocol).dump(obj)<br>\n     61 <br>\n     62 #</p>\n<p>AttributeError: Can't pickle local object 'StringEncoder..EncodeField'</p>",
  "messages": [
    {
      "id": "1010277",
      "postDate": "09/14/2020 16:27:54",
      "content": "<h2><strong>Here is error i encounter when i run this certain code</strong></h2>\n<p>`# ==== EVAL LOOP<br>\nmodel.eval()<br>\ntorch.set_grad_enabled(False)</p>\n<h1>store information for evaluation</h1>\n<p>future_coords_offsets_pd = []<br>\ntimestamps = []</p>\n<p>agent_ids = []<br>\nprogress_bar = tqdm(eval_dataloader)<br>\nfor data in progress_bar:<br>\n    _, ouputs = forward(data, model, device, criterion)<br>\n    future_coords_offsets_pd.append(ouputs.cpu().numpy().copy())<br>\n    timestamps.append(data[\"timestamp\"].numpy().copy())<br>\n    agent_ids.append(data[\"track_id\"].numpy().copy())<br>\n    `</p>\n<h1>****## here is error</h1>\n<p>AttributeError                            Traceback (most recent call last)<br>\n in <br>\n      9 agent_ids = []<br>\n     10 progress_bar = tqdm(eval_dataloader)<br>\n---&gt; 11 for data in progress_bar:<br>\n     12     _, ouputs = forward(data, model, device, criterion)<br>\n     13     future_coords_offsets_pd.append(ouputs.cpu().numpy().copy())</p>\n<p>~\\AppData\\Roaming\\Python\\Python38\\site-packages\\tqdm\\std.py in <strong>iter</strong>(self)<br>\n   1128 <br>\n   1129         try:<br>\n-&gt; 1130             for obj in iterable:<br>\n   1131                 yield obj<br>\n   1132                 # Update and possibly print the progressbar.</p>\n<p>~\\anaconda3\\lib\\site-packages\\torch\\utils\\data\\dataloader.py in <strong>iter</strong>(self)<br>\n    277             return _SingleProcessDataLoaderIter(self)<br>\n    278         else:<br>\n--&gt; 279             return _MultiProcessingDataLoaderIter(self)<br>\n    280 <br>\n    281     <a href=\"https://www.kaggle.com/property\" target=\"_blank\">@property</a></p>\n<p>~\\anaconda3\\lib\\site-packages\\torch\\utils\\data\\dataloader.py in <strong>init</strong>(self, loader)<br>\n    717             #     before it starts, and <strong>del</strong> tries to join but will get:<br>\n    718             #     AssertionError: can only join a started process.<br>\n--&gt; 719             w.start()<br>\n    720             self._index_queues.append(index_queue)<br>\n    721             self._workers.append(w)</p>\n<p>~\\anaconda3\\lib\\multiprocessing\\process.py in start(self)<br>\n    119                'daemonic processes are not allowed to have children'<br>\n    120         _cleanup()<br>\n--&gt; 121         self._popen = self._Popen(self)<br>\n    122         self._sentinel = self._popen.sentinel<br>\n    123         # Avoid a refcycle if the target function holds an indirect</p>\n<p>~\\anaconda3\\lib\\multiprocessing\\context.py in _Popen(process_obj)<br>\n    222     <a href=\"https://www.kaggle.com/staticmethod\" target=\"_blank\">@staticmethod</a><br>\n    223     def _Popen(process_obj):<br>\n--&gt; 224         return _default_context.get_context().Process._Popen(process_obj)<br>\n    225 <br>\n    226 class DefaultContext(BaseContext):</p>\n<p>~\\anaconda3\\lib\\multiprocessing\\context.py in _Popen(process_obj)<br>\n    324         def _Popen(process_obj):<br>\n    325             from .popen_spawn_win32 import Popen<br>\n--&gt; 326             return Popen(process_obj)<br>\n    327 <br>\n    328     class SpawnContext(BaseContext):</p>\n<p>~\\anaconda3\\lib\\multiprocessing\\popen_spawn_win32.py in <strong>init</strong>(self, process_obj)<br>\n     91             try:<br>\n     92                 reduction.dump(prep_data, to_child)<br>\n---&gt; 93                 reduction.dump(process_obj, to_child)<br>\n     94             finally:<br>\n     95                 set_spawning_popen(None)</p>\n<p>~\\anaconda3\\lib\\multiprocessing\\reduction.py in dump(obj, file, protocol)<br>\n     58 def dump(obj, file, protocol=None):<br>\n     59     '''Replacement for pickle.dump() using ForkingPickler.'''<br>\n---&gt; 60     ForkingPickler(file, protocol).dump(obj)<br>\n     61 <br>\n     62 #</p>\n<p>AttributeError: Can't pickle local object 'StringEncoder..EncodeField'</p>",
      "rawMarkdown": "## **Here is error i encounter when i run this certain code**\n\n`# ==== EVAL LOOP\nmodel.eval()\ntorch.set_grad_enabled(False)\n\n# store information for evaluation\nfuture_coords_offsets_pd = []\ntimestamps = []\n\nagent_ids = []\nprogress_bar = tqdm(eval_dataloader)\nfor data in progress_bar:\n    _, ouputs = forward(data, model, device, criterion)\n    future_coords_offsets_pd.append(ouputs.cpu().numpy().copy())\n    timestamps.append(data[\"timestamp\"].numpy().copy())\n    agent_ids.append(data[\"track_id\"].numpy().copy())\n    `\n#****## here is error \nAttributeError                            Traceback (most recent call last)\n<ipython-input-11-dcba45a06fc3> in <module>\n      9 agent_ids = []\n     10 progress_bar = tqdm(eval_dataloader)\n---> 11 for data in progress_bar:\n     12     _, ouputs = forward(data, model, device, criterion)\n     13     future_coords_offsets_pd.append(ouputs.cpu().numpy().copy())\n\n~\\AppData\\Roaming\\Python\\Python38\\site-packages\\tqdm\\std.py in __iter__(self)\n   1128 \n   1129         try:\n-> 1130             for obj in iterable:\n   1131                 yield obj\n   1132                 # Update and possibly print the progressbar.\n\n~\\anaconda3\\lib\\site-packages\\torch\\utils\\data\\dataloader.py in __iter__(self)\n    277             return _SingleProcessDataLoaderIter(self)\n    278         else:\n--> 279             return _MultiProcessingDataLoaderIter(self)\n    280 \n    281     @property\n\n~\\anaconda3\\lib\\site-packages\\torch\\utils\\data\\dataloader.py in __init__(self, loader)\n    717             #     before it starts, and __del__ tries to join but will get:\n    718             #     AssertionError: can only join a started process.\n--> 719             w.start()\n    720             self._index_queues.append(index_queue)\n    721             self._workers.append(w)\n\n~\\anaconda3\\lib\\multiprocessing\\process.py in start(self)\n    119                'daemonic processes are not allowed to have children'\n    120         _cleanup()\n--> 121         self._popen = self._Popen(self)\n    122         self._sentinel = self._popen.sentinel\n    123         # Avoid a refcycle if the target function holds an indirect\n\n~\\anaconda3\\lib\\multiprocessing\\context.py in _Popen(process_obj)\n    222     @staticmethod\n    223     def _Popen(process_obj):\n--> 224         return _default_context.get_context().Process._Popen(process_obj)\n    225 \n    226 class DefaultContext(BaseContext):\n\n~\\anaconda3\\lib\\multiprocessing\\context.py in _Popen(process_obj)\n    324         def _Popen(process_obj):\n    325             from .popen_spawn_win32 import Popen\n--> 326             return Popen(process_obj)\n    327 \n    328     class SpawnContext(BaseContext):\n\n~\\anaconda3\\lib\\multiprocessing\\popen_spawn_win32.py in __init__(self, process_obj)\n     91             try:\n     92                 reduction.dump(prep_data, to_child)\n---> 93                 reduction.dump(process_obj, to_child)\n     94             finally:\n     95                 set_spawning_popen(None)\n\n~\\anaconda3\\lib\\multiprocessing\\reduction.py in dump(obj, file, protocol)\n     58 def dump(obj, file, protocol=None):\n     59     '''Replacement for pickle.dump() using ForkingPickler.'''\n---> 60     ForkingPickler(file, protocol).dump(obj)\n     61 \n     62 #\n\nAttributeError: Can't pickle local object 'StringEncoder.<locals>.EncodeField'",
      "votes": null
    },
    {
      "id": "1014252",
      "postDate": "09/17/2020 09:47:33",
      "content": "<p>Do you still get the error if you set <code>num_workers</code> in <code>DataLoader</code> to zero? The same issue was discussed <a href=\"https://github.com/lyft/l5kit/issues/130\" target=\"_blank\">here</a>.</p>",
      "rawMarkdown": "Do you still get the error if you set `num_workers` in `DataLoader` to zero? The same issue was discussed [here](https://github.com/lyft/l5kit/issues/130).",
      "votes": null
    },
    {
      "id": "1073214",
      "postDate": "11/09/2020 09:31:11",
      "content": "<p>Thanks, I was facing the same error. This fixed it!</p>",
      "rawMarkdown": "Thanks, I was facing the same error. This fixed it!",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1014252,
      "author_name": "micajoumathematics",
      "author_url": "",
      "post_date": "09/17/2020 09:47:33",
      "content": "<p>Do you still get the error if you set <code>num_workers</code> in <code>DataLoader</code> to zero? The same issue was discussed <a href=\"https://github.com/lyft/l5kit/issues/130\" target=\"_blank\">here</a>.</p>",
      "votes": null,
      "replies": [
        {
          "id": 1073214,
          "author_name": "rawwar",
          "author_url": "",
          "post_date": "11/09/2020 09:31:11",
          "content": "<p>Thanks, I was facing the same error. This fixed it!</p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "1010277": "## **Here is error i encounter when i run this certain code**\n\n`# ==== EVAL LOOP\nmodel.eval()\ntorch.set_grad_enabled(False)\n\n# store information for evaluation\nfuture_coords_offsets_pd = []\ntimestamps = []\n\nagent_ids = []\nprogress_bar = tqdm(eval_dataloader)\nfor data in progress_bar:\n    _, ouputs = forward(data, model, device, criterion)\n    future_coords_offsets_pd.append(ouputs.cpu().numpy().copy())\n    timestamps.append(data[\"timestamp\"].numpy().copy())\n    agent_ids.append(data[\"track_id\"].numpy().copy())\n    `\n#****## here is error \nAttributeError                            Traceback (most recent call last)\n<ipython-input-11-dcba45a06fc3> in <module>\n      9 agent_ids = []\n     10 progress_bar = tqdm(eval_dataloader)\n---> 11 for data in progress_bar:\n     12     _, ouputs = forward(data, model, device, criterion)\n     13     future_coords_offsets_pd.append(ouputs.cpu().numpy().copy())\n\n~\\AppData\\Roaming\\Python\\Python38\\site-packages\\tqdm\\std.py in __iter__(self)\n   1128 \n   1129         try:\n-> 1130             for obj in iterable:\n   1131                 yield obj\n   1132                 # Update and possibly print the progressbar.\n\n~\\anaconda3\\lib\\site-packages\\torch\\utils\\data\\dataloader.py in __iter__(self)\n    277             return _SingleProcessDataLoaderIter(self)\n    278         else:\n--> 279             return _MultiProcessingDataLoaderIter(self)\n    280 \n    281     @property\n\n~\\anaconda3\\lib\\site-packages\\torch\\utils\\data\\dataloader.py in __init__(self, loader)\n    717             #     before it starts, and __del__ tries to join but will get:\n    718             #     AssertionError: can only join a started process.\n--> 719             w.start()\n    720             self._index_queues.append(index_queue)\n    721             self._workers.append(w)\n\n~\\anaconda3\\lib\\multiprocessing\\process.py in start(self)\n    119                'daemonic processes are not allowed to have children'\n    120         _cleanup()\n--> 121         self._popen = self._Popen(self)\n    122         self._sentinel = self._popen.sentinel\n    123         # Avoid a refcycle if the target function holds an indirect\n\n~\\anaconda3\\lib\\multiprocessing\\context.py in _Popen(process_obj)\n    222     @staticmethod\n    223     def _Popen(process_obj):\n--> 224         return _default_context.get_context().Process._Popen(process_obj)\n    225 \n    226 class DefaultContext(BaseContext):\n\n~\\anaconda3\\lib\\multiprocessing\\context.py in _Popen(process_obj)\n    324         def _Popen(process_obj):\n    325             from .popen_spawn_win32 import Popen\n--> 326             return Popen(process_obj)\n    327 \n    328     class SpawnContext(BaseContext):\n\n~\\anaconda3\\lib\\multiprocessing\\popen_spawn_win32.py in __init__(self, process_obj)\n     91             try:\n     92                 reduction.dump(prep_data, to_child)\n---> 93                 reduction.dump(process_obj, to_child)\n     94             finally:\n     95                 set_spawning_popen(None)\n\n~\\anaconda3\\lib\\multiprocessing\\reduction.py in dump(obj, file, protocol)\n     58 def dump(obj, file, protocol=None):\n     59     '''Replacement for pickle.dump() using ForkingPickler.'''\n---> 60     ForkingPickler(file, protocol).dump(obj)\n     61 \n     62 #\n\nAttributeError: Can't pickle local object 'StringEncoder.<locals>.EncodeField'",
    "1014252": "Do you still get the error if you set `num_workers` in `DataLoader` to zero? The same issue was discussed [here](https://github.com/lyft/l5kit/issues/130).",
    "1073214": "Thanks, I was facing the same error. This fixed it!"
  },
  "source": "meta"
}