Thank you, setting the ‘sep’ seemed to change my loss function to Binary Cross Entropy with Logits as you said.
However, now I am receiving a different error when trying to use learn.fit_one_cycle():
RuntimeError: Expected object of scalar type Long but got scalar type Float for argument #2 ‘target’
How did the targets change to floats? Shouldn’t they be just integers from 0 to N-1 representing N classes?
I am using fp16 training, if that makes any difference. I don’t know for sure if fp16 works with multi-label datasets because this is my first time trying.
Full traceback:
Traceback (most recent call last):-----------------------------| 0.00% [0/127 00:00<00:00]
File “hptrain-amazon-64.py”, line 91, in
HP_types, def_vals, test_vals, timestamp)
File “/home/nyc1/platform-hyperparams/scripts/hputils3.py”, line 406, in train_main
ds_size=ds_size)
File “/home/nyc1/platform-hyperparams/scripts/hputils3.py”, line 321, in train_all_models
num_eps=num_eps)
File “/home/nyc1/platform-hyperparams/scripts/hputils3.py”, line 261, in train_one_model
num_eps=num_eps)
File “/home/nyc1/platform-hyperparams/scripts/hputils3.py”, line 158, in train_pipeline
learn.fit_one_cycle(5, lr, wd=wd)
File “/home/adrian/anaconda3/envs/fastai11/lib/python3.7/site-packages/fastai/train.py”, line 19, in fit_one_cycle
learn.fit(cyc_len, max_lr, wd=wd, callbacks=callbacks)
File “/home/adrian/anaconda3/envs/fastai11/lib/python3.7/site-packages/fastai/basic_train.py”, line 161, in fit
callbacks=self.callbacks+callbacks)
File “/home/adrian/anaconda3/envs/fastai11/lib/python3.7/site-packages/fastai/basic_train.py”, line 93, in fit
raise e
File “/home/adrian/anaconda3/envs/fastai11/lib/python3.7/site-packages/fastai/basic_train.py”, line 83, in fit
loss = loss_batch(model, xb, yb, loss_func, opt, cb_handler)
File “/home/adrian/anaconda3/envs/fastai11/lib/python3.7/site-packages/fastai/basic_train.py”, line 22, in loss_batch
loss = loss_func(out, *yb)
File “/home/adrian/anaconda3/envs/fastai11/lib/python3.7/site-packages/torch/nn/functional.py”, line 1530, in nll_loss
return torch._C._nn.nll_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index)
RuntimeError: Expected object of scalar type Long but got scalar type Float for argument #2 ‘target’