tsai
tsai copied to clipboard
TypeError: unhashable type: 'numpy.ndarray'
When I used my own data to run the example of multivariate classification, I reported this error, could you please help me to look at it?
`TypeError Traceback (most recent call last)
D:\anaconda\lib\site-packages\tsai\data\core.py in init(self, X, y, items, sel_vars, sel_steps, tfms, tls, n_inp, dl_type, inplace, **kwargs) 469 self.tfms = _remove_brackets(tfms) 470 lts = [NoTfmLists if t is None else TSTfmdLists if getattr(t, 'vectorized', None) else TfmdLists for t in self.tfms] --> 471 self.tls = L(lt(item, t, **kwargs) for lt,item,t in zip(lts, items, self.tfms)) 472 if len(self.tls) > 0 and len(self.tls[0]) > 0: 473 self.typs = [type(tl.items[0]) if isinstance(tl.items[0], torch.Tensor) else self.typs[i] for i,tl in enumerate(self.tls)]
D:\anaconda\lib\site-packages\fastcore\foundation.py in call(cls, x, *args, **kwargs) 96 def call(cls, x=None, *args, **kwargs): 97 if not args and not kwargs and x is not None and isinstance(x,cls): return x ---> 98 return super().call(x, *args, **kwargs) 99 100 # %% ../nbs/02_foundation.ipynb 46
D:\anaconda\lib\site-packages\fastcore\foundation.py in init(self, items, use_list, match, *rest) 104 def init(self, items=None, *rest, use_list=False, match=None): 105 if (use_list is not None) or not is_array(items): --> 106 items = listify(items, *rest, use_list=use_list, match=match) 107 super().init(items) 108
D:\anaconda\lib\site-packages\fastcore\basics.py in listify(o, use_list, match, *rest) 64 elif isinstance(o, list): res = o 65 elif isinstance(o, str) or is_array(o): res = [o] ---> 66 elif is_iter(o): res = list(o) 67 else: res = [o] 68 if match is not None:
D:\anaconda\lib\site-packages\tsai\data\core.py in
D:\anaconda\lib\site-packages\fastcore\foundation.py in call(cls, x, *args, **kwargs) 96 def call(cls, x=None, *args, **kwargs): 97 if not args and not kwargs and x is not None and isinstance(x,cls): return x ---> 98 return super().call(x, *args, **kwargs) 99 100 # %% ../nbs/02_foundation.ipynb 46
D:\anaconda\lib\site-packages\fastai\data\core.py in init(self, items, tfms, use_list, do_setup, split_idx, train_setup, splits, types, verbose, dl_type) 366 if do_setup: 367 pv(f"Setting up {self.tfms}", verbose) --> 368 self.setup(train_setup=train_setup) 369 370 def _new(self, items, split_idx=None, **kwargs):
D:\anaconda\lib\site-packages\fastai\data\core.py in setup(self, train_setup)
387 train_setup:bool=True # Apply Transform(s) only on training DataLoader
388 ):
--> 389 self.tfms.setup(self, train_setup)
390 if len(self) != 0:
391 x = super().getitem(0) if self.splits is None else super().getitem(self.splits[0])[0]
D:\anaconda\lib\site-packages\fastcore\transform.py in setup(self, items, train_setup) 198 tfms = self.fs[:] 199 self.fs.clear() --> 200 for t in tfms: self.add(t,items, train_setup) 201 202 def add(self,ts, items=None, train_setup=False):
D:\anaconda\lib\site-packages\fastcore\transform.py in add(self, ts, items, train_setup) 202 def add(self,ts, items=None, train_setup=False): 203 if not is_listy(ts): ts=[ts] --> 204 for t in ts: t.setup(items, train_setup) 205 self.fs+=ts 206 self.fs = self.fs.sorted(key='order')
D:\anaconda\lib\site-packages\fastcore\transform.py in setup(self, items, train_setup) 85 def setup(self, items=None, train_setup=False): 86 train_setup = train_setup if self.train_setup is None else self.train_setup ---> 87 return self.setups(getattr(items, 'train', items) if train_setup else items) 88 89 def _call(self, fn, x, split_idx=None, **kwargs):
D:\anaconda\lib\site-packages\fastcore\dispatch.py in call(self, *args, **kwargs) 118 elif self.inst is not None: f = MethodType(f, self.inst) 119 elif self.owner is not None: f = MethodType(f, self.owner) --> 120 return f(*args, **kwargs) 121 122 def get(self, inst, owner):
D:\anaconda\lib\site-packages\fastai\data\transforms.py in setups(self, dsets) 254 255 def setups(self, dsets): --> 256 if self.vocab is None and dsets is not None: self.vocab = CategoryMap(dsets, sort=self.sort, add_na=self.add_na) 257 self.c = len(self.vocab) 258
D:\anaconda\lib\site-packages\fastai\data\transforms.py in init(self, col, sort, add_na, strict)
230 if not hasattr(col,'unique'): col = L(col, use_list=True)
231 # o==o is the generalized definition of non-NaN used by Pandas
--> 232 items = L(o for o in col.unique() if o==o)
233 if sort: items = items.sorted()
234 self.items = '#na#' + items if add_na else items
D:\anaconda\lib\site-packages\fastcore\foundation.py in unique(self, sort, bidir, start) 164 def enumerate(self): return L(enumerate(self)) 165 def renumerate(self): return L(renumerate(self)) --> 166 def unique(self, sort=False, bidir=False, start=None): return L(uniqueify(self, sort=sort, bidir=bidir, start=start)) 167 def val2idx(self): return val2idx(self) 168 def cycle(self): return cycle(self)
D:\anaconda\lib\site-packages\fastcore\basics.py in uniqueify(x, sort, bidir, start)
722 def uniqueify(x, sort=False, bidir=False, start=None):
723 "Unique elements in x, optional sort, optional return reverse correspondence, optional prepend with elements."
--> 724 res = list(dict.fromkeys(x))
725 if start is not None: res = listify(start)+res
726 if sort: res.sort()
TypeError: unhashable type: 'numpy.ndarray' `
Hi @645187919, Could you post a code snippet that reproduces the issue? You can use fake/ random data.
I met this same problem when using OliveOil as dataframe. here's the notebook file: