Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Generic Multitask implementation with Fastai 1.0
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.0.52\n"
]
}
],
"source": [
"%load_ext autoreload\n",
"%autoreload 2\n",
"%matplotlib inline\n",
"\n",
"from pathlib import Path\n",
"from fastai.vision import *\n",
"from fastai import __version__ as fastai_version\n",
"print(fastai_version)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Context\n",
"\n",
"This Notebook is a work-in-progress effort to implement multitask learning in fastai. To goal is to be able to fit several categorization or regression problems with a single neural network.\n",
"\n",
"To illustrate our work, we are going to use the UTKFace dataset (https://susanqq.github.io/UTKFace/), and predict the age (regression), gender (classification) and ethnicity (classification) with a single model."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Dataset Preparation\n",
"We download a sample dataset from Kaggle:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"^C\r\n",
"User cancelled operation\r\n"
]
}
],
"source": [
"! kaggle datasets download jangedoo/utkface-new -p data/utkface"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Archive: data/utkface/utkface-new.zip\n",
"replace data/utkface/crop_part1/100_1_0_20170110183726390.jpg.chip.jpg? [y]es, [n]o, [A]ll, [N]one, [r]ename: ^C\n"
]
}
],
"source": [
"!unzip data/utkface/utkface-new.zip -d data/utkface"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"pdata = Path('data/utkface/crop_part1/')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"filenames = [os.path.basename(f) for f in list(pdata.glob('*'))]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# Remove badly encoded files from list:\n",
"filenames.remove('61_3_20170109150557335.jpg.chip.jpg')\n",
"filenames.remove('61_1_20170109142408075.jpg.chip.jpg')"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"enc_age, enc_gender, enc_ethnicity = zip(*[f.split('_')[:3] for f in filenames])"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"age = [float(o) for o in enc_age]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"gender_map = {'0': 'male', '1': 'female'}\n",
"gender = [gender_map[o] for o in enc_gender]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"ethnicity_map = {'0': 'White', '1': 'Black', '2': 'Asian', '3': 'Indian', '4': 'Others'}\n",
"ethnicity = [ethnicity_map[o] for o in enc_ethnicity]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"df = pd.DataFrame(list(zip(filenames, age, gender, ethnicity)), columns=['filename', 'age', 'gender', 'ethnicity'])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"np.random.seed(42)\n",
"np.random.random()\n",
"df['is_valid'] = df.apply(lambda row: np.random.random() < 0.2, axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>filename</th>\n",
" <th>age</th>\n",
" <th>gender</th>\n",
" <th>ethnicity</th>\n",
" <th>is_valid</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>62_0_3_20170109015431667.jpg.chip.jpg</td>\n",
" <td>62.0</td>\n",
" <td>male</td>\n",
" <td>Indian</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>18_1_0_20170109214216731.jpg.chip.jpg</td>\n",
" <td>18.0</td>\n",
" <td>female</td>\n",
" <td>White</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>13_0_0_20170110224337867.jpg.chip.jpg</td>\n",
" <td>13.0</td>\n",
" <td>male</td>\n",
" <td>White</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>56_1_0_20170109220607828.jpg.chip.jpg</td>\n",
" <td>56.0</td>\n",
" <td>female</td>\n",
" <td>White</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>29_0_0_20170104184656046.jpg.chip.jpg</td>\n",
" <td>29.0</td>\n",
" <td>male</td>\n",
" <td>White</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" filename age gender ethnicity is_valid\n",
"0 62_0_3_20170109015431667.jpg.chip.jpg 62.0 male Indian False\n",
"1 18_1_0_20170109214216731.jpg.chip.jpg 18.0 female White False\n",
"2 13_0_0_20170110224337867.jpg.chip.jpg 13.0 male White False\n",
"3 56_1_0_20170109220607828.jpg.chip.jpg 56.0 female White True\n",
"4 29_0_0_20170104184656046.jpg.chip.jpg 29.0 male White True"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/jpeg": "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\n",
"image/png": "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\n",
"text/plain": [
"Image (3, 200, 200)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"open_image(pdata / df.iloc[1].filename)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We introduce 10% of NaN / \"NA\" values in the target labels to demonstrate how to missing data. Indeed, we want our model to be robust to datasets that are not fully annotated."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"df['age'] = df.apply(lambda row: np.NaN if np.random.random() < 0.1 else row['age'], axis=1)\n",
"df['gender'] = df.apply(lambda row: 'NA' if np.random.random() < 0.1 else row['gender'], axis=1)\n",
"df['ethnicity'] = df.apply(lambda row: 'NA' if np.random.random() < 0.1 else row['ethnicity'], axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>filename</th>\n",
" <th>age</th>\n",
" <th>gender</th>\n",
" <th>ethnicity</th>\n",
" <th>is_valid</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>62_0_3_20170109015431667.jpg.chip.jpg</td>\n",
" <td>62.0</td>\n",
" <td>NA</td>\n",
" <td>Indian</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>18_1_0_20170109214216731.jpg.chip.jpg</td>\n",
" <td>18.0</td>\n",
" <td>female</td>\n",
" <td>White</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>13_0_0_20170110224337867.jpg.chip.jpg</td>\n",
" <td>13.0</td>\n",
" <td>male</td>\n",
" <td>White</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>56_1_0_20170109220607828.jpg.chip.jpg</td>\n",
" <td>56.0</td>\n",
" <td>female</td>\n",
" <td>White</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>29_0_0_20170104184656046.jpg.chip.jpg</td>\n",
" <td>29.0</td>\n",
" <td>male</td>\n",
" <td>White</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>33_1_0_20170104165723873.jpg.chip.jpg</td>\n",
" <td>33.0</td>\n",
" <td>female</td>\n",
" <td>White</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>47_0_0_20170111181750442.jpg.chip.jpg</td>\n",
" <td>47.0</td>\n",
" <td>male</td>\n",
" <td>White</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>20_1_0_20170103163040136.jpg.chip.jpg</td>\n",
" <td>NaN</td>\n",
" <td>female</td>\n",
" <td>NA</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>7_1_4_20161223232252196.jpg.chip.jpg</td>\n",
" <td>7.0</td>\n",
" <td>female</td>\n",
" <td>NA</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>32_1_0_20170104185215238.jpg.chip.jpg</td>\n",
" <td>32.0</td>\n",
" <td>female</td>\n",
" <td>White</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" filename age gender ethnicity is_valid\n",
"0 62_0_3_20170109015431667.jpg.chip.jpg 62.0 NA Indian False\n",
"1 18_1_0_20170109214216731.jpg.chip.jpg 18.0 female White False\n",
"2 13_0_0_20170110224337867.jpg.chip.jpg 13.0 male White False\n",
"3 56_1_0_20170109220607828.jpg.chip.jpg 56.0 female White True\n",
"4 29_0_0_20170104184656046.jpg.chip.jpg 29.0 male White True\n",
"5 33_1_0_20170104165723873.jpg.chip.jpg 33.0 female White True\n",
"6 47_0_0_20170111181750442.jpg.chip.jpg 47.0 male White False\n",
"7 20_1_0_20170103163040136.jpg.chip.jpg NaN female NA False\n",
"8 7_1_4_20161223232252196.jpg.chip.jpg 7.0 female NA False\n",
"9 32_1_0_20170104185215238.jpg.chip.jpg 32.0 female White True"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Multitask DataBunch\n",
"\n",
"To set up our multitask databunch, we are going to define several label lists for each sub-task, then combine them into a custom multitask LabelLists instance.\n",
"\n",
"1. First let's subclass ImageList to prevent it from throwing an error on NaN labels."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"from fastai.data_block import _maybe_squeeze\n",
"class NanLabelImageList(ImageList):\n",
" def label_from_df(self, cols:IntsOrStrs=1, label_cls:Callable=None, **kwargs):\n",
" \"Label `self.items` from the values in `cols` in `self.inner_df`.\"\n",
" labels = self.inner_df.iloc[:,df_names_to_idx(cols, self.inner_df)]\n",
" # Commented line:##\n",
" #assert labels.isna().sum().sum() == 0, f\"You have NaN values in column(s) {cols} of your dataframe, please fix it.\"\n",
" ####################\n",
" if is_listy(cols) and len(cols) > 1 and (label_cls is None or label_cls == MultiCategoryList):\n",
" new_kwargs,label_cls = dict(one_hot=True, classes= cols),MultiCategoryList\n",
" kwargs = {**new_kwargs, **kwargs}\n",
" return self._label_from_list(_maybe_squeeze(labels), label_cls=label_cls, **kwargs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"2. We also need to make sure that we normalize float values in regression sub tasks. Indeed, otherwise the sub-losses would take very large values compared to cross-entropy, which would make the multitask model hard and long to fit. To do that, we define a `NormalizationProcessor`:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"class NormalizationProcessor(PreProcessor):\n",
" \"`PreProcessor` that computes mean and std from `ds.items` and normalizes them.\"\n",
" def __init__(self, ds:ItemList): \n",
" self.compute_stats(ds)\n",
" \n",
" self.state_attrs = ['mean', 'std']\n",
" \n",
" def compute_stats(self, ds:ItemList):\n",
" items = ds.items[~np.isnan(ds.items)]\n",
" self.mean = items.mean()\n",
" self.std = items.std()\n",
"\n",
" def process_one(self,item):\n",
" if isinstance(item, EmptyLabel): return item\n",
" return (item - self.mean) / self.std\n",
" \n",
" def unprocess_one(self, item):\n",
" if isinstance(item, EmptyLabel): return item\n",
" return item * self.std + self.mean\n",
" \n",
" def process(self, ds):\n",
" if self.mean is None: \n",
" self.compute_stats(ds)\n",
" ds.mean = self.mean\n",
" ds.std = self.std\n",
" super().process(ds)\n",
"\n",
" def __getstate__(self): \n",
" return {n:getattr(self,n) for n in self.state_attrs}\n",
"\n",
" def __setstate__(self, state:dict):\n",
" self.state_attrs = state.keys()\n",
" for n in state.keys():\n",
" setattr(self, n, state[n])\n",
" \n",
"class NormalizedFloatList(FloatList):\n",
" _processor = NormalizationProcessor"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3. Prepare `labelLists` for age gender and ethnicity as usual. Make sure the split is the same for all of them."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"gender_labels = (\n",
" NanLabelImageList.from_df(df, path=pdata, cols='filename')\n",
" .split_from_df(col='is_valid')\n",
" .label_from_df(cols='gender')\n",
")\n",
"ethnicity_labels = (\n",
" NanLabelImageList.from_df(df, path=pdata, cols='filename')\n",
" .split_from_df(col='is_valid')\n",
" .label_from_df(cols='ethnicity')\n",
")\n",
"age_labels = (\n",
" NanLabelImageList.from_df(df, path=pdata, cols='filename')\n",
" .split_from_df(col='is_valid')\n",
" .label_from_df(cols='age',label_cls=NormalizedFloatList)\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"4. We store them in a dict for convenience, the key will be a printable string we will use to describe each task. We also define an optional metric function that we will later use."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"multitask_project = {\n",
" 'gender': {\n",
" 'label_lists': gender_labels,\n",
" 'metric': accuracy\n",
" },\n",
" 'ethnicity': {\n",
" 'label_lists': ethnicity_labels,\n",
" 'metric': accuracy\n",
" },\n",
" 'age': {\n",
" 'label_lists': age_labels,\n",
" 'metric': rmse,\n",
" }\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"5. We now define our `MultitaskItem` and `MultitaskItemList` classes which are respectively sub-classes of `MixedItem` and `MixedItemList`. The goal is:\n",
" * define `MultitaskItems` to be a list of other items (`FloatItem` or `Category`), so that inputs are converted to a tensor concatenating the encodings of sub-inputs.\n",
" * given a predicted tensor, split it given the lengths of each task, analyze and reconstruct the predicted output. Reconstructing should also de-normalize data.\n",
" * adapt string formatting (in particular form Multitask items, serialize them as \"key:value|key2:value2\")"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"# Monkey patch FloatItem with a better default string formatting.\n",
"def float_str(self):\n",
" return \"{:.4g}\".format(self.obj)\n",
"FloatItem.__str__ = float_str\n",
"\n",
"class MultitaskItem(MixedItem): \n",
" def __init__(self, *args, mt_names=None, **kwargs):\n",
" super().__init__(*args,**kwargs)\n",
" self.mt_names = mt_names\n",
" \n",
" def __repr__(self):\n",
" return '|'.join([f'{self.mt_names[i]}:{item}' for i, item in enumerate(self.obj)])\n",
"\n",
"class MultitaskItemList(MixedItemList):\n",
" \n",
" def __init__(self, *args, mt_names=None, **kwargs):\n",
" super().__init__(*args,**kwargs)\n",
" self.mt_classes = [getattr(il, 'classes', None) for il in self.item_lists]\n",
" self.mt_types = [type(il) for il in self.item_lists]\n",
" self.mt_lengths = [len(i) if i else 1 for i in self.mt_classes]\n",
" self.mt_names = mt_names\n",
" \n",
" def get(self, i):\n",
" return MultitaskItem([il.get(i) for il in self.item_lists], mt_names=self.mt_names)\n",
" \n",
" def reconstruct(self, t_list):\n",
" items = []\n",
" t_list = self.unprocess_one(t_list)\n",
" for i,t in enumerate(t_list):\n",
" if self.mt_types[i] == CategoryList:\n",
" items.append(Category(t, self.mt_classes[i][t]))\n",
" elif issubclass(self.mt_types[i], FloatList):\n",
" items.append(FloatItem(t))\n",
" return MultitaskItem(items, mt_names=self.mt_names)\n",
" \n",
" def analyze_pred(self, pred, thresh:float=0.5): \n",
" predictions = []\n",
" start = 0\n",
" for length, mt_type in zip(self.mt_lengths, self.mt_types):\n",
" if mt_type == CategoryList:\n",
" predictions.append(pred[start: start + length].argmax())\n",
" elif issubclass(mt_type, FloatList):\n",
" predictions.append(pred[start: start + length][0])\n",
" start += length\n",
" return predictions\n",
"\n",
" def unprocess_one(self, item, processor=None):\n",
" if processor is not None: self.processor = processor\n",
" self.processor = listify(self.processor)\n",
" for p in self.processor: \n",
" item = _processor_unprocess_one(p, item)\n",
" return item\n",
"\n",
"def _processor_unprocess_one(self, item:Any): # TODO: global function to avoid subclassing MixedProcessor. To be cleaned.\n",
" res = []\n",
" for procs, i in zip(self.procs, item):\n",
" for p in procs: \n",
" if hasattr(p, 'unprocess_one'):\n",
" i = p.unprocess_one(i)\n",
" res.append(i)\n",
" return res"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"6. We also need to sub-class `LabelList` and `LabelLists` to store and load all necessary state, on order to later be able to export and load the model (to run it in production for example)."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"class MultitaskLabelList(LabelList):\n",
" def get_state(self, **kwargs):\n",
" kwargs.update({\n",
" 'mt_classes': self.mt_classes,\n",
" 'mt_types': self.mt_types,\n",
" 'mt_lengths': self.mt_lengths,\n",
" 'mt_names': self.mt_names\n",
" })\n",
" return super().get_state(**kwargs)\n",
"\n",
" @classmethod\n",
" def load_state(cls, path:PathOrStr, state:dict) -> 'LabelList':\n",
" res = super().load_state(path, state)\n",
" res.mt_classes = state['mt_classes']\n",
" res.mt_types = state['mt_types']\n",
" res.mt_lengths = state['mt_lengths']\n",
" res.mt_names = state['mt_names']\n",
" return res\n",
" \n",
"class MultitaskLabelLists(LabelLists):\n",
" @classmethod\n",
" def load_state(cls, path:PathOrStr, state:dict):\n",
" path = Path(path)\n",
" train_ds = MultitaskLabelList.load_state(path, state)\n",
" valid_ds = MultitaskLabelList.load_state(path, state)\n",
" return MultitaskLabelLists(path, train=train_ds, valid=valid_ds)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"7. Now we define an util function that constructs the `MultitaskItemLists` given our predefined label lists, and groups them in a final `MultitaskLabelLists` instance."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"def label_from_mt_project(self, multitask_project):\n",
" mt_train_list = MultitaskItemList(\n",
" [task['label_lists'].train.y for task in multitask_project.values()], \n",
" mt_names=list(multitask_project.keys(),\n",
" )\n",
" )\n",
" mt_valid_list = MultitaskItemList(\n",
" [task['label_lists'].valid.y for task in multitask_project.values()], \n",
" mt_names=list(multitask_project.keys())\n",
" )\n",
" \n",
" self.train = self.train._label_list(x=self.train, y=mt_train_list)\n",
" self.valid = self.valid._label_list(x=self.valid, y=mt_valid_list)\n",
" self.__class__ = MultitaskLabelLists # TODO: Class morphing should be avoided, to be improved.\n",
" self.train.__class__ = MultitaskLabelList\n",
" self.valid.__class__ = MultitaskLabelList\n",
" return self\n",
"\n",
"ItemLists.label_from_mt_project = label_from_mt_project\n",
"image_lists = ImageList.from_df(df, path=pdata, cols='filename').split_from_df(col='is_valid')"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"mt_label_lists = image_lists.label_from_mt_project(multitask_project)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"MultitaskLabelLists;\n",
"\n",
"Train: MultitaskLabelList (7780 items)\n",
"x: ImageList\n",
"Image (3, 200, 200),Image (3, 200, 200),Image (3, 200, 200),Image (3, 200, 200),Image (3, 200, 200)\n",
"y: MultitaskItemList\n",
"gender:NA|ethnicity:Indian|age:1.325,gender:female|ethnicity:White|age:-0.4539,gender:male|ethnicity:White|age:-0.656,gender:male|ethnicity:White|age:0.7185,gender:female|ethnicity:NA|age:nan\n",
"Path: data/utkface/crop_part1;\n",
"\n",
"Valid: MultitaskLabelList (1998 items)\n",
"x: ImageList\n",
"Image (3, 200, 200),Image (3, 200, 200),Image (3, 200, 200),Image (3, 200, 200),Image (3, 200, 200)\n",
"y: MultitaskItemList\n",
"gender:female|ethnicity:White|age:1.082,gender:male|ethnicity:White|age:-0.009168,gender:female|ethnicity:White|age:0.1525,gender:female|ethnicity:White|age:0.1121,gender:male|ethnicity:Asian|age:nan\n",
"Path: data/utkface/crop_part1;\n",
"\n",
"Test: None"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mt_label_lists"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"8. Continue by creating your databunch as usual, and display a sample batch to sanity check our result"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.