Hi mates. I’m being hindered by the runtime error below while trying to perform a 3-class classification over a bunch of images. Wondering if you can provide some clue about the causes.
- all the images were verified with
verify_images()
- I’m using the latest fastai release (1.0.39-1)
Data acquired as follows:
data = ImageDataBunch.from_df(path, allthestuff, ds_tfms=tfms, bs=bs, size=299,
valid_pct=0.2,
fn_col='imagefile',
label_col=classez
).normalize(imagenet_stats)
calling data
shows an apparently sound databunch… Correct categories, correct train/valid split, etc…
Learner created the simplest way:
learn = create_cnn(data, models.resnet50, metrics=error_rate)
The error.
Training starts regularly, then it arrives at the end of the 1st epoch (100% reached) and outputs the following just as validation begins:
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-25-95e1dcd22eb1> in <module>
----> 1 learn.fit_one_cycle(3)
~/anaconda3/envs/dmx1/lib/python3.7/site-packages/fastai/train.py in fit_one_cycle(learn, cyc_len, max_lr, moms, div_factor, pct_start, wd, callbacks, **kwargs)
20 callbacks.append(OneCycleScheduler(learn, max_lr, moms=moms, div_factor=div_factor,
21 pct_start=pct_start, **kwargs))
---> 22 learn.fit(cyc_len, max_lr, wd=wd, callbacks=callbacks)
23
24 def lr_find(learn:Learner, start_lr:Floats=1e-7, end_lr:Floats=10, num_it:int=100, stop_div:bool=True, **kwargs:Any):
~/anaconda3/envs/dmx1/lib/python3.7/site-packages/fastai/basic_train.py in fit(self, epochs, lr, wd, callbacks)
170 callbacks = [cb(self) for cb in self.callback_fns] + listify(callbacks)
171 fit(epochs, self.model, self.loss_func, opt=self.opt, data=self.data, metrics=self.metrics,
--> 172 callbacks=self.callbacks+callbacks)
173
174 def create_opt(self, lr:Floats, wd:Floats=0.)->None:
~/anaconda3/envs/dmx1/lib/python3.7/site-packages/fastai/basic_train.py in fit(epochs, model, loss_func, opt, data, callbacks, metrics)
92 except Exception as e:
93 exception = e
---> 94 raise e
95 finally: cb_handler.on_train_end(exception)
96
~/anaconda3/envs/dmx1/lib/python3.7/site-packages/fastai/basic_train.py in fit(epochs, model, loss_func, opt, data, callbacks, metrics)
87 if not data.empty_val:
88 val_loss = validate(model, data.valid_dl, loss_func=loss_func,
---> 89 cb_handler=cb_handler, pbar=pbar)
90 else: val_loss=None
91 if cb_handler.on_epoch_end(val_loss): break
~/anaconda3/envs/dmx1/lib/python3.7/site-packages/fastai/basic_train.py in validate(model, dl, loss_func, cb_handler, pbar, average, n_batch)
52 if not is_listy(yb): yb = [yb]
53 nums.append(yb[0].shape[0])
---> 54 if cb_handler and cb_handler.on_batch_end(val_losses[-1]): break
55 if n_batch and (len(nums)>=n_batch): break
56 nums = np.array(nums, dtype=np.float32)
~/anaconda3/envs/dmx1/lib/python3.7/site-packages/fastai/callback.py in on_batch_end(self, loss)
237 "Handle end of processing one batch with `loss`."
238 self.state_dict['last_loss'] = loss
--> 239 stop = np.any(self('batch_end', not self.state_dict['train']))
240 if self.state_dict['train']:
241 self.state_dict['iteration'] += 1
~/anaconda3/envs/dmx1/lib/python3.7/site-packages/fastai/callback.py in __call__(self, cb_name, call_mets, **kwargs)
185 def __call__(self, cb_name, call_mets=True, **kwargs)->None:
186 "Call through to all of the `CallbakHandler` functions."
--> 187 if call_mets: [getattr(met, f'on_{cb_name}')(**self.state_dict, **kwargs) for met in self.metrics]
188 return [getattr(cb, f'on_{cb_name}')(**self.state_dict, **kwargs) for cb in self.callbacks]
189
~/anaconda3/envs/dmx1/lib/python3.7/site-packages/fastai/callback.py in <listcomp>(.0)
185 def __call__(self, cb_name, call_mets=True, **kwargs)->None:
186 "Call through to all of the `CallbakHandler` functions."
--> 187 if call_mets: [getattr(met, f'on_{cb_name}')(**self.state_dict, **kwargs) for met in self.metrics]
188 return [getattr(cb, f'on_{cb_name}')(**self.state_dict, **kwargs) for cb in self.callbacks]
189
~/anaconda3/envs/dmx1/lib/python3.7/site-packages/fastai/callback.py in on_batch_end(self, last_output, last_target, **kwargs)
272 if not is_listy(last_target): last_target=[last_target]
273 self.count += last_target[0].size(0)
--> 274 self.val += last_target[0].size(0) * self.func(last_output, *last_target).detach().cpu()
275
276 def on_epoch_end(self, **kwargs):
~/anaconda3/envs/dmx1/lib/python3.7/site-packages/fastai/metrics.py in error_rate(input, targs)
45 def error_rate(input:Tensor, targs:Tensor)->Rank0Tensor:
46 "1 - `accuracy`"
---> 47 return 1 - accuracy(input, targs)
48
49
~/anaconda3/envs/dmx1/lib/python3.7/site-packages/fastai/metrics.py in accuracy(input, targs)
28 input = input.argmax(dim=-1).view(n,-1)
29 targs = targs.view(n,-1)
---> 30 return (input==targs).float().mean()
31
32
RuntimeError: Expected object of scalar type Long but got scalar type Float for argument #2 'other'