%reload_ext autoreload
%autoreload 2
%matplotlib inline
from fastai.imports import *
from fastai.torch_imports import *
from fastai.transforms import *
from fastai.conv_learner import *
from fastai.model import *
from fastai.dataset import *
from fastai.sgdr import *
from fastai.plots import *
torch.cuda.set_device(0)
Kaggle Dog Breed Identification. Get data from https://www.kaggle.com/c/dog-breed-identification
PATH = "data/dogbreed/"
sz = 224
arch = resnext101_64
bs = 58
label_csv = f'{PATH}labels.csv'
n = len(list(open(label_csv))) - 1 # header is not counted (-1)
val_idxs = get_cv_idxs(n) # random 20% data for validation set
n
10222
len(val_idxs)
2044
# If you haven't downloaded weights.tgz yet, download the file.
# http://forums.fast.ai/t/error-when-trying-to-use-resnext50/7555
# http://forums.fast.ai/t/lesson-2-in-class-discussion/7452/222
#!wget -O fastai/weights.tgz http://files.fast.ai/models/weights.tgz
#!tar xvfz fastai/weights.tgz -C fastai
!ls {PATH}
info.txt sample_submission.csv test tmp train.zip labels.csv subm test.zip train
label_df = pd.read_csv(label_csv)
label_df.head()
id | breed | |
---|---|---|
0 | 000bec180eb18c7604dcecc8fe0dba07 | boston_bull |
1 | 001513dfcb2ffafc82cccf4d8bbaba97 | dingo |
2 | 001cdf01b096e06d78e9e5112d419397 | pekinese |
3 | 00214f311d5d2247d5dfe4fe24b2303d | bluetick |
4 | 0021f9ceb3235effd7fcde7f7538ed62 | golden_retriever |
label_df.pivot_table(index="breed", aggfunc=len).sort_values('id', ascending=False)
id | |
---|---|
breed | |
scottish_deerhound | 126 |
maltese_dog | 117 |
afghan_hound | 116 |
entlebucher | 115 |
bernese_mountain_dog | 114 |
shih-tzu | 112 |
great_pyrenees | 111 |
pomeranian | 111 |
basenji | 110 |
samoyed | 109 |
airedale | 107 |
tibetan_terrier | 107 |
leonberg | 106 |
cairn | 106 |
beagle | 105 |
japanese_spaniel | 105 |
australian_terrier | 102 |
blenheim_spaniel | 102 |
miniature_pinscher | 102 |
irish_wolfhound | 101 |
lakeland_terrier | 99 |
saluki | 99 |
papillon | 96 |
whippet | 95 |
siberian_husky | 95 |
norwegian_elkhound | 95 |
pug | 94 |
chow | 93 |
italian_greyhound | 92 |
pembroke | 92 |
... | ... |
german_short-haired_pointer | 75 |
boxer | 75 |
bull_mastiff | 75 |
borzoi | 75 |
pekinese | 75 |
cocker_spaniel | 74 |
american_staffordshire_terrier | 74 |
doberman | 74 |
brittany_spaniel | 73 |
malinois | 73 |
standard_schnauzer | 72 |
flat-coated_retriever | 72 |
redbone | 72 |
border_collie | 72 |
curly-coated_retriever | 72 |
kuvasz | 71 |
chihuahua | 71 |
soft-coated_wheaten_terrier | 71 |
french_bulldog | 70 |
vizsla | 70 |
tibetan_mastiff | 69 |
german_shepherd | 69 |
giant_schnauzer | 69 |
walker_hound | 69 |
otterhound | 69 |
golden_retriever | 67 |
brabancon_griffon | 67 |
komondor | 67 |
briard | 66 |
eskimo_dog | 66 |
120 rows × 1 columns
tfms = tfms_from_model(arch, sz, aug_tfms=transforms_side_on, max_zoom=1.1)
data = ImageClassifierData.from_csv(PATH, 'train', f'{PATH}labels.csv', test_name='test', # we need to specify where the test set is if you want to submit to Kaggle competitions
val_idxs=val_idxs, suffix='.jpg', tfms=tfms, bs=bs)
fn = PATH + data.trn_ds.fnames[0]; fn
'data/dogbreed/train/001513dfcb2ffafc82cccf4d8bbaba97.jpg'
img = PIL.Image.open(fn); img
img.size
(500, 375)
size_d = {k: PIL.Image.open(PATH + k).size for k in data.trn_ds.fnames}
row_sz, col_sz = list(zip(*size_d.values()))
row_sz = np.array(row_sz); col_sz = np.array(col_sz)
row_sz[:5]
array([500, 500, 500, 500, 500])
plt.hist(row_sz);
plt.hist(row_sz[row_sz < 1000])
(array([ 135., 592., 1347., 1164., 4599., 128., 76., 62., 14., 11.]), array([ 97. , 185.5, 274. , 362.5, 451. , 539.5, 628. , 716.5, 805. , 893.5, 982. ]), <a list of 10 Patch objects>)
plt.hist(col_sz);
plt.hist(col_sz[col_sz < 1000])
(array([ 235., 733., 2205., 2979., 1807., 98., 27., 33., 7., 10.]), array([102., 190., 278., 366., 454., 542., 630., 718., 806., 894., 982.]), <a list of 10 Patch objects>)
len(data.trn_ds), len(data.test_ds)
(8178, 10357)
len(data.classes), data.classes[:5]
(120, ['affenpinscher', 'afghan_hound', 'african_hunting_dog', 'airedale', 'american_staffordshire_terrier'])
def get_data(sz, bs): # sz: image size, bs: batch size
tfms = tfms_from_model(arch, sz, aug_tfms=transforms_side_on, max_zoom=1.1)
data = ImageClassifierData.from_csv(PATH, 'train', f'{PATH}labels.csv', test_name='test',
val_idxs=val_idxs, suffix='.jpg', tfms=tfms, bs=bs)
# http://forums.fast.ai/t/how-to-train-on-the-full-dataset-using-imageclassifierdata-from-csv/7761/13
# http://forums.fast.ai/t/how-to-train-on-the-full-dataset-using-imageclassifierdata-from-csv/7761/37
return data if sz > 300 else data.resize(340, 'tmp') # Reading the jpgs and resizing is slow for big images, so resizing them all to 340 first saves time
#Source:
# def resize(self, targ, new_path):
# new_ds = []
# dls = [self.trn_dl,self.val_dl,self.fix_dl,self.aug_dl]
# if self.test_dl: dls += [self.test_dl, self.test_aug_dl]
# else: dls += [None,None]
# t = tqdm_notebook(dls)
# for dl in t: new_ds.append(self.resized(dl, targ, new_path))
# t.close()
# return self.__class__(new_ds[0].path, new_ds, self.bs, self.num_workers, self.classes)
#File: ~/fastai/courses/dl1/fastai/dataset.py
data = get_data(sz, bs)
HBox(children=(IntProgress(value=0, max=6), HTML(value='')))
learn = ConvLearner.pretrained(arch, data, precompute=True)
learn.fit(1e-2, 5)
HBox(children=(IntProgress(value=0, description='Epoch', max=5), HTML(value='')))
epoch trn_loss val_loss accuracy 0 0.956455 0.400646 0.905577 1 0.439589 0.301357 0.918787 2 0.297356 0.274035 0.917808 3 0.236814 0.258365 0.920744 4 0.18122 0.252791 0.921233
[array([0.25279]), 0.9212328809698034]
from sklearn import metrics
data = get_data(sz, bs)
HBox(children=(IntProgress(value=0, max=6), HTML(value='')))
learn = ConvLearner.pretrained(arch, data, precompute=True, ps=0.5)
learn.fit(1e-2, 2)
HBox(children=(IntProgress(value=0, description='Epoch', max=2), HTML(value='')))
epoch trn_loss val_loss accuracy 0 1.14865 0.445329 0.892857 1 0.528676 0.312621 0.911937
[array([0.31262]), 0.9119373855058928]
learn.precompute = False
learn.fit(1e-2, 5, cycle_len=1)
HBox(children=(IntProgress(value=0, description='Epoch', max=5), HTML(value='')))
epoch trn_loss val_loss accuracy 0 0.448036 0.281107 0.917808 1 0.434155 0.267041 0.917808 2 0.365258 0.259955 0.915851 3 0.366941 0.248325 0.921233 4 0.331771 0.250866 0.918787
[array([0.25087]), 0.918786694858872]
learn.save('224_pre')
learn.load('224_pre')
# Starting training on small images for a few epochs, then switching to bigger images, and continuing training is an amazingly effective way to avoid overfitting.
# http://forums.fast.ai/t/planet-classification-challenge/7824/96
# set_data doesn’t change the model at all. It just gives it new data to train with.
learn.set_data(get_data(299, bs))
learn.freeze()
#Source:
# def set_data(self, data, precompute=False):
# super().set_data(data)
# if precompute:
# self.unfreeze()
# self.save_fc1()
# self.freeze()
# self.precompute = True
# else:
# self.freeze()
#File: ~/fastai/courses/dl1/fastai/conv_learner.py
HBox(children=(IntProgress(value=0, max=6), HTML(value='')))
learn.summary()
OrderedDict([('Conv2d-1', OrderedDict([('input_shape', [-1, 3, 224, 224]), ('output_shape', [-1, 64, 112, 112]), ('trainable', False), ('nb_params', 9408)])), ('BatchNorm2d-2', OrderedDict([('input_shape', [-1, 64, 112, 112]), ('output_shape', [-1, 64, 112, 112]), ('trainable', False), ('nb_params', 128)])), ('ReLU-3', OrderedDict([('input_shape', [-1, 64, 112, 112]), ('output_shape', [-1, 64, 112, 112]), ('nb_params', 0)])), ('MaxPool2d-4', OrderedDict([('input_shape', [-1, 64, 112, 112]), ('output_shape', [-1, 64, 56, 56]), ('nb_params', 0)])), ('Conv2d-5', OrderedDict([('input_shape', [-1, 64, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 16384)])), ('BatchNorm2d-6', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 512)])), ('ReLU-7', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('nb_params', 0)])), ('Conv2d-8', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 9216)])), ('BatchNorm2d-9', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 512)])), ('ReLU-10', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('nb_params', 0)])), ('Conv2d-11', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 65536)])), ('BatchNorm2d-12', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 512)])), ('Conv2d-13', OrderedDict([('input_shape', [-1, 64, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 16384)])), ('BatchNorm2d-14', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 512)])), ('ReLU-15', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('nb_params', 0)])), ('Conv2d-16', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 65536)])), ('BatchNorm2d-17', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 512)])), ('ReLU-18', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('nb_params', 0)])), ('Conv2d-19', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 9216)])), ('BatchNorm2d-20', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 512)])), ('ReLU-21', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('nb_params', 0)])), ('Conv2d-22', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 65536)])), ('BatchNorm2d-23', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 512)])), ('ReLU-24', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('nb_params', 0)])), ('Conv2d-25', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 65536)])), ('BatchNorm2d-26', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 512)])), ('ReLU-27', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('nb_params', 0)])), ('Conv2d-28', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 9216)])), ('BatchNorm2d-29', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 512)])), ('ReLU-30', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('nb_params', 0)])), ('Conv2d-31', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 65536)])), ('BatchNorm2d-32', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('trainable', False), ('nb_params', 512)])), ('ReLU-33', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 256, 56, 56]), ('nb_params', 0)])), ('Conv2d-34', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 512, 56, 56]), ('trainable', False), ('nb_params', 131072)])), ('BatchNorm2d-35', OrderedDict([('input_shape', [-1, 512, 56, 56]), ('output_shape', [-1, 512, 56, 56]), ('trainable', False), ('nb_params', 1024)])), ('ReLU-36', OrderedDict([('input_shape', [-1, 512, 56, 56]), ('output_shape', [-1, 512, 56, 56]), ('nb_params', 0)])), ('Conv2d-37', OrderedDict([('input_shape', [-1, 512, 56, 56]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 36864)])), ('BatchNorm2d-38', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 1024)])), ('ReLU-39', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('nb_params', 0)])), ('Conv2d-40', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 262144)])), ('BatchNorm2d-41', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 1024)])), ('Conv2d-42', OrderedDict([('input_shape', [-1, 256, 56, 56]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 131072)])), ('BatchNorm2d-43', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 1024)])), ('ReLU-44', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('nb_params', 0)])), ('Conv2d-45', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 262144)])), ('BatchNorm2d-46', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 1024)])), ('ReLU-47', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('nb_params', 0)])), ('Conv2d-48', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 36864)])), ('BatchNorm2d-49', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 1024)])), ('ReLU-50', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('nb_params', 0)])), ('Conv2d-51', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 262144)])), ('BatchNorm2d-52', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 1024)])), ('ReLU-53', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('nb_params', 0)])), ('Conv2d-54', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 262144)])), ('BatchNorm2d-55', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 1024)])), ('ReLU-56', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('nb_params', 0)])), ('Conv2d-57', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 36864)])), ('BatchNorm2d-58', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 1024)])), ('ReLU-59', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('nb_params', 0)])), ('Conv2d-60', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 262144)])), ('BatchNorm2d-61', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 1024)])), ('ReLU-62', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('nb_params', 0)])), ('Conv2d-63', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 262144)])), ('BatchNorm2d-64', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 1024)])), ('ReLU-65', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('nb_params', 0)])), ('Conv2d-66', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 36864)])), ('BatchNorm2d-67', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 1024)])), ('ReLU-68', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('nb_params', 0)])), ('Conv2d-69', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 262144)])), ('BatchNorm2d-70', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('trainable', False), ('nb_params', 1024)])), ('ReLU-71', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 512, 28, 28]), ('nb_params', 0)])), ('Conv2d-72', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 1024, 28, 28]), ('trainable', False), ('nb_params', 524288)])), ('BatchNorm2d-73', OrderedDict([('input_shape', [-1, 1024, 28, 28]), ('output_shape', [-1, 1024, 28, 28]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-74', OrderedDict([('input_shape', [-1, 1024, 28, 28]), ('output_shape', [-1, 1024, 28, 28]), ('nb_params', 0)])), ('Conv2d-75', OrderedDict([('input_shape', [-1, 1024, 28, 28]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-76', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-77', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-78', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-79', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('Conv2d-80', OrderedDict([('input_shape', [-1, 512, 28, 28]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 524288)])), ('BatchNorm2d-81', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-82', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-83', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-84', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-85', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-86', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-87', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-88', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-89', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-90', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-91', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-92', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-93', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-94', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-95', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-96', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-97', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-98', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-99', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-100', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-101', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-102', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-103', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-104', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-105', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-106', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-107', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-108', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-109', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-110', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-111', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-112', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-113', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-114', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-115', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-116', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-117', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-118', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-119', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-120', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-121', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-122', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-123', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-124', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-125', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-126', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-127', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-128', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-129', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-130', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-131', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-132', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-133', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-134', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-135', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-136', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-137', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-138', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-139', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-140', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-141', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-142', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-143', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-144', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-145', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-146', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-147', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-148', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-149', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-150', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-151', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-152', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-153', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-154', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-155', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-156', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-157', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-158', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-159', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-160', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-161', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-162', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-163', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-164', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-165', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-166', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-167', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-168', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-169', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-170', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-171', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-172', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-173', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-174', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-175', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-176', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-177', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-178', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-179', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-180', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-181', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-182', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-183', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-184', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-185', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-186', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-187', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-188', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-189', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-190', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-191', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-192', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-193', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-194', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-195', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-196', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-197', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-198', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-199', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-200', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-201', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-202', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-203', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-204', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-205', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-206', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-207', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-208', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-209', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-210', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-211', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-212', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-213', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-214', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-215', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-216', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-217', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-218', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-219', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-220', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-221', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-222', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-223', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-224', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-225', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-226', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-227', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-228', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-229', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-230', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-231', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-232', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-233', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-234', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-235', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-236', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-237', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-238', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-239', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-240', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-241', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-242', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-243', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-244', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-245', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-246', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-247', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-248', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-249', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-250', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-251', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-252', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-253', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-254', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-255', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-256', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-257', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-258', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-259', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-260', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-261', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-262', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-263', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-264', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-265', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-266', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-267', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-268', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-269', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-270', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-271', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-272', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-273', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-274', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-275', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 147456)])), ('BatchNorm2d-276', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-277', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-278', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 1048576)])), ('BatchNorm2d-279', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('trainable', False), ('nb_params', 2048)])), ('ReLU-280', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 1024, 14, 14]), ('nb_params', 0)])), ('Conv2d-281', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 2048, 14, 14]), ('trainable', False), ('nb_params', 2097152)])), ('BatchNorm2d-282', OrderedDict([('input_shape', [-1, 2048, 14, 14]), ('output_shape', [-1, 2048, 14, 14]), ('trainable', False), ('nb_params', 4096)])), ('ReLU-283', OrderedDict([('input_shape', [-1, 2048, 14, 14]), ('output_shape', [-1, 2048, 14, 14]), ('nb_params', 0)])), ('Conv2d-284', OrderedDict([('input_shape', [-1, 2048, 14, 14]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 589824)])), ('BatchNorm2d-285', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 4096)])), ('ReLU-286', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('nb_params', 0)])), ('Conv2d-287', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 4194304)])), ('BatchNorm2d-288', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 4096)])), ('Conv2d-289', OrderedDict([('input_shape', [-1, 1024, 14, 14]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 2097152)])), ('BatchNorm2d-290', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 4096)])), ('ReLU-291', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('nb_params', 0)])), ('Conv2d-292', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 4194304)])), ('BatchNorm2d-293', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 4096)])), ('ReLU-294', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('nb_params', 0)])), ('Conv2d-295', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 589824)])), ('BatchNorm2d-296', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 4096)])), ('ReLU-297', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('nb_params', 0)])), ('Conv2d-298', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 4194304)])), ('BatchNorm2d-299', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 4096)])), ('ReLU-300', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('nb_params', 0)])), ('Conv2d-301', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 4194304)])), ('BatchNorm2d-302', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 4096)])), ('ReLU-303', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('nb_params', 0)])), ('Conv2d-304', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 589824)])), ('BatchNorm2d-305', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 4096)])), ('ReLU-306', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('nb_params', 0)])), ('Conv2d-307', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 4194304)])), ('BatchNorm2d-308', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('trainable', False), ('nb_params', 4096)])), ('ReLU-309', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 7, 7]), ('nb_params', 0)])), ('AdaptiveMaxPool2d-310', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 1, 1]), ('nb_params', 0)])), ('AdaptiveAvgPool2d-311', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 2048, 1, 1]), ('nb_params', 0)])), ('AdaptiveConcatPool2d-312', OrderedDict([('input_shape', [-1, 2048, 7, 7]), ('output_shape', [-1, 4096, 1, 1]), ('nb_params', 0)])), ('Flatten-313', OrderedDict([('input_shape', [-1, 4096, 1, 1]), ('output_shape', [-1, 4096]), ('nb_params', 0)])), ('BatchNorm1d-314', OrderedDict([('input_shape', [-1, 4096]), ('output_shape', [-1, 4096]), ('trainable', True), ('nb_params', 8192)])), ('Dropout-315', OrderedDict([('input_shape', [-1, 4096]), ('output_shape', [-1, 4096]), ('nb_params', 0)])), ('Linear-316', OrderedDict([('input_shape', [-1, 4096]), ('output_shape', [-1, 512]), ('trainable', True), ('nb_params', 2097664)])), ('ReLU-317', OrderedDict([('input_shape', [-1, 512]), ('output_shape', [-1, 512]), ('nb_params', 0)])), ('BatchNorm1d-318', OrderedDict([('input_shape', [-1, 512]), ('output_shape', [-1, 512]), ('trainable', True), ('nb_params', 1024)])), ('Dropout-319', OrderedDict([('input_shape', [-1, 512]), ('output_shape', [-1, 512]), ('nb_params', 0)])), ('Linear-320', OrderedDict([('input_shape', [-1, 512]), ('output_shape', [-1, 120]), ('trainable', True), ('nb_params', 61560)])), ('LogSoftmax-321', OrderedDict([('input_shape', [-1, 120]), ('output_shape', [-1, 120]), ('nb_params', 0)]))])
learn.fit(1e-2, 3, cycle_len=1)
HBox(children=(IntProgress(value=0, description='Epoch', max=3), HTML(value='')))
epoch trn_loss val_loss accuracy 0 0.303971 0.242417 0.921722 1 0.309993 0.239827 0.91683 2 0.288534 0.23499 0.919276
[array([0.23499]), 0.9192759310662629]
Validation loss is much lower than training loss. This is a sign of underfitting. Cycle_len=1 may be too short. Let's set cycle_mult=2 to find better parameter.
# When you are under fitting, it means cycle_len=1 is too short (learning rate is getting reset before it had the chance to zoom in properly).
learn.fit(1e-2, 3, cycle_len=1, cycle_mult=2) # 1+2+4 = 7 epochs
HBox(children=(IntProgress(value=0, description='Epoch', max=7), HTML(value='')))
epoch trn_loss val_loss accuracy 0 0.267461 0.235228 0.924168 1 0.270705 0.230974 0.922211 2 0.240056 0.230974 0.923679 3 0.238908 0.232905 0.926125 4 0.223686 0.229831 0.923679 5 0.212009 0.227405 0.924168 6 0.199683 0.227282 0.926125
[array([0.22728]), 0.9261252481176895]
Training loss and validation loss are getting closer and smaller. We are on right track.
log_preds, y = learn.TTA() # (5, 2044, 120), (2044,)
probs = np.mean(np.exp(log_preds),0)
accuracy_np(probs, y), metrics.log_loss(y, probs)
(0.9315068493150684, 0.22650256548463946)
len(data.val_ds.y), data.val_ds.y[:5]
(2044, array([19, 15, 7, 99, 73]))
learn.save('299_pre')
learn.load('299_pre')
learn.fit(1e-2, 1, cycle_len=2) # 1+1 = 2 epochs
HBox(children=(IntProgress(value=0, description='Epoch', max=2), HTML(value='')))
epoch trn_loss val_loss accuracy 0 0.215887 0.227493 0.926614 1 0.21398 0.224618 0.926614
[array([0.22462]), 0.9266144826337549]
learn.save('299_pre')
log_preds, y = learn.TTA()
probs = np.mean(np.exp(log_preds),0)
accuracy_np(probs, y), metrics.log_loss(y, probs)
(0.9334637964774951, 0.22243022015961378)
This dataset is so similar to ImageNet dataset. Training convolution layers doesn't help much. We are not going to unfreeze.
data.classes
['affenpinscher', 'afghan_hound', 'african_hunting_dog', 'airedale', 'american_staffordshire_terrier', 'appenzeller', 'australian_terrier', 'basenji', 'basset', 'beagle', 'bedlington_terrier', 'bernese_mountain_dog', 'black-and-tan_coonhound', 'blenheim_spaniel', 'bloodhound', 'bluetick', 'border_collie', 'border_terrier', 'borzoi', 'boston_bull', 'bouvier_des_flandres', 'boxer', 'brabancon_griffon', 'briard', 'brittany_spaniel', 'bull_mastiff', 'cairn', 'cardigan', 'chesapeake_bay_retriever', 'chihuahua', 'chow', 'clumber', 'cocker_spaniel', 'collie', 'curly-coated_retriever', 'dandie_dinmont', 'dhole', 'dingo', 'doberman', 'english_foxhound', 'english_setter', 'english_springer', 'entlebucher', 'eskimo_dog', 'flat-coated_retriever', 'french_bulldog', 'german_shepherd', 'german_short-haired_pointer', 'giant_schnauzer', 'golden_retriever', 'gordon_setter', 'great_dane', 'great_pyrenees', 'greater_swiss_mountain_dog', 'groenendael', 'ibizan_hound', 'irish_setter', 'irish_terrier', 'irish_water_spaniel', 'irish_wolfhound', 'italian_greyhound', 'japanese_spaniel', 'keeshond', 'kelpie', 'kerry_blue_terrier', 'komondor', 'kuvasz', 'labrador_retriever', 'lakeland_terrier', 'leonberg', 'lhasa', 'malamute', 'malinois', 'maltese_dog', 'mexican_hairless', 'miniature_pinscher', 'miniature_poodle', 'miniature_schnauzer', 'newfoundland', 'norfolk_terrier', 'norwegian_elkhound', 'norwich_terrier', 'old_english_sheepdog', 'otterhound', 'papillon', 'pekinese', 'pembroke', 'pomeranian', 'pug', 'redbone', 'rhodesian_ridgeback', 'rottweiler', 'saint_bernard', 'saluki', 'samoyed', 'schipperke', 'scotch_terrier', 'scottish_deerhound', 'sealyham_terrier', 'shetland_sheepdog', 'shih-tzu', 'siberian_husky', 'silky_terrier', 'soft-coated_wheaten_terrier', 'staffordshire_bullterrier', 'standard_poodle', 'standard_schnauzer', 'sussex_spaniel', 'tibetan_mastiff', 'tibetan_terrier', 'toy_poodle', 'toy_terrier', 'vizsla', 'walker_hound', 'weimaraner', 'welsh_springer_spaniel', 'west_highland_white_terrier', 'whippet', 'wire-haired_fox_terrier', 'yorkshire_terrier']
data.test_ds.fnames
['test/ab2520c527e61f197be228208af48191.jpg', 'test/8ffc8a83bb9ac7884a9420c97b23940c.jpg', 'test/9f4bbcd8a5b189514d3098516983621a.jpg', 'test/f77793be1597dd1ea50b22532b38bd23.jpg', 'test/f719b425410b6eb3e3132702150affd6.jpg', 'test/adfe7237864e2c4e28a0627f97527fa2.jpg', 'test/7fec33e194124a985167075c40af7702.jpg', 'test/2ee0a2da17019b2c95f5283c15a692ff.jpg', 'test/c6d49ce66e3fdae87e2be8ad8fd402b8.jpg', 'test/b6d38beff7efbd38934e383eecf063be.jpg', 'test/0829420985a1d5b647b969d44af3e844.jpg', 'test/07ad25df7e380e29aa4a5788a96cef73.jpg', 'test/ab3242753d5b6a79985112a3cd63908a.jpg', 'test/e9b105a5b7873f33477f777d5a9447f8.jpg', 'test/d0d7f99b88dab4f9fc97be9af2cffde2.jpg', 'test/59f8e54314ff4f560d615af6476c69cd.jpg', 'test/af01e814dd0a625042c1abda80671bf1.jpg', 'test/05fba1b035d12542ad00a38461b10c17.jpg', 'test/a4116ec18c342040855024b6940a234b.jpg', 'test/0bb63e30692f00bc7bf0ab5ac787b162.jpg', 'test/e2f853c8345758faf5d9b2075f196fd3.jpg', 'test/e66e1f3be08028cc17ea788657e014fa.jpg', 'test/f1b2c118e65c95ba1a00d102787d19a6.jpg', 'test/da23c55978faa8bd88db953c1f264549.jpg', 'test/0e826c710afd789f8db9ff522a7a04c0.jpg', 'test/1ba6e093c8af25d01a3602382312c339.jpg', 'test/1c647b0875674bd1aba3153e6fc951c6.jpg', 'test/1acbf4637bcce746291d39e8147efaa3.jpg', 'test/9d876a62e20c672a72f8212c022f55d1.jpg', 'test/f6244044c1433c7067e3129486612ee1.jpg', 'test/cb8323065d4827069d53e0ffba2f0c84.jpg', 'test/d8a6e8ffcba849cedc4c186eef224c65.jpg', 'test/8594ae6003221de99ffbc5d9fa357e34.jpg', 'test/e9615e7f30ffcf6d705ce9cbcb6d688c.jpg', 'test/3728d6b1b7c0ebd9e4722ae7e709ec45.jpg', 'test/b3346fab09a796c121e0dffe84268e73.jpg', 'test/7478402a790ae8a04b5f3c4e2768c4cf.jpg', 'test/c5e43e81eb8a4fd5a455898b9a858d18.jpg', 'test/b3bcc2a3a94c70497779eadaef668d3c.jpg', 'test/0328ce0d5f48e3dbaef86e830e2e9241.jpg', 'test/6ae186b904e3cc8528591a3e50a48f20.jpg', 'test/a8aa29593077a6407c7834eb6fef3c7c.jpg', 'test/2269b48ab82d6b6feeb462c5f867819d.jpg', 'test/f90ac8934d1349d115a4961c20ee447b.jpg', 'test/7b37af62f102cef63ee44361b2a4bb2d.jpg', 'test/d14bc7e00b69187953e6ac38209ab19d.jpg', 'test/551ce3484383dc77bd5cb563a50bad46.jpg', 'test/42feb15909b1a7da5d85bc1a2baafe47.jpg', 'test/8646d62c1e40c6a1806b472508200b89.jpg', 'test/c81cfe1f3434bb984f43cfb74600ecff.jpg', 'test/2f90d005ca7d718be9377b94091849ba.jpg', 'test/34a6fa4ebc327fc03164793636b1bfbe.jpg', 'test/29e85e7dd33b3d55c72ff8cf8878a3fb.jpg', 'test/5fedefbcfd02cc6570cc2a4dbc0c0c13.jpg', 'test/a309c2637a49acc6accfda9eb230803f.jpg', 'test/7937d9e90e6960aaccd74675d26d90a7.jpg', 'test/2162f28a3151f4ca907a8a9d79492618.jpg', 'test/291956adf955ac9e9776a8fe0db8745b.jpg', 'test/b52c5200163243ef1aec04f34a68050d.jpg', 'test/4d2c5271ca71c95234b78bc0910f3d04.jpg', 'test/657459acdc17b85c06af605c1ab723ca.jpg', 'test/025156133d8d8700f6c7027371b1b8e0.jpg', 'test/29548de9a7435fccdcf228afe5fd221f.jpg', 'test/5e193ae2c366405e230a53daa4fb7721.jpg', 'test/b44cbb609e863c0aa906322507df3e3c.jpg', 'test/21174614214935ba20a7be058b29033e.jpg', 'test/d21a8021f66adc2ea042290d5e1d97ca.jpg', 'test/eeffe08e577ad8dda81bbfe12bf8faea.jpg', 'test/a97fbce11cf35df434835888150ceae6.jpg', 'test/9bc5701373a8e4cb3d64d75322a19f9b.jpg', 'test/8e38a2da3dc51eedac2153c37b9b2ad6.jpg', 'test/0e8d997db26798c7c1612847319973e5.jpg', 'test/8eb4d197b67a2ee9670ab5576d568328.jpg', 'test/69e231ddd06ed66f4517f695908c7e6e.jpg', 'test/d049461a887cfddf49953b3e56d89b9e.jpg', 'test/3740097cc690e3a0ef05e078cc6a37c5.jpg', 'test/3b2642968aa7fd5883577aca00ad1458.jpg', 'test/aaae20eed76f8015d6994955bc30076c.jpg', 'test/72470246b6d48c951cbc8c853c5a6bba.jpg', 'test/42c10d2fdabe41a8d0f3120025737fab.jpg', 'test/2f7b43f07134ad69bf36ada8d90939ef.jpg', 'test/3a6122ad0c4f104d1d36b3cf644896da.jpg', 'test/db3b5c710e99f6a5d09b8fda8eeff5a7.jpg', 'test/1b220f74609a8f2015ea898471c0674d.jpg', 'test/bac5e3f6454352aec23245bff7a10612.jpg', 'test/d7cbc532e819d760ab9e418654cef03f.jpg', 'test/3ee1025997b782f6eb2ddd20cd0965c1.jpg', 'test/322543f668826f158650c94714a832db.jpg', 'test/b9005a0f449a339ff21a3bfc0068cf45.jpg', 'test/87e316f956ffcd34bda2dc49d84a9739.jpg', 'test/ef1710d5cb79a5e0b46f7b9a101a25b4.jpg', 'test/0d5b801bfeff4eefb3994b8fc59bc2ff.jpg', 'test/eab189c5274b79b36dd566fea4e9847e.jpg', 'test/ed67681e7935d75f9ce011dbf8474fe4.jpg', 'test/7b3a9c2f5f01acd4846bdc65f4190ece.jpg', 'test/2e87338a89f13b429485cedf8ee89206.jpg', 'test/6f5b716569f463d9a0519f3d8ce0d33b.jpg', 'test/8341f50a86c819b3cb8828740a97e7ef.jpg', 'test/940d587d69cafcbc7bdd88ecc5c82829.jpg', 'test/c2c9364fa0fb2347fef08f172bcfecd8.jpg', 'test/3a98899438c614970758846618857045.jpg', 'test/87f26de902396e2db022e604ae91f15e.jpg', 'test/ddd7f84a932ec7213b9c1f6de8c09262.jpg', 'test/2a83319c4aacda676534a6b77b2ceb20.jpg', 'test/2f1b46804087ade2b6c210125f34323f.jpg', 'test/de327414ced20d4e6f786a68bff82e10.jpg', 'test/2753689addaba82e4a90e51dd832d11c.jpg', 'test/978860f8b3fc9f0af9041d1285179206.jpg', 'test/87e67ad3d0620a61ea7cc95a3e17f123.jpg', 'test/5c451b205045be2ba89e5308e0ab505c.jpg', 'test/1b176552396034ed1c864c3adb6cd16e.jpg', 'test/4252288f9a9b3d363b17060ef0f5f99e.jpg', 'test/7ec8e254a7a22d7302c101b814cb48b4.jpg', 'test/667c969a3a1d19c86ca7e6ab2f877832.jpg', 'test/0684c3415499ddfd78e945c725066034.jpg', 'test/6479fb9f458435d91d0d066004c2fc33.jpg', 'test/53cb184b5e5ce7ef5488fc21f6c32ec2.jpg', 'test/902b5ce26b286ed9883a9b6a5cc814d8.jpg', 'test/e47bc25097050ba689b64de02c725837.jpg', 'test/9810389b3ae0ecc305e4fde32397874f.jpg', 'test/fefafa1c1b5877561330d0a0fd4d5440.jpg', 'test/3b48fe220307f1b42003918b0fb48a84.jpg', 'test/515e5d592804cbf2b8a5d446eb194468.jpg', 'test/32d1d7ac227098b3f964705d5f651236.jpg', 'test/d2dec608053c1cf80cae8116cd470cda.jpg', 'test/13557ec58aad7410efbc8f843754988b.jpg', 'test/9eb06361f4acb2c2213e5ae32e640653.jpg', 'test/4777d63bb8201678d8de585843272ff5.jpg', 'test/463ffe453648a5cf157f2d24551b2b1f.jpg', 'test/725eb0f0b9b1cd56bc1715b8d86fa845.jpg', 'test/9bcde951cb5d820636881a8e81eb7951.jpg', 'test/65c792d01f8d25d7f6aa45a679261340.jpg', 'test/fc28e20d3e3ef312a15b2255e0ba77a6.jpg', 'test/459ae8de71479f5bcc14ffef240dfead.jpg', 'test/4909fc5b89f974fa007c12ba62ecf785.jpg', 'test/197b591a10fe82030b1db2c3bdee8102.jpg', 'test/40bed16bb4157c6d9a2fe340d563ff35.jpg', 'test/61dd794deb9841564d9643dd5737370a.jpg', 'test/4f0b2dbc23fdef5f939144f456a62140.jpg', 'test/85624000301b28c675b431de0b67a98a.jpg', 'test/8e7ca18f952999b5f678f7f7843d9b6d.jpg', 'test/e3a55cc9c91da472abbced51d98d6ff6.jpg', 'test/03205e3e568c87e1568a8415272a8da4.jpg', 'test/084585fd8a9fcef3c7261669cacbc1be.jpg', 'test/d2f9fbdaa33d1bc99a4366b350022994.jpg', 'test/905267bd815441ff829cce3be24c6d71.jpg', 'test/3836dac7313ba15526cd031b72af37f1.jpg', 'test/4a346ac767ff900e8cc4c4352b57d6ee.jpg', 'test/5d10fc611701eb7d1fb8bf2cf4df7aed.jpg', 'test/e15513ca7ebb4730731f34c25e906502.jpg', 'test/71d8ea950f6312b766d75d6ad8ac3ba2.jpg', 'test/57c8db20a559e22dcbd7b7363c378287.jpg', 'test/e1b0cbcf3235fe9a7b35c1652081ff8d.jpg', 'test/7613042504cd73273ab2607cf518ba92.jpg', 'test/b49d77d44fff249f62118af19f3468c2.jpg', 'test/58657786baaa98ea777000c3a3b4e899.jpg', 'test/5489187518477ed3110942da76c30f91.jpg', 'test/57ff0f64f17597e00f58aa6db0392f83.jpg', 'test/00225dcd3e4d2410dd53239f95c0352f.jpg', 'test/c90109fe5971384b82dc9d4085609d5b.jpg', 'test/3e764ad13028326c980cdb1263e70ef0.jpg', 'test/69be99b844287176383f857ee406df75.jpg', 'test/9cccecca16c742f03c63da72b19e4d0b.jpg', 'test/214e5c3f441c8608c29eb76182b3f66a.jpg', 'test/aa8175f0fd2d1a16d75dbb339b372a5b.jpg', 'test/b9e8990b15b719aba1e1621cfa63f636.jpg', 'test/4e06ab5e4129cd603e8a5df22ae9dcfc.jpg', 'test/0e0ba1c25d4f30cd8a6b87ecc54f38b6.jpg', 'test/2dca1e75b099224d925c3512a8bf252b.jpg', 'test/7d48bba12b3f425324b987bfc3fef74f.jpg', 'test/d6434ecc4fcc7c8fe4b463e956481de1.jpg', 'test/d9d9c99f2c03d23f178441f8713798b6.jpg', 'test/05eb4d66296f21bc9782688414fdbe17.jpg', 'test/8f7822c77aa8149639490731c09b478a.jpg', 'test/61307a91fa0311f071c568faf1a372c3.jpg', 'test/452e58a7cfc482391e5ed7a25201f446.jpg', 'test/844a8bc3ae10f267e8838fecfa5871fd.jpg', 'test/9a9f274697e2d195724c3e9f466eef25.jpg', 'test/dd2228d2fbb3ddc8fb350106c2d989ef.jpg', 'test/ed0c3f827519441d3d542944978aedad.jpg', 'test/d354419a80463739ce343ad80c3a906b.jpg', 'test/70b9453812ebb5a91dc7860b2b26ab87.jpg', 'test/e4b7ff61849485992246c0f2ab7e8804.jpg', 'test/1439e842cb9f8b2c3fcc64806cf82728.jpg', 'test/8ea913fc454a2628a5012d0dde92678c.jpg', 'test/98ab98e40fc6786a5441eb6a1ef628ca.jpg', 'test/84706e80023d20f30f1cf4f69741f9dc.jpg', 'test/dce8d03553ab29570f67a28bf0ee0709.jpg', 'test/45d5e4a25b7fc78c4439f6be2ffd4540.jpg', 'test/df9ee3c663b1f2ca84781c09fa8c31f8.jpg', 'test/762c598988525da91610c46e7a690343.jpg', 'test/969b6b76b1e57682cb66eb18d24918c9.jpg', 'test/7ebdd13f29a86637dffab6a2bf6945a4.jpg', 'test/3bf061e6985f4b74f622cc54bb1cd5fd.jpg', 'test/e43f6e621469f438f351d31d889b839f.jpg', 'test/94e6990e098745b875219aa29b53e05f.jpg', 'test/61a2bf4fc6f35bff211a298b6fc23d8d.jpg', 'test/fcef727e767ef68b3973bfd25ad41305.jpg', 'test/4c7fc253026fa9f6bc8583123692633b.jpg', 'test/c9f781b5b98e347b854fb8cfaf0328d2.jpg', 'test/693f2b472f62bfb69ef2a443175df06d.jpg', 'test/ca8bf19cb287abbbf9cd8e1d8ea41355.jpg', 'test/61e105759437e35bcb9630bca0e6bc7d.jpg', 'test/23a849cf21f4a759477f1013997af060.jpg', 'test/615499312d797d41a24a386cf7049b31.jpg', 'test/dcddc9135d0a138bb83a55bbc06adacc.jpg', 'test/bcd3f3f8402b5b476ca6d6c5fe1661bd.jpg', 'test/d16cf4793e35e275e539cadfa7d1196d.jpg', 'test/bd324712e1758b65a450dd065b384b1b.jpg', 'test/fc0f848abb459c9dc98c455356788516.jpg', 'test/e1e6d180a31b0a9c0d741d0f142ea6af.jpg', 'test/90e3c749b540a5399091d9aa79c6498f.jpg', 'test/10c4c824396380cbc41c36f28b1b9baf.jpg', 'test/4e5db847af4d184dfc7a2ccee550432a.jpg', 'test/bc7fbe41176e246289fed59d47af17d7.jpg', 'test/4692b7d214fafbff4266a3a8678a1fd6.jpg', 'test/2cc09f27c6e1e8e88172367cea8c3780.jpg', 'test/6d1f9d9b9da664c396aef5cad54a8ed8.jpg', 'test/e35b90290702042d17ceee2aaf2d1475.jpg', 'test/90a3e77e8802823f857c32d281f3397b.jpg', 'test/5bdecbb70e574f7427bfc869a7311ff3.jpg', 'test/d4084988b2bc28dcc901be3666bee7f5.jpg', 'test/7ba0334452749bbb7c49cf75c8a5e949.jpg', 'test/988d031d16dbc136432726cb3bb53294.jpg', 'test/9cc2fe1b331667444eb25b60deebf645.jpg', 'test/436905a18153b169c71cc3ab7fb2091c.jpg', 'test/36ad4269f38b87653eb7aeb70101f0ae.jpg', 'test/9eaa7a13f259e77cd0b57e824ac7cd8f.jpg', 'test/77c922894ce01be17d3016a377f985d1.jpg', 'test/9a5d178c8e74fcd1363759ff679989ae.jpg', 'test/f9c1fec06778d69677c24dacfb9f4840.jpg', 'test/32c9cfccb110a85a09a1f5ad73bedaf4.jpg', 'test/97d4ed796a33f67ebbec96b7ecc2dc22.jpg', 'test/4d306cc7f5b127fe31f6094c0f3fbc09.jpg', 'test/426dfd819da9c855bc00123b2cb2aa09.jpg', 'test/29ee32e55ed89846115db9088e4cbada.jpg', 'test/2972fed195a90795186fabc9ff7e409c.jpg', 'test/a0b7a24c1fa6ddbb4a648ea7b8fc4eb0.jpg', 'test/d18faeca0980bb364e31d69e662b3511.jpg', 'test/0a0b97441050bba8e733506de4655ea1.jpg', 'test/c01ef8dd3edaaa5cd03cab3b9a4a7fd2.jpg', 'test/78eca7a75e7f42a5699e5801eb56a46f.jpg', 'test/3ed792220e96f6c5eddbc4681da9b2a5.jpg', 'test/f681821203c5ff0a675b6f998767e4ab.jpg', 'test/3e45415cd08b2cef738fe2e373123daf.jpg', 'test/890bf4dfb17c971e1303d7f57577c841.jpg', 'test/522b3f3f94bb5deebebe2c43fb2e70c2.jpg', 'test/6d41ac100737f33db95996bdae59bad1.jpg', 'test/6d68a6ba3914c95014efc8dbb1bc2c72.jpg', 'test/a3dbbb37c62f7cfd4e1b4d2795aaf7de.jpg', 'test/3a43689ad0c3a2a3989cd670697fb7de.jpg', 'test/5ba6afea1f5e415f5a6e762f4fed0344.jpg', 'test/42d47502a728ebb752db63871329f09a.jpg', 'test/129107cbe7b96bdd10d61811c8f70686.jpg', 'test/283109fef09eb536e61f334e6945c7eb.jpg', 'test/f7fda1184e21dcd0cb94086cac9ee762.jpg', 'test/cbf2d65fae046a5aa45bb3ed58f838f6.jpg', 'test/35a0b143e2927ad5d6125e6b33312c9a.jpg', 'test/6236d7ce8173737bf3caf7270184bc76.jpg', 'test/02804190c4ffc82b073d9f0036f66bc6.jpg', 'test/9bdee231306efbac04ef1280c2ab2fa0.jpg', 'test/7015592b41f682ee0604ab1024fde5ab.jpg', 'test/8ffb64ee0970306a0b01f7a2a8da73eb.jpg', 'test/0656e4606d4a98f2e8c8452416ac1ea0.jpg', 'test/58c35fe95f8466c8136550467d5121a7.jpg', 'test/578bd79f99ac25b93362847a6e505e21.jpg', 'test/6c750aa0f0f37f89d942b674279b3bac.jpg', 'test/61bca8b109157bcd0bbcc083b6590e3b.jpg', 'test/e0d51afc60c25eb2205be1644af09cc5.jpg', 'test/15e1e7f0c942bc77e04097abcf18f6e3.jpg', 'test/93102b5b9f01ffcf30ddf0fe2cb17a59.jpg', 'test/4068db24e52f8d67c667d6b035036b19.jpg', 'test/d5292fc676d046dac6c1d29e2a03e3a2.jpg', 'test/fdf6e6be8630044c6d14df570849cf44.jpg', 'test/37e091359191cf82e1d2adc38d5f0c64.jpg', 'test/e65d6492c026c925660d80543664b8a7.jpg', 'test/3f999cf1693fa903bf7dd6164dd46e59.jpg', 'test/8e25febdc662f5e500efe8ba2cf44cae.jpg', 'test/4ef2b99d3028844d067feda58dc5f1f0.jpg', 'test/feb308ce2a7ad3d84e84807efae21518.jpg', 'test/ca97512cc0f458942025ee480023bc95.jpg', 'test/14c184c41c90fdcca3411e730ae4737c.jpg', 'test/8c543f881fbed3b143f8eef96968514e.jpg', 'test/8aa49bb2a9dddc1b22b98c31689f9e38.jpg', 'test/b7b0553cd3215f530ee06bd126630c3a.jpg', 'test/8e649b689c5f156ac0c0d0a7ebadf965.jpg', 'test/fa717a1532249d9c0532378c80c46c8e.jpg', 'test/37f91f5de2d6ecedb6abebff33d7fa17.jpg', 'test/52c2021a5ec2aa05e841df52b6a97d41.jpg', 'test/a04ec5d3e358109699247c1d60dd6d2e.jpg', 'test/83b3a854863d6e7047bee089969663ff.jpg', 'test/59f49b780e38528b3234abc5842eff67.jpg', 'test/379c3539bed019806f08b52163cbc2d2.jpg', 'test/3c12e379d2378cd7a996bdeb825e3c10.jpg', 'test/065e0b70a690e06a826885b454622928.jpg', 'test/53d336cdfe574e917155b300ae3e5cca.jpg', 'test/95e14fef6ed902998eac129ec69fb805.jpg', 'test/2775e3092b56166daec6df4a38a14368.jpg', 'test/50f60661565a02c5b96f446f089832e6.jpg', 'test/c4e5a86214f9ac9b28c7381009b708ca.jpg', 'test/496e85b1192c522cae8b0a7919ff6ae9.jpg', 'test/4384fc6887440d1d46dafbd0a6bdad71.jpg', 'test/ef9432cc6dc7ab7ba38d18abffe6d1a0.jpg', 'test/7cb70171e113b88bf215260c25f55d2b.jpg', 'test/35aaea679a279ceec46f649f0590f325.jpg', 'test/4a5d85b5525bf424f90a2928a13b047d.jpg', 'test/d00a9cb79ee6edbdb0e683de51a8f50a.jpg', 'test/20d1255f2c5c32baa6c0a6cbb659a184.jpg', 'test/4d99cb036a4b902a121201ffaba48965.jpg', 'test/f73c6b6891b3e40a6bc9dd26f4e65767.jpg', 'test/174e1bc31c5da607dda786cc43eeaa50.jpg', 'test/38727f56b82312db412d2df2ef718bb6.jpg', 'test/d6cad6b7f0a8a36e58a1f98d71e823ce.jpg', 'test/ef4c9b0875ec51068b2720a01fa36b65.jpg', 'test/6063fa5fef88446f86b8081bdf12d9e6.jpg', 'test/09cbd98c55f58ad0535b5066c72e6e42.jpg', 'test/f4a2ee1dd5542da8b0150fe8f7a2b7c3.jpg', 'test/09612c47e84bcdf06c8e5a99ac1a8bd2.jpg', 'test/6cd1a9cbd3d52ed1fd1c07630dd77505.jpg', 'test/6d15ae3e88e32472a777752502f5ef61.jpg', 'test/afb7f1305285c47c360c2a21284425cb.jpg', 'test/4ea0130ffbe06871063bc51d23894b12.jpg', 'test/18c3a6f7569d115f3663e75677565550.jpg', 'test/63f945388f3013dc10f8e2c740ad9552.jpg', 'test/e06fdea86b416e992137ad52bb5da5a8.jpg', 'test/22dfa94e131e840a76e4961c3455004b.jpg', 'test/ad889aca15b6168db4dd7133ac5a8ba4.jpg', 'test/51dc2e213c35d513d9759a29eb652472.jpg', 'test/da7be6ae218a4e5addcaa34cfb2d4fa3.jpg', 'test/0854e34e53c9dd84579d4c37086dbdf5.jpg', 'test/fb0416a56859decbc1f5f6994687b16b.jpg', 'test/d4b35622d0df5814f4056812d7507e50.jpg', 'test/f56b4140707da82fe91cb9e5df4ce68c.jpg', 'test/ef413ae9b0de80605bc95de2d12a4082.jpg', 'test/2bf6d0177046ba8936973513f3eafce0.jpg', 'test/6dde5ecd74b830cab77c57dad4f39024.jpg', 'test/f10c58048410333d9c4156046b0ea54f.jpg', 'test/b1040aa860eed1715e03883b94764c4a.jpg', 'test/3304bb6f7dba8b14fb7ff61bef70cea9.jpg', 'test/e55534e27f92b4c8177ed2beb1cbba7b.jpg', 'test/eb8473f9fc102c45e0c0abd07de20a2a.jpg', 'test/f90ace46a8ccf051f6f7ec783ad8e258.jpg', 'test/33d4943b93b8c14459ec8a7c5d35cc25.jpg', 'test/420ca2f011341d6e70558c6e2b46b258.jpg', 'test/ff357aadc868c7b38e17bd5b87de31be.jpg', 'test/06e9d34793f7cb6915f3f2b2e6f7fabe.jpg', 'test/5ef10a9edd5c5bb11c1cc4d5a4df566f.jpg', 'test/429003ca7c11f0dca8153c427316baeb.jpg', 'test/9e1198eb00e2bb4cf66dffdc0abfdcec.jpg', 'test/3fed2e25badf7b5e8c12a4b71098e132.jpg', 'test/cd0a8261be06236f76518a976d38c071.jpg', 'test/0954e09deca15b755d04a7826264da61.jpg', 'test/c4011f49046784b517ce9e0a47ed3013.jpg', 'test/c6866b837d54f3f136250e02a79976a0.jpg', 'test/eeb73a13b70170c416aab67eac15fdfb.jpg', 'test/9f57531651e9b35af426537ad10fbc57.jpg', 'test/77fbc571d85238151072c9ef7d0f4c9e.jpg', 'test/6c4a4565e1d0906cb370d01efe64ac16.jpg', 'test/9d6923ebe18f316321de8b27da18ed5a.jpg', 'test/5bad43e776606caab0912c9e7f0e75ff.jpg', 'test/89838ed67f3fed8e3c66a2d697de47d8.jpg', 'test/d90cc1b8fe0ac4fddc6241579378103c.jpg', 'test/e91ffd67dd303f59029d041ff4fb65b8.jpg', 'test/6dc95536e52a5b170b7ae72b6a1fee58.jpg', 'test/f45014f665123584d3588802ee020bce.jpg', 'test/518e16d098116b14a9ce2fdc4b80c06e.jpg', 'test/b7389c527b5ba629b036d30bd74a49ec.jpg', 'test/82ec6bdf968a14923340179515ce5546.jpg', 'test/88acf79ce25c72f682e272e658725726.jpg', 'test/7f55af43e287c09bf1b1b2423c1942ed.jpg', 'test/364c84967c6ecf534c54cf06e20fc3fc.jpg', 'test/cb54c8c517dc12da27e5a3b72f1a1411.jpg', 'test/1cc56ea149a97f5c3b7844bdfda095d0.jpg', 'test/c55000d37452394e64cd05c99a645e4c.jpg', 'test/7edf77f00dcc7151013e71828cded079.jpg', 'test/5f571aa094aff976ca384870f58f21ae.jpg', 'test/6423e27d0255a4e237adb4993c229d26.jpg', 'test/e3f04efb648b110b2eb04b9c041504d8.jpg', 'test/3bbdb72ff6a0ad3b87077ff38b3ec468.jpg', 'test/1b6828700205a5552e8ab2464647021f.jpg', 'test/afdf981978119904e3303015913f4a79.jpg', 'test/01cb4c4d181a23e157429168e948fe5a.jpg', 'test/069f97f28c811705453d84528a7af240.jpg', 'test/df86ba50c4d0b597af0d23bda37eb10e.jpg', 'test/9d5350d6dddfb91fd8929607358de3a3.jpg', 'test/d6312b7f6caf8db9d5fc88bba505813c.jpg', 'test/c22ae24c27a5cc9096f25f1fe438259f.jpg', 'test/22f8e7b687205a4a6a6f0ffd3bc507e1.jpg', 'test/e71d9f32ea6eb1c2d944e8f4e811c209.jpg', 'test/7328b1eee0be05c80f119753aa4623de.jpg', 'test/f928a71d3356833e8c46734938c04cd7.jpg', 'test/df577444ba8b7733f42c49e9d42111a9.jpg', 'test/e4729bf465eac43afb6b04687d4703c3.jpg', 'test/4d87c82f9698058f80a90e55e6376c3f.jpg', 'test/1fdcbe1bcd80c118461512790a250e67.jpg', 'test/3b81256ebf571a6af1f7be482b50cc7f.jpg', 'test/c8a02332902fb932af7edb0675ccbf75.jpg', 'test/0c6176b396e31ce7666185aa435be7e0.jpg', 'test/6afa4800e25bf15e88599895e90b67b4.jpg', 'test/3d1a15fec91e3648daaf273373a1c03d.jpg', 'test/32df03ced7bcadd5594e95c2f461c05f.jpg', 'test/2a23d2cc0635ee44798c5a0497927ac6.jpg', 'test/722f83aa7a932ed3d8b3f7dade17a456.jpg', 'test/86ca8cf0f5a914825f88d62908d5cb55.jpg', 'test/ce28dda9cd9cd616d38527b263bc292a.jpg', 'test/b19f7853f6b2b84a99fc3b7c8a8eaa64.jpg', 'test/7852e7963247e079c2df5b542ba5db89.jpg', 'test/4df248dcad4b6629b1a830070900d321.jpg', 'test/9b348ce9f36574e99cc664f5aa8cf5f7.jpg', 'test/fc50b817f059dbfff5fa1857d7769cc2.jpg', 'test/f0ceb5eb780eba366f9a077486fe003d.jpg', 'test/43333944508ef210c0a8dc5c3700a90c.jpg', 'test/e440ec011c3c7ea94838ab5fc466159c.jpg', 'test/08b34271d7d196d13bbeeea99504e099.jpg', 'test/8b842f121c77fc2ca1eaac41fea241cf.jpg', 'test/3d47c7d4b52c2d609d318dfcc416f839.jpg', 'test/3b4bb3f2db01a65beee775a04313b25c.jpg', 'test/255a2dcc7259be7f3591dad9c9043366.jpg', 'test/92d8c1fd586f6565c82d6828335cac14.jpg', 'test/6a44393dbb58504bd749db6cc825255d.jpg', 'test/92c5cb90c59782ec6b87ddad45216295.jpg', 'test/8d243d285e72a16d8c266866f5e6738e.jpg', 'test/f83d03d1949ebedbbe8bb49debac8af9.jpg', 'test/d07116a8e1777f6d360aa434377f32f1.jpg', 'test/1cb17b18aeb47d13e7bec401cc42e79e.jpg', 'test/5e071adbfa8d739c1fa3d5015ec6028f.jpg', 'test/09d5118c848bc579eff8cfb669fd7aa1.jpg', 'test/6a7c935d30ed7694422f5e74093082ca.jpg', 'test/6f789dbed826fd84e76b697730f6e70c.jpg', 'test/c2cfcfebb375fde437807ded4c172460.jpg', 'test/7b1883b3c99c234dc623b842ce5cfb63.jpg', 'test/e9b16b4bdf5b0561fc7c69b2f36e1a7e.jpg', 'test/75eb74a82c3dfd4d8b20c8165f273707.jpg', 'test/94cd0c3d8776791a957b9c8e53bbdf6b.jpg', 'test/78e0d148de61ae803d373c5a7e65a228.jpg', 'test/ec25ce11616bda2e8b7669c415128768.jpg', 'test/c10d6f9e470ee1be933d81f8388c92fb.jpg', 'test/dd3eb4338145e614d325a917a35e5a1e.jpg', 'test/2f1ce585a580daa2d3ccdc51bc8b66ad.jpg', 'test/d9ad7f21c3efa2f7a9bf39835214b5a5.jpg', 'test/05bb6919c2dc679ea70ffc632f68ee2b.jpg', 'test/3839723ca994957060885ee8e69c97c6.jpg', 'test/1a38ab01d6a18a4693a57125fb7f0370.jpg', 'test/6951fc251261f1c8148a518bee464126.jpg', 'test/a562ab222aa5c4ea685da464c74ec8ba.jpg', 'test/fb0aa9d598d54e50963be105661944dc.jpg', 'test/1aa65d339d033885cabcd9ea067cf4f1.jpg', 'test/950618805a891d92ba13229d237a0b86.jpg', 'test/5a87f43ce9ff04627459d1caddd8c36d.jpg', 'test/86584e58605edfc9ef50fef65beac0e2.jpg', 'test/f86aa3a7e56a78d9931710865d05632d.jpg', 'test/8d4c922dc3b59b2ad867ebeeca0d187f.jpg', 'test/e4c743b9aaf615dd5fe162bf25f82fb5.jpg', 'test/176db83947685a07cd11fa338bc629d6.jpg', 'test/e411a1b3681604f6321af7cb8e8f2de7.jpg', 'test/28e205cf6a6ff6f12b261eef8305766f.jpg', 'test/3a438bd21a911c958c26351f8c65863c.jpg', 'test/f37106dba00385993428e7c557b15805.jpg', 'test/926655bc5ed1284e29fbc8d6e232757a.jpg', 'test/32079b3920b2060221ea265401d93b62.jpg', 'test/8a8dda8d9a2747ebfeaedb7bfcd38e19.jpg', 'test/1be3650327dcff01488a0764353215ee.jpg', 'test/6ae629d5ce69859d99f19646b9480910.jpg', 'test/9dcd7b11a8912762da46d5f69732e505.jpg', 'test/5f341ee24ded57979d4cd6a0839de824.jpg', 'test/1eaa414c22931039f4e8b9502f88daf9.jpg', 'test/4c2d4c51a554a781b69adae6f7c27643.jpg', 'test/1ae26ef205f733fbb084c8aeae253b25.jpg', 'test/cd3a666d082b6cb9a44ddb1dca5eedc9.jpg', 'test/d8e7a8dd3d639116edfad1a9d1463130.jpg', 'test/0dc570ec7086bab004a7e357164c04b8.jpg', 'test/24f3f3e9af7ab0f4aea5b1b9cb0c0ab5.jpg', 'test/55cffce6ffb1167881fdefe1615dee87.jpg', 'test/4ec9d65e78c1c468ce371c4141d0d301.jpg', 'test/b3076a6451bc471a6e2f05961de08aee.jpg', 'test/f1fdf296d0252b3dfb46f1bfc37bcb63.jpg', 'test/df2ce797bf398414aac7e20119c17cb6.jpg', 'test/4cf0fcba95a9fbadc5a7ca4d7d01bbe7.jpg', 'test/6f7c713bd7dec32b0a8d07dd4822d256.jpg', 'test/e3982348ad8b974cef2298f741bc3c99.jpg', 'test/223d756d28558360245944689cc2a988.jpg', 'test/79829c383cbbf0aafafc5baefabd69ea.jpg', 'test/d15e9804516670c47818f0f8258192eb.jpg', 'test/525fd146a1434d54b38e75ca89e7c066.jpg', 'test/dcdffa00518844bd21499db49979f9c8.jpg', 'test/c24dd508285cd0484772e5a1abd87d3a.jpg', 'test/bc6fc592b894e75a837a9c31bfec8655.jpg', 'test/eaa65260eb9a2f7d3b5484ac97962788.jpg', 'test/2fe3402ae5732b553ee6cb6076544fec.jpg', 'test/a561fb8f5db3f033a2d01fefd097c94e.jpg', 'test/c69c44572a5df3b7a9ac93e9071453dc.jpg', 'test/d6d08fe634318194555a9419180d4ab0.jpg', 'test/16c99eae8d1d81d632d5a76fa9448a68.jpg', 'test/5cad010642dd82c686e4b8415eeaf347.jpg', 'test/151b1e8efd6f63184058b983e10ff829.jpg', 'test/70ef7f40159718bfb3683dec7c125b4b.jpg', 'test/13b6f9b3dcbab9a4ba4b5c3de3cd5f6f.jpg', 'test/4ec6fe076b150ca77641a4bf676d89c4.jpg', 'test/329d3d6fea50b2ce65c611fd5b31d1d2.jpg', 'test/bb0c7d7af4bdc0d3646afaf1339a15f2.jpg', 'test/0110fb82ad93572bd6f5dae4b048037d.jpg', 'test/e2888231cedd08540816e629c0733922.jpg', 'test/cc8599c4a791441bd97a511a9474403d.jpg', 'test/f407f19970c6d8d516722e899adc599c.jpg', 'test/85c78df191958f1751aa118e6d3021aa.jpg', 'test/f96722fdd8a6a0e9ff86eee619cec34d.jpg', 'test/faf757243722ea255b9b190cd251b9d6.jpg', 'test/db11b427fa998df38056fb050debd8eb.jpg', 'test/565205413fb320b9387a99d344545b2b.jpg', 'test/9dc6dbeed6a6cfc487456999acd35ae6.jpg', 'test/25ba0484e0c90b93cefc170e5489c2f0.jpg', 'test/768d51ef6eaa0b1ecf85b59f0fb832ab.jpg', 'test/e2b4d6b6590fa2941e74238248093eb3.jpg', 'test/574953f707e8c12b0349ca4c6fea9e3a.jpg', 'test/b370ddfbcc1d5f3f694d424a3a9d096f.jpg', 'test/74a50646dfd99459faf8c1a626c53795.jpg', 'test/000621fb3cbb32d8935728e48679680e.jpg', 'test/a1cb6364a59b4820943d1b4ff58800ec.jpg', 'test/3a81b80e36c91964a3f01e5813a22a79.jpg', 'test/610555087abc35e584044750d7154609.jpg', 'test/56d6c58aa719ec8d4f8f513800578f8c.jpg', 'test/67d17625287f1a4b64124f6065ec8701.jpg', 'test/517ecc5a496cfff2b6372c26abe4c91b.jpg', 'test/91faba2e7bd694aec44c6d91e386445b.jpg', 'test/1228d5ff93a39830f6c36012a106f4c5.jpg', 'test/9e72af813948e3349bc6b3454b4a6e52.jpg', 'test/5c4503ac01840e7a9307b5e33acae248.jpg', 'test/7b1fddc813adcb2b3519cb590d82f62e.jpg', 'test/982457d7157c74ceeef40725a8412002.jpg', 'test/7b4a5c0a390fc553a71bf4fddb4b05aa.jpg', 'test/a0d9fe41fcaae599e8e133cd8a0ee688.jpg', 'test/ff8f9a768544fda79ffad62576f4d129.jpg', 'test/5325c84dafeec70d457b992795294317.jpg', 'test/4de2ba963d28c9ade288ec40ba54afb9.jpg', 'test/ae9b177d97d0d08bc6f1fd5a592ccc13.jpg', 'test/538e7a043f4435bb7b4be8fbdc73f2d9.jpg', 'test/9041d7c2bd1af2418962950cd8a2b885.jpg', 'test/3fbeb111e0468e8c23f5746738054efa.jpg', 'test/93f5a3810fde3ddc40ccccab4dc0487b.jpg', 'test/48a865b32601a719b6748c194c8351bf.jpg', 'test/dd7bf84df93991b7c15ec739c82acc04.jpg', 'test/a2e03e4bca79b6858bdc707142dd8391.jpg', 'test/6a393de9df49d1e313f0a3dd42aa2815.jpg', 'test/7ca5580d25264b2454908b5346ff3281.jpg', 'test/0a51fbac72fac75df279e18e4b1c042f.jpg', 'test/e3c97ed588b32f49c7aae65cf91f17ba.jpg', 'test/03af64f714d918ca61ba22d011816beb.jpg', 'test/71cd1ef653a545062093510ab36004b7.jpg', 'test/900c2fdffec1ca6956208ff7a236926e.jpg', 'test/e17512584de423da7fc17bfb2c7548ae.jpg', 'test/7cf2350be70ed2d335a54952fc6bb30e.jpg', 'test/10dbf30635323f90703abc5d76493902.jpg', 'test/1bf8b6d0b362943130a9fd6b2751913c.jpg', 'test/0ae4367c7f7149a43b0e5b1c07ce7ed9.jpg', 'test/d5029b3d5fb11beb988ea56e0f19e2e1.jpg', 'test/7ee7bb563c55c1e40edc29928a5c0162.jpg', 'test/65bd5879ec1bd32bd87a1c1ab54a0014.jpg', 'test/c2d87315df1b02017edd04f30f8b60fa.jpg', 'test/7490f284d304412d3641a67d298a094a.jpg', 'test/7046540577c4b66cf19936231d391b8e.jpg', 'test/dff6d0e5746812e0e5808c0e69a20574.jpg', 'test/cedd6b0da3b4070ff7c7a185b85c7504.jpg', 'test/49c5c75c9477167654a1c41937a866b7.jpg', 'test/201bdc6f7a8b0fde297d1291fcd31380.jpg', 'test/9bf93ac268122f8985cd9dcafa2e3a85.jpg', 'test/3affbc524a54d1dcdf58bf0c3b96153f.jpg', 'test/1c082570531b3fb68e82f06695d89de8.jpg', 'test/067e053858f0cdbc2417c0ce58cdfafe.jpg', 'test/c72a0bdabba7a8c21f04683e98794a23.jpg', 'test/683036e204cc9f8ddfbe56c3d63ffe01.jpg', 'test/b9aecb05c7f833a31f5e7e9399812332.jpg', 'test/d9ff293c85c9263083b0369b9bad654e.jpg', 'test/86c2d71776b76d0c7acdf34a87b7f9c7.jpg', 'test/6544e8463854c7d6ed90258bd413ef63.jpg', 'test/73bd84ab7916a285734b4a89a50ee247.jpg', 'test/6e6a470bdb033d53a5c997833d86c6f2.jpg', 'test/6ddb1d1a49efa4b83d83f30ffc409458.jpg', 'test/52154f155ae6ba4b812cd18113ad7453.jpg', 'test/e4ba350279796ff15c3a634037a6f88e.jpg', 'test/c5120a58c8b044f3968bb8bf8c281ac0.jpg', 'test/53ef70b153e67576e282924876d3f27b.jpg', 'test/e427b9e1ab1b7f09cfb02ac073f56f2d.jpg', 'test/204c040a1ddbc2aec6d5e4b4d0e03c7e.jpg', 'test/b0362cd1e195639de7b1fcf70324d40e.jpg', 'test/8d7be90433c849873a2917b4cd0b9885.jpg', 'test/769f02384fbd98f2963699b8cd891572.jpg', 'test/15eb91d38d13be03d41639899e923053.jpg', 'test/77cebfd9254b131e6d25ec7ba5195276.jpg', 'test/4c4cc4c7b3fa4f5b1567ecfce59bf34f.jpg', 'test/c17f8c8203cb68424ae67a010c354924.jpg', 'test/bdebc49101b9af7ba9e46182661dc4b5.jpg', 'test/a354ad4e3e240da15462005e40b4583c.jpg', 'test/c156f32e908a46a6b4bbef72f6223905.jpg', 'test/ae323e40a7e64968fdb2650078de7cd7.jpg', 'test/d472bed5237cc2cce18007ea5ab43d4b.jpg', 'test/3e2c021f8d38b7e434b926e12424a016.jpg', 'test/65bd007dd322ac49c62bb86195e529ed.jpg', 'test/4beff00d6b5285d5dff491a494da0220.jpg', 'test/d4bf6045e3453d9a2cc117d3e86a1e00.jpg', 'test/52b0846e26f28f8f1a1899ad98481782.jpg', 'test/30ef42c5c84b11fa3052524706687bcd.jpg', 'test/cace8abb5880d8042cc79832eedbbc8b.jpg', 'test/46782af314bc08de257d893c3128ac4a.jpg', 'test/d814acb8ca7e3288d8ac5ed47407f662.jpg', 'test/89262d9a1f00dc5aa300905f58cbde69.jpg', 'test/5b3c30550768b2ad4a53fcd023e8cbb4.jpg', 'test/4bf924974410498a1d52d9eb45eb0703.jpg', 'test/5028d2d148171673158c6ec80c03d8e7.jpg', 'test/df47feaaf3dfb33cf712cccdddc8060e.jpg', 'test/1c84ca95720f4b60129fd44085fdaa40.jpg', 'test/3a7d676acddfbd7f5cb3fceab8cd3aa4.jpg', 'test/8356f99f79e539a97028b1e4af918c43.jpg', 'test/bddd379859e4fa187b1874b9e061597d.jpg', 'test/75f8a13ae05b56eed204a33bf99287ed.jpg', 'test/f7d150e11c972c850159603843939b28.jpg', 'test/8bc098fd981ba69ebb346b6a1608b0b5.jpg', 'test/a78056d00ebb14a104a5d7438319e81d.jpg', 'test/28f7fbb3750d3256de932c58000a4c33.jpg', 'test/0db3f774655ada5d6f78f2a3c31fd295.jpg', 'test/3707f315aececfd4d4bf7953b75bc68a.jpg', 'test/d7759e463e93114b57e12c56e7a13289.jpg', 'test/c627411dae091af961dab2988c35923e.jpg', 'test/9d97ca8c85b481e7b1245cd65ec8bd5f.jpg', 'test/0cfa9ee8a8e0912bb06bfd575f70bfb7.jpg', 'test/9ace4c5cced4fb88678a5b0a9b3f3cf1.jpg', 'test/0cc2a9144cd3a2292a108a28d68c17fe.jpg', 'test/d9cc62cf60266f824731f8a4e70ba718.jpg', 'test/ff766d48f0804590391df24f73cb2118.jpg', 'test/959bc1618cb81e9aa244a52db1246076.jpg', 'test/54c746a1470981b3e80893a0c8a5f973.jpg', 'test/f10241d199251db359961e814733efc5.jpg', 'test/5dac8f13467994de6ba778df1cdba3fd.jpg', 'test/da18208afba4420b0333c7fef7642ec7.jpg', 'test/0f21800e7f10cc35725b82d34da94ce8.jpg', 'test/58885a79643c3a480aa9dc2ebef7672c.jpg', 'test/32b4850ac87ed096cfe5d583ed95f156.jpg', 'test/5cf394488058748c8bf816140dd02107.jpg', 'test/04fc2616e5e491538a989b7eb80d7860.jpg', 'test/d16f5acab90d41f1ac0014944027d490.jpg', 'test/1b3f21283d424bf4034571b58b9530bf.jpg', 'test/c52df09d15f0e89580a937fb49e01a6d.jpg', 'test/2de3603e679bd3174a0a2464611bf21e.jpg', 'test/0630bc53549c1169cb9c081907a8cb05.jpg', 'test/8584099bbb10d51cc5b88ef5c8645198.jpg', 'test/ffd06687c72445b0c6e8a130a0a8711a.jpg', 'test/0298eb3d74444d2c405639d51c220bc2.jpg', 'test/1cd2f85ce25710e78d9531ac24f46746.jpg', 'test/fbf4abbd32d544ff9b5df6af25eec3e3.jpg', 'test/f603da0e3cfff2ea4d792c96fe5ebac6.jpg', 'test/957379d51e207de4885b41d0b1758d8c.jpg', 'test/0169ed6715e26c0c5fb460941c8d3bee.jpg', 'test/74e40c5277dc098324dfba2ae27c4b22.jpg', 'test/5e1940d82de5036864fb3a44fa49bd7c.jpg', 'test/8534fce6132c02ccb01f71ff64a80b16.jpg', 'test/4e3440f75b37f3d13c0d8c025b30d337.jpg', 'test/f28b4d5899f9db2a2caa7a3361c847f1.jpg', 'test/f2e4e4f1ab9d156443682dc4653f23e5.jpg', 'test/fde6a7af1944348eb4ecd1268f49a549.jpg', 'test/545c3279db44dc7c00ccded6eb2ccaa3.jpg', 'test/9f6611b8dc4ef5b77e18135f713f8a4d.jpg', 'test/9b5ff522c48a66c4a85eb418ad4a0ed0.jpg', 'test/4dc316028cd0fa65ba6bf0f65f40c62b.jpg', 'test/f1167eabf53759dad015f0abb813a451.jpg', 'test/56e9e806e409775f6d292b66b8855b1e.jpg', 'test/534c23db9b723108381515a30c3ccb6f.jpg', 'test/581b48f1991aa16b4a365716fd4f03ff.jpg', 'test/8217c57f3ce8505a6a262a0583720f13.jpg', 'test/e806fbb5ca4dd3a094f7819bd810cc65.jpg', 'test/3006a0d7c9e93709001323cccda8998c.jpg', 'test/3510f5450c79d0ba4083a1b92195fd80.jpg', 'test/341bd8a802798866f6fc1d13bfe53a34.jpg', 'test/a4086a730b6c5011be6eee3bb3b92463.jpg', 'test/cd20118a162237be1423e800a6e5094e.jpg', 'test/ff1ed16edf355507ee740a67a6391d48.jpg', 'test/12c3287c880cb83dfbc9cbce3d2952be.jpg', 'test/e2a9a7580a1424bc6531b2b7375338db.jpg', 'test/4f7ec53fb020dfd90ac36227ab8233dc.jpg', 'test/66d14166c9c17b9915c8b8bd515c04a3.jpg', 'test/2046b1decc5a575e3a48b42c88adcd62.jpg', 'test/831ef824af939f9754e3593638933b64.jpg', 'test/03a6a4c713d657d53a804ebe1fb2b02c.jpg', 'test/c0d45b04b7b427c973c71ad23b6a77f4.jpg', 'test/7261882b948e7bd67aa9bc550bf02b18.jpg', 'test/0fe91bc1fe542f04aaf9a010ef37c2b6.jpg', 'test/699dcd6bebbdc49511b62dfc6facc779.jpg', 'test/2f8ea7b3242838538dba2a258b3a24fe.jpg', 'test/1509e27988119ea9293c2df2fc1b4b45.jpg', 'test/6548529f17b333f7db091b2f181a64c6.jpg', 'test/193f80c24606fdca6179eff987fdab9b.jpg', 'test/3feace6790ba6eea2aef34f198e43025.jpg', 'test/37d4c66da9bd8843fa926df8c62ae26d.jpg', 'test/48b28d4c1e91b59599d38edb646b9d0a.jpg', 'test/f7b0596d6f3a5fe9006f04de9cf4ab0f.jpg', 'test/70cc4624a1eb9b0f0587045819143b62.jpg', 'test/f13011a399f175d88c17d2bd1785625e.jpg', 'test/e0806e5049519130d459dd7bd640a092.jpg', 'test/ac606d827479c6635a287e7af1b7d434.jpg', 'test/84e3a6a1d53e886d97f65411489969f0.jpg', 'test/af3bb35fbb65c50b2e707ff686f98f9d.jpg', 'test/768f4beef760032a8808c6a84ac03d77.jpg', 'test/27ccf0e035abc33fb6a1e8bdf23c5f86.jpg', 'test/3dd28f8e10a898adef51f60755f87091.jpg', 'test/4afd081346193226bab3dc456d80bd3e.jpg', 'test/e85291fc6ba44e39defc7769fa020646.jpg', 'test/dcbe4226672aa4af80c1e52a9bb78268.jpg', 'test/9ec7ae3455863d4df0a46f4cf597a574.jpg', 'test/34394cdd71e596d6e80f565e98201cf8.jpg', 'test/a139581faa6b04f7d4c0e87107e33a01.jpg', 'test/d5c2ce713cfdb56cfbb9aac676aabbab.jpg', 'test/1cf32e9b62b2f1a60a5d009dd57cfe5e.jpg', 'test/798219c15b8a5ba54fa5d09772e9e1ea.jpg', 'test/967898f6705e9c4dd97ec7c8f8b1956e.jpg', 'test/0dd0c324a6f4a599756b3b750165c41a.jpg', 'test/2072d74918f4fe253aaa75388822d81b.jpg', 'test/7d9da7c2bba40fde7997ce09bd2737dc.jpg', 'test/8d18204baf2bb27dc39b00aa763c784d.jpg', 'test/f51f6aeea8a23b6bd62728fde8f04ad8.jpg', 'test/7dde52cb616a94fbadd8b077c8e8d920.jpg', 'test/4969b10897e61fd900c75460de04d6ed.jpg', 'test/9c4b7039ae06959859cb1369d6450079.jpg', 'test/b65bf33d0e0f70e3fb54e6868d800842.jpg', 'test/3968abbce18a685b3e5089dc6e212f12.jpg', 'test/b6198ed26acdf1a18797f6f0403217cb.jpg', 'test/f3ea1d71874433a4fe775deb9e95923a.jpg', 'test/0c84d273699cada291a635c6edd33390.jpg', 'test/11a126ba3ccaed35f95547b5f787ea61.jpg', 'test/04d36eed15fe648c54a88e0b5c49deb2.jpg', 'test/c7f10024f9092537b1601bd02980fb83.jpg', 'test/b1caee92d84ce6c100413a1f5cc32460.jpg', 'test/f8bfe5da20567378b885109a0c1f1483.jpg', 'test/40f82d80552497163082195b42365163.jpg', 'test/bf9a109dd391229fa06b3a34bc1470bf.jpg', 'test/c0871a1b55afad116c7e5bf1d1cd0906.jpg', 'test/f15527e7a063275291e469b4e5db751c.jpg', 'test/5ab0a6516922e1cdb1091f054fbefff0.jpg', 'test/4caa48ba96c55c71aa0edeeb738bc080.jpg', 'test/3a111de3db21bfd37e6a6e0089f794c6.jpg', 'test/01d333d5c288be97bffd76005f559f41.jpg', 'test/1f77317084a554666f37473a8a95d91a.jpg', 'test/b117274991d2dc1ffa0ac863f16f11a2.jpg', 'test/983a02132f38c20bc351b99ed83eca64.jpg', 'test/02b9adaa40397a4977b9646cc6c939dc.jpg', 'test/83a8010c4b5ab0747059400f473ac668.jpg', 'test/ba57c17dae7055ef1c54c479262fee4d.jpg', 'test/2cc021273be838847ed66f9bafc21cca.jpg', 'test/af0a63ceff8e64c65e48ccd7e9500499.jpg', 'test/81fcf88f635727bce89a31142c8a4007.jpg', 'test/180f2e2e8067fe2213130b1fdc469b26.jpg', 'test/17a4665e63f73d0f01089a4e153c33c4.jpg', 'test/a6359b148d774fe2b542e4c1b9369c02.jpg', 'test/6cdff5325cb35cfd44447b9e4f6cb7b4.jpg', 'test/c87b574003ac9568970b70f29702bf85.jpg', 'test/5310f15815c30b6c5b337356b36cb454.jpg', 'test/97a0a4b27e8f12596482e4f6487786cb.jpg', 'test/8dc7ff54ae077a63cd489faa94684709.jpg', 'test/c0b5a7f03d80626d3c13d37ab78544af.jpg', 'test/fa541fc080cdeffb4dd98da99f673a59.jpg', 'test/985ae7fc271ac4a0d131e546c0f95bb6.jpg', 'test/d4b63ba8b6558b29f55bff96af795d09.jpg', 'test/9ec769e34bc902bd9de458103e9347c8.jpg', 'test/62cc5d37bc91403eae2561975c414579.jpg', 'test/6a9316ea62029983934dac25c7cfe48e.jpg', 'test/2a1c9159aa46a15c749c1013e733adc0.jpg', 'test/6715a492eda68acd37e28a54218c2504.jpg', 'test/391ec9ea882a52642e078ca64df2563d.jpg', 'test/02efe659755a4c9d2da69035c43fa5fb.jpg', 'test/e12731c30619c3fa4b0d9d9a76fb9d60.jpg', 'test/5711e271dfb897a1a13d2d94ecada80e.jpg', 'test/223a2071464f05c2ae405762b9ca3af6.jpg', 'test/836aa8b45420e8bd70b9cf2eb4f9e093.jpg', 'test/b52332e896a5a47cc4d2c0dc15af0359.jpg', 'test/74d2b7992b831108009f6aeb36fb9181.jpg', 'test/36edf3ddc4934b2d84cc940d4f6e8c99.jpg', 'test/e246de79e4efd1145698d9c21466bbaf.jpg', 'test/cff15c13208f1b99912a8a5aa7e4b96f.jpg', 'test/cb2c1164402b5dbbb3eac54d3a4dfc49.jpg', 'test/9a2e6ecc4f7bd1578d8c55f8eae0dad7.jpg', 'test/aac5caab05224706d9c24f294a71f247.jpg', 'test/2d7c2ac3fe912d9545ba692490b45d00.jpg', 'test/f57f8ce3fe1d928828e37a9bd78574d9.jpg', 'test/60a1d91ee68cef5501a0d692cf43a7f9.jpg', 'test/b3bdba23a9105fe502fc2b661f215cd8.jpg', 'test/c52405e4e5afb93a6ca775008480a41e.jpg', 'test/cc91dc262bbc0c73241ecec6ed53449a.jpg', 'test/463dc2054f543877c4225543ccc16a4a.jpg', 'test/f6bed54631ef1691d12509f5516ce979.jpg', 'test/fab7c38522b8bb9e71626f6f1a384d8c.jpg', 'test/2e3ccd5230893d0e07e9ecf6d58be3d1.jpg', 'test/09db0bb220cdbbc0adca63e38e64ab38.jpg', 'test/324c9e2d778e15146858832009999fbc.jpg', 'test/4bddac4bf91f5b45dc8104db791deb97.jpg', 'test/4b3f79ad4f44d990cc7456b2d50309e6.jpg', 'test/3c70bfb583de9c18043aa1f33765521e.jpg', 'test/a87389ccf3e82e66fcbab9426d4f50ab.jpg', 'test/d51d2d0962d57067d5ec9415a5af46a1.jpg', 'test/6da8dcfeceb87b99ea1426189512c2de.jpg', 'test/2fa13e03954dee3e1816a5b4ee1bb75b.jpg', 'test/04c7f6600b20b9255b04a76fe6e55023.jpg', 'test/ec363521d5ebd5260944823f86dc5a8c.jpg', 'test/69e9ebfeb9dff1365e790a3c71c484ea.jpg', 'test/9306ca2491832795f90dd0cfe4e54e4a.jpg', 'test/8f87f0bac19b72a9919681fe3d4922e9.jpg', 'test/ba0875164edc17285ffebaaefbfa030f.jpg', 'test/ab3c567523ef87f50bfb41c1308732af.jpg', 'test/b3ce3ccf5096e1c894595bb1f3b467ed.jpg', 'test/b5f8d1f0aaad28634e56139bd630de97.jpg', 'test/64081b6b6635b3a772e3b8252d67ec08.jpg', 'test/6a04011c7f2dd08d455247ccb8ee7ab8.jpg', 'test/bd80f2d9d300a2162291270312312980.jpg', 'test/6d311b0eb375237cf49c7918600019ec.jpg', 'test/0c82ccebd8e7cf9b232fe9b294863c69.jpg', 'test/0a28fe94aa27ebd0fa587c8a474117a1.jpg', 'test/07e4edc428816ffe6b8dd1024bed2782.jpg', 'test/f7ee03c39d8a094c75de991e24e4ea55.jpg', 'test/add5d56a7c6f2691ae9df6e79851d404.jpg', 'test/735325a42aca71ebe25d7e9b7d86fc91.jpg', 'test/218af675b2c2ca9b86f1362c32705930.jpg', 'test/63d381a8b806b56e3c155dd458a66646.jpg', 'test/f5dcef15272a806b4f0824e9199e9dd5.jpg', 'test/e96fd30110107e506de94d81af346238.jpg', 'test/744f9a2330a9a44c500905a4dfdeb377.jpg', 'test/01cb83d33e905e825df41b88dd4ef277.jpg', 'test/2ac416c42469d263085206aa28509a2d.jpg', 'test/e6a544a538088cc3f73b432a2da90134.jpg', 'test/9049b9691e1712142a78812d1b70fc08.jpg', 'test/c60d1576b160e11ec84cd1009e275485.jpg', 'test/667b068c74813ece3880ba1a1253f9bb.jpg', 'test/ffbcda9eb84339cc5be15fd9900596a2.jpg', 'test/d730341f7447906720fbf47286796f7a.jpg', 'test/0467770f34410f3fafd2482342d69f77.jpg', 'test/f6b8af035c42b6836bbf90d0a457bcb4.jpg', 'test/dc2b0a19e725d1a257411433277f4d89.jpg', 'test/7ed71c10cced08b6b069a5b7b5785932.jpg', 'test/d6b0ead1d782826364fe2f6a149ab372.jpg', 'test/388edf10377674a40c25915d64f4f377.jpg', 'test/82d61a26d714398bea3d82e5ace7538a.jpg', 'test/99bd95316f9796c59072e84932ad33f9.jpg', 'test/995839654892fb3ec7b8d98529bd43ba.jpg', 'test/ddf0164ab3a269b179051bdecaea34b0.jpg', 'test/49a13d472605473ef3f9b2e4f638d700.jpg', 'test/94a681f65f37fb3666c07b89d4d7a071.jpg', 'test/528f88ec0b2777c70694d7c776733e56.jpg', 'test/25d0ef34c87dbdf118fb714f0bc3e59b.jpg', 'test/5b0e3a9551edcca11fcf565bb78d8c49.jpg', 'test/beeaa698e9965aee5ec860c59af3faee.jpg', 'test/c67c132d99386fba1e1884a850d1ea98.jpg', 'test/416085f568b12844c1f53173f9343396.jpg', 'test/ffd304c521f43819f3824177fd9efeb0.jpg', 'test/283a2612ccccf684b2796dd8e4a5ba13.jpg', 'test/b2193a53c04ea9192860fece3f4c2d99.jpg', 'test/a408e776f8b93ce22a3542a89218820f.jpg', 'test/992e80ea2cd1549a5f71b04e4430e529.jpg', 'test/606aef954ca30806168d0d08e52a4dbf.jpg', 'test/59fa36da3bd77c415052d8f88ccaa309.jpg', 'test/077b4c62007a362be52711169abfa4fd.jpg', 'test/ea057ca7f831d161d456091bf293e4b1.jpg', 'test/f1f42942df460f38181e12ebce695b5e.jpg', 'test/f09826fc9cb9aa425caae5f8aaaa8bef.jpg', 'test/ae5309aba5975d0829624bdced152bd3.jpg', 'test/e97a63b529b7b274eeb605391366b576.jpg', 'test/dcfd3463e1d23d51b309b0385292870b.jpg', 'test/62f0755b86cceef4244c9bcbce1b68e5.jpg', 'test/68ec9cf5b73b91f6506ed9e44e8260af.jpg', 'test/4f5f35204ad2b401c1d00557a1dec1c3.jpg', 'test/b47d3815322795664fe4b6dbef27b6dc.jpg', 'test/6d1eb0d0f02a3cfabf08e5b84ed54eca.jpg', 'test/1e2dee5f2da505e30bfdfcc7eb89797a.jpg', 'test/2630ca901a4718100cdf780996c13da7.jpg', 'test/6969c077141fec2c23f4b0857056fc9c.jpg', 'test/3a1c97e85aaaf6810c1f5a8c9250a6a7.jpg', 'test/bba293dd06d11a8b7dc78bfca28059be.jpg', 'test/796cc4fe56597d3e8cfc9595ca1454de.jpg', 'test/023c0a9675c4e09e7de76be0fad3d52f.jpg', 'test/bfc8e5fe6c364c4aaec8d053047f0449.jpg', 'test/09ef5442c370eb7eeb08e6796c5ff5b5.jpg', 'test/cc5a5b9075877cdbd4b8466baf984eca.jpg', 'test/89d11c210c761b3a76b8eecc307b5610.jpg', 'test/4645835f6bf0933136a1b1cd0f6bfc76.jpg', 'test/dacf001ddba61650b7cc587b8db2f50e.jpg', 'test/b4e2d6ecbe6598c745494980f97a02bb.jpg', 'test/03a6fb1fa2d7812587004a60ade66fed.jpg', 'test/f1af835a9146d6ec0da8059b3a55c030.jpg', 'test/ab065f522488afe09494c124342957bd.jpg', 'test/7ac0624c677fdd6a38956d720c27b0a2.jpg', 'test/2fdbbd37a896ffa757fedce3c3816aca.jpg', 'test/7155718b5d167587c440f5f0ecccb872.jpg', 'test/38374ec73cff11ea2be55ab8b4c54dac.jpg', 'test/387a2439a7a65ea7ae52a2029339d55d.jpg', 'test/de3fbd6fb5444fcf14390ac90545c2f1.jpg', 'test/b1aeb449e903e417bb1a0cc677912336.jpg', 'test/8a90cb35ebeb872781026fc3e28a3dc5.jpg', 'test/c970c9cf57b8ff9eccea685bfd6f240e.jpg', 'test/b89095325ba8d3d588834e35f65ca99c.jpg', 'test/fdedb2f8f3687f8e51e84236c65b65c3.jpg', 'test/ad57aa30eb969a3a70acc9504a73a82c.jpg', 'test/1638e407075b037a3f024fedaaa0953d.jpg', 'test/5d1e83adfaac47f754f16021615fc8bf.jpg', 'test/207d0a7a27d3e4d9ab33860a18b78383.jpg', 'test/42541eeab49c96ed08d45d209644d72f.jpg', 'test/f863758735a6cc504d4a80477591eaf6.jpg', 'test/93fa4194758960a2fffec91162579467.jpg', 'test/b19a8a426fe7b91c890e33f5622fcced.jpg', 'test/7603a1e5ec7825b354d3d9f2dc0f6059.jpg', 'test/8a6f0c3be55e8f27fe5bc3b45562fc90.jpg', 'test/cff0b4780b519e569f3478550504b02f.jpg', 'test/9f04a42304ebbc558a5cf0c3f46541b3.jpg', 'test/4ead408f81b09e617882bcad28bf7593.jpg', 'test/5b31ecb5b59db8f507a274b00346065d.jpg', 'test/4a692ed4c770d44d6ad825b7f43b31ca.jpg', 'test/b964a6ca60f81c19e84ad0aaa9ed6f88.jpg', 'test/8c5d04891180854184b470daf88efb96.jpg', 'test/401536ed0da2548536a4d27ff1c0a463.jpg', 'test/1119c5511941dd992da0f8f66b34e55c.jpg', 'test/6038406f41bc0e669f4226c5e85dbcd0.jpg', 'test/38ecc3fe3e67ea1b84f57148e9d0a7b6.jpg', 'test/16816a9d4db979b3abc8c92404ab67e3.jpg', 'test/35dacad1732794561c26e1fbf41aae8a.jpg', 'test/bcf559a914a8fa20ebd5375c48edd8cf.jpg', 'test/54b9c175a57ae7c7e6882a7528c621b9.jpg', 'test/e090f0f0ebc83ddf5f649a841493868b.jpg', 'test/f90b4f4adae580c4a2ec4fd9abad05da.jpg', 'test/4338b655b34c0548b089958e1574d7f1.jpg', 'test/00c610a43b661e4fc612d06db96ce258.jpg', 'test/55df5326067d640b519c4378142b7509.jpg', 'test/a62f5e5d7278699eefc195d747d71b7a.jpg', 'test/86ca62033ae44453b422ebac07cc5678.jpg', 'test/cb1ce9f296f8f6674a580209897ee2b6.jpg', 'test/a72f76609d31cdc67067eadcae0c25cc.jpg', 'test/9de87aba130f43ecffe870790873e219.jpg', 'test/fce0949968f07d3aa97fe09c9a8829b5.jpg', 'test/c909aced4dfea056bfdefd302aacdb84.jpg', 'test/fc9f45447f2f2bd82a6072afbddfd78d.jpg', 'test/5f96e33cb76a8432116d5ebdc0ea82cc.jpg', 'test/87023197f17451a7e2a4bff944933f3c.jpg', 'test/2dede0cbedc90b1f8cebd7fa22860536.jpg', 'test/329b1ef3e91e807eb6135475ee947e30.jpg', 'test/e6999e18a8e98f7fc33cf520d26ec521.jpg', 'test/c769a926643b01af05e875ac984fd581.jpg', 'test/12e5137dc606e09c78c9b27a1891ea87.jpg', 'test/80da6ae51731dc301360a3b59e061fa1.jpg', 'test/91d861224055c595b63e569d41426637.jpg', 'test/b62ddfd5351da8588789b51fd8536e03.jpg', 'test/36939316bd5dc74df7e0c33e76074408.jpg', 'test/614ce0f96addee018f3a67a1353b17ef.jpg', 'test/a51d3e5b0a81f025f424fa4e8b107b4d.jpg', 'test/8e78fefe5b7612a131e66a7fe616309a.jpg', 'test/f409b8113b2c2ab861131c4bd1c0b029.jpg', 'test/40f063eb33c657c5acf19d7de03a77f2.jpg', 'test/d9b0c0bc4de8b19e3452fc477ebdf5a6.jpg', 'test/138a5ce524f0ef30818208492eb169e3.jpg', 'test/81826a3ca9365bed0cad9483709b8ede.jpg', 'test/2b560c80aaede000ebb101ffee26bf14.jpg', 'test/51372c1a40ee47e4377de1c2b6a6a250.jpg', 'test/fa85d9951d7996c4c92ce5dc41d87dcd.jpg', 'test/28dd9823c2208e68fd2f93c152e2a627.jpg', 'test/4b2467c1983c45f0805f2b7e3d0ffc39.jpg', 'test/75102525aca966cdf5d1dbaf0a3f8ee7.jpg', 'test/c7232f1365c363c18453cda2063f59a9.jpg', 'test/e78d3997b4e7f4abc1299f81b8e3b2d9.jpg', 'test/74b133bbc2d4ece626394bdec13d702a.jpg', 'test/0e7c2ef54e84c8d021e1c0ea96cad523.jpg', 'test/45668507c4840614dcb05e8b894aa6c8.jpg', 'test/59c8495a3ce67b86d473f57e29078ec1.jpg', 'test/0609652d9cc0aa749ec8995ca35fd370.jpg', 'test/ffb55dbaa32939c109ef42df0668e077.jpg', 'test/70c49ddddd138d434b33d1e2a1331a5d.jpg', 'test/18b7dd028d5537cf5e02885bb18ae82d.jpg', 'test/1432736589ff3278a536203f0725fcba.jpg', 'test/c7de91df0ee7f9e871deefb4de110201.jpg', 'test/70efe451ba9832194a9fb10d577914f9.jpg', 'test/cfff42adc2db5fe6d452d17d13163e87.jpg', 'test/6b7c98326b6a8ab0c0d0210a36f25246.jpg', 'test/fa98e0dd02c4fcc5b5155a1fdaa2cb13.jpg', 'test/8e0d7d2c224de1d5716d7a69d7854d06.jpg', 'test/f20017c781603ca2d286361592b12dc4.jpg', 'test/f5fb580dfd19890f200eed7010cedc3a.jpg', 'test/443245a5bba869e596fb05d2d0eb63e1.jpg', 'test/e24877545b682257ca77ae600df1fe37.jpg', 'test/b79c8019e5558042de2fd1105defec28.jpg', 'test/812b49cbbf51b0088b0a0c5b3f87958d.jpg', 'test/2a6a5308f9d82b7d881cc02e13ebb41a.jpg', 'test/e061b8d24e7b1324a6ac92ae81fdda19.jpg', 'test/6aa7ea7a603a49723643c2fcf923dc1f.jpg', 'test/fa9f99318fc70441c150beb46013e63c.jpg', 'test/8b0bb138f43faaeafd1c52ed79ce0067.jpg', 'test/9b0551f43a078d038a235b928cff6134.jpg', 'test/1bc84bac2727d3f657e923df00a7bfef.jpg', 'test/899205b9082a382bcf11ddffd0799c41.jpg', 'test/2126c54600e6166617024e79e99b98c0.jpg', 'test/81d8b3e2791c6ec14f67b7069874ac60.jpg', 'test/2106ac37944c94f7c1392030bc5160b3.jpg', 'test/c0135fc7aa154a17bfe4f626e9dd88a8.jpg', 'test/e1f7ec4bd372612f53411026aaabf233.jpg', 'test/dd7867245d5c104fffb5afe027e41cd1.jpg', 'test/b7651433f6a59fa4032e0e689714c65b.jpg', 'test/6fdc2563e0d2f4a2bb3dfd173740503d.jpg', 'test/3e28214a2703c23fea7489ef20810dfb.jpg', 'test/e4e57083c3b68e91760ce6f5fcd0a2f9.jpg', 'test/8de2344aa5abe9737fa484afaac5d4c4.jpg', 'test/dd9d222a481e6cbea922a1b601a55a38.jpg', ...]
log_preds, y = learn.TTA(is_test=True) # use test dataset rather than validation dataset
probs = np.mean(np.exp(log_preds),0)
#accuracy_np(probs, y), metrcs.log_loss(y, probs) # This does not make sense since test dataset has no labels
probs.shape # (n_images, n_classes)
(10357, 120)
df = pd.DataFrame(probs)
df.columns = data.classes
df.insert(0, 'id', [o[5:-4] for o in data.test_ds.fnames])
df.head()
id | affenpinscher | afghan_hound | african_hunting_dog | airedale | american_staffordshire_terrier | appenzeller | australian_terrier | basenji | basset | ... | toy_poodle | toy_terrier | vizsla | walker_hound | weimaraner | welsh_springer_spaniel | west_highland_white_terrier | whippet | wire-haired_fox_terrier | yorkshire_terrier | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | ab2520c527e61f197be228208af48191 | 7.957505e-08 | 2.723862e-08 | 2.435847e-08 | 1.173262e-07 | 2.351215e-08 | 8.401931e-06 | 1.372760e-06 | 6.317406e-08 | 3.063393e-08 | ... | 2.080939e-08 | 2.456473e-07 | 2.722122e-07 | 5.030101e-08 | 1.900935e-07 | 6.053991e-07 | 3.839476e-08 | 5.778787e-08 | 1.575098e-07 | 1.075539e-08 |
1 | 8ffc8a83bb9ac7884a9420c97b23940c | 9.668808e-08 | 2.355516e-08 | 2.087995e-07 | 6.298836e-08 | 3.269388e-08 | 2.796247e-07 | 2.439702e-08 | 2.535878e-06 | 1.824919e-06 | ... | 4.051576e-08 | 3.540100e-06 | 2.388073e-07 | 9.832689e-01 | 1.823956e-07 | 2.486797e-08 | 8.325348e-08 | 9.363868e-07 | 2.608415e-07 | 3.851193e-07 |
2 | 9f4bbcd8a5b189514d3098516983621a | 4.214103e-05 | 2.804878e-04 | 4.817631e-05 | 7.178330e-03 | 1.471457e-06 | 1.140446e-05 | 1.950280e-04 | 7.519415e-06 | 1.821058e-06 | ... | 5.793181e-05 | 9.164357e-05 | 1.187949e-04 | 6.772134e-06 | 5.031822e-05 | 4.772470e-05 | 6.114125e-06 | 2.762433e-05 | 5.382648e-04 | 2.682866e-05 |
3 | f77793be1597dd1ea50b22532b38bd23 | 2.568105e-07 | 2.491144e-07 | 7.142457e-07 | 1.466020e-06 | 3.212435e-05 | 8.274229e-08 | 3.600422e-08 | 6.044879e-08 | 1.201969e-07 | ... | 2.627351e-06 | 3.965855e-08 | 1.560448e-06 | 6.965169e-08 | 1.856623e-07 | 1.051336e-07 | 1.763770e-07 | 2.664481e-07 | 3.316928e-08 | 9.700193e-08 |
4 | f719b425410b6eb3e3132702150affd6 | 6.095974e-06 | 2.696717e-06 | 4.131879e-06 | 6.457446e-05 | 1.191631e-03 | 3.560664e-05 | 3.274512e-06 | 2.229157e-06 | 1.317608e-06 | ... | 2.345266e-06 | 1.053057e-05 | 2.322353e-05 | 4.169483e-05 | 1.918868e-05 | 5.647749e-06 | 5.437289e-06 | 5.297930e-06 | 3.867970e-06 | 5.011518e-06 |
5 rows × 121 columns
SUBM = f'{PATH}/subm/'
os.makedirs(SUBM, exist_ok=True)
df.to_csv(f'{SUBM}subm.gz', compression='gzip', index=False)
FileLink(f'{SUBM}subm.gz')
fn = data.val_ds.fnames[0]
fn
'train/000bec180eb18c7604dcecc8fe0dba07.jpg'
Image.open(PATH + fn).resize((150, 150))
# Method 1.
trn_tfms, val_tfms = tfms_from_model(arch, sz)
ds = FilesIndexArrayDataset([fn], np.array([0]), val_tfms, PATH)
dl = DataLoader(ds)
preds = learn.predict_dl(dl)
np.argmax(preds)
19
learn.data.classes[np.argmax(preds)]
'boston_bull'
# Method 2.
trn_tfms, val_tfms = tfms_from_model(arch, sz)
im = val_tfms(open_image(PATH + fn)) # open_image() returns numpy.ndarray
preds = learn.predict_array(im[None])
np.argmax(preds)
19