Цель этого хранилища-содержать чистый, читаемый и протестированный код для воспроизведения исследований в области обучения.
Этот проект написан в Python 3.6 и Pytorch и предполагает, что у вас есть графический процессор.
Смотрите эти средние статьи для получения дополнительной информации
Перечислен в requirements.txt . Установите с помощью pip install -r requirements.txt предпочтительно в VirtualENV.
Отредактируйте переменную DATA_PATH в config.py в то место, где вы храните наборы данных Omniglot и Miniimagenet.
После получения данных и запуска сценариев настроек ваша структура папок должна выглядеть как
DATA_PATH/
Omniglot/
images_background/
images_evaluation/
miniImageNet/
images_background/
images_evaluation/
Набор данных OMNIGLOT . Скачать с https://github.com/brendenlake/omniglot/tree/master/python, поместите извлеченные файлы в DATA_PATH/Omniglot_Raw и запустить scripts/prepare_omniglot.py
Набор данных Miniimagenet . Скачать файлы с https://drive.google.com/file/d/0b3irx3uqnobmq1flnxjszudywee/view, место в data/miniImageNet/images и запустить scripts/prepare_mini_imagenet.py
После добавления наборов данных запустите pytest в корневом каталоге для запуска всех тестов.
File experiments/experiments.txt содержит гиперпараметры, которые я использовал для получения результатов, приведенных ниже.

Запустите experiments/proto_nets.py , чтобы воспроизвести результаты прототпитических сетей для нескольких выстрелов (Snell et al).
Аргументы
| Омниглат | ||||
|---|---|---|---|---|
| k-way | 5 | 5 | 20 | 20 |
| n-shot | 1 | 5 | 1 | 5 |
| Опубликовано | 98.8 | 99,7 | 96.0 | 98.9 |
| Это репо | 98.2 | 99,4 | 95,8 | 98.6 |
| Miniimagenet | ||
|---|---|---|
| k-way | 5 | 5 |
| n-shot | 1 | 5 |
| Опубликовано | 49,4 | 68.2 |
| Это репо | 48.0 | 66.2 |
Дифференцируемый классификатор ближайших соседей.

Запустите experiments/matching_nets.py , чтобы воспроизводить результаты сопоставления сетей для одного выстрела (Vinyanals et al).
Аргументы
У меня были проблемы с воспроизведением результатов этой статьи, используя метрику расстояния косинуса, так как я обнаружил, что сходится медленная, а конечная производительность зависит от случайной инициализации. Однако я смог воспроизвести (и немного превышать) результаты этой статьи, используя метрику расстояния L2.
| Омниглат | ||||
|---|---|---|---|---|
| k-way | 5 | 5 | 20 | 20 |
| n-shot | 1 | 5 | 1 | 5 |
| Опубликовано (косинус) | 98.1 | 98.9 | 93,8 | 98.5 |
| Это репо (косинус) | 92.0 | 93.2 | 75,6 | 77.8 |
| Это репо (L2) | 98.3 | 99,8 | 92,8 | 97.8 |
| Miniimagenet | ||
|---|---|---|
| k-way | 5 | 5 |
| n-shot | 1 | 5 |
| Опубликовано (Cosine, FCE) | 44.2 | 57.0 |
| Это репо (косинус, FCE) | 42,8 | 53,6 |
| Это репо (L2) | 46.0 | 58.4 |

Я использовал максимальный объединение вместо того, чтобы усердные свертки, чтобы соответствовать другим документам. Эксперименты Miniimagenet с использованием 2 -го порядка Maml потребовалось мне более дня.
Запустите experiments/maml.py , чтобы воспроизвести результаты, связанные с моделью-алтаиновым обучением (Finn et al).
Аргументы
NB: для Maml N, K и Q фиксируются между поездом и тестом. Возможно, вам придется отрегулировать мета-размеров, чтобы соответствовать вашему графическому процессору. 2 -й заказ Maml использует гораздо больше памяти.
| Омниглат | ||||
|---|---|---|---|---|
| k-way | 5 | 5 | 20 | 20 |
| n-shot | 1 | 5 | 1 | 5 |
| Опубликовано | 98.7 | 99,9 | 95,8 | 98.9 |
| Это репо (1) | 95,5 | 99,5 | 92.2 | 97.7 |
| Это репо (2) | 98.1 | 99,8 | 91.6 | 95,9 |
| Miniimagenet | ||
|---|---|---|
| k-way | 5 | 5 |
| n-shot | 1 | 5 |
| Опубликовано | 48.1 | 63.2 |
| Это репо (1) | 46.4 | 63,3 |
| Это репо (2) | 47.5 | 64,7 |
Номер в скобках указывает 1 -й или 2 -й заказ MAML.