I think that might have generated a new error here:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-24-0e8771e4fad3> in <module>()
----> 1 learn = ConvLearner.pretrained(arch, data, precompute=True)
~/fastaip1v2/fastai/courses/dl1/fastai/conv_learner.py in pretrained(self, f, data, ps, xtra_fc, xtra_cut, **kwargs)
90 def pretrained(self, f, data, ps=None, xtra_fc=None, xtra_cut=0, **kwargs):
91 models = ConvnetBuilder(f, data.c, data.is_multi, data.is_reg, ps=ps, xtra_fc=xtra_fc, xtra_cut=xtra_cut)
---> 92 return self(data, models, **kwargs)
93
94 @property
~/fastaip1v2/fastai/courses/dl1/fastai/conv_learner.py in __init__(self, data, models, precompute, **kwargs)
83 elif self.metrics is None:
84 self.metrics = [accuracy_multi] if self.data.is_multi else [accuracy]
---> 85 if precompute: self.save_fc1()
86 self.freeze()
87 self.precompute = precompute
~/fastaip1v2/fastai/courses/dl1/fastai/conv_learner.py in save_fc1(self)
130 self.fc_data = ImageClassifierData.from_arrays(self.data.path,
131 (act, self.data.trn_y), (val_act, self.data.val_y), self.data.bs, classes=self.data.classes,
--> 132 test = test_act if self.data.test_dl else None, num_workers=8)
133
134 def freeze(self): self.freeze_to(-1)
~/fastaip1v2/fastai/courses/dl1/fastai/dataset.py in from_arrays(self, path, trn, val, bs, tfms, classes, num_workers, test)
289 @classmethod
290 def from_arrays(self, path, trn, val, bs=64, tfms=(None,None), classes=None, num_workers=4, test=None):
--> 291 datasets = self.get_ds(ArraysIndexDataset, trn, val, tfms, test=test)
292 return self(path, datasets, bs, num_workers, classes=classes)
293
~/fastaip1v2/fastai/courses/dl1/fastai/dataset.py in get_ds(self, fn, trn, val, tfms, test, **kwargs)
281 test_lbls = np.zeros((len(test),1))
282 res += [
--> 283 fn(test, test_lbls, tfms[1], **kwargs), # test
284 fn(test, test_lbls, tfms[0], **kwargs) # test_aug
285 ]
~/fastaip1v2/fastai/courses/dl1/fastai/dataset.py in __init__(self, x, y, transform)
166 self.x,self.y=x,y
167 assert(len(x)==len(y))
--> 168 super().__init__(transform)
169 def get_x(self, i):
170 return self.x[i]
~/fastaip1v2/fastai/courses/dl1/fastai/dataset.py in __init__(self, transform)
92 #self.lock=threading.Lock()
93 self.n = self.get_n()
---> 94 self.c = self.get_c()
95 self.sz = self.get_sz()
96
~/fastaip1v2/fastai/courses/dl1/fastai/dataset.py in get_c(self)
178
179 class ArraysIndexDataset(ArraysDataset):
--> 180 def get_c(self): return int(self.y.max())+1
181
182
~/anaconda3/envs/fastai/lib/python3.6/site-packages/numpy/core/_methods.py in _amax(a, axis, out, keepdims)
24 # small reductions
25 def _amax(a, axis=None, out=None, keepdims=False):
---> 26 return umr_maximum(a, axis, None, out, keepdims)
27
28 def _amin(a, axis=None, out=None, keepdims=False):
ValueError: zero-size array to reduction operation maximum which has no identity
I think the actual problem is test = test_act if self.data.test_dl else None
from here:
~/fastaip1v2/fastai/courses/dl1/fastai/conv_learner.py in save_fc1(self)
130 self.fc_data = ImageClassifierData.from_arrays(self.data.path,
131 (act, self.data.trn_y), (val_act, self.data.val_y), self.data.bs, classes=self.data.classes,
--> 132 test = test_act if self.data.test_dl else None, num_workers=8)
133
134 def freeze(self): self.freeze_to(-1)
I don’t full understand that mostly because I don’t know what test_act is suppose to provide, but it doesn’t seem like it’s doing quite what I want it do do.
So it works if I don’t try to precompute so it looks like the issue may be with precompute=True when using a test dataset?