Cours
TME
- Rendu des TMEs et projets : https://moodle-sciences.upmc.fr/moodle-2018/course/view.php?id=4034
Semaine 1
Pour lire les données MNIST :
import torch from torchvision import datasets, transforms ## une fois le dataset telecharge, mettre download=False ! ## Pour le test, train = False ## transform permet de faire un preprocessing des donnees (ici ?) batch_size=64 nb_digits=10 train_loader = torch.utils.data.DataLoader(datasets.MNIST('../data', train=True, download=True, transform=transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,),(0.3081,))])), batch_size=batch_size, shuffle=True) print(train_loader.dataset.train_data.size())y_onehot = torch.FloatTensor(batch_size, nb_digits)
for i,(data,target) in enumerate(train_loader): print(i,data.size(),data.type(),target.size(), target.type()) # do something... ## Encoding des labels en onehoty_onehot.zero_() y_onehot.scatter_(1, target.view(-1,1), 1)
- Travail à faire (maison):
Lisez l’article suivant : http://ruder.io/optimizing-gradient-descent/. Vous rendrez au TP 4 une page ́ donnant une description intuitive et succinte des différents algorithmes de descente de gradient disponibles et de leur grands principes (i.e batch, sgd, adagrad, adadelta, rmsprop, nag et adam)
Semaine 2
Lien benchmark MNIST : http://www.iro.umontreal.ca/~lisa/twiki/bin/view.cgi/Public/DeepVsShallowComparisonICML2007
Semaine 4
- Highway networks à implémenter
Semaine 6
- Pour ne pas avoir à télécharger tous les modules python (torchtext, nltk, spacy, tensorboard, tensorboardx), dans votre console (python3.5 ou python3.6 selon les versions):
export PYTHONPATH=$PYTHONPATH:/users/Enseignants/baskiotis/.local/lib/python3.5/site-packages
- Pour charger les données avec les word embedding :
import logging import torchtext.datasets as datasets import torchtext.data as data import torchtext import torch.nn as nn
logging.basicConfig()
logger = logging.getLogger(« model »)
logger.setLevel(level=logging.DEBUG)
DATA_DIR="/users/Enseignants/baskiotis/AS" DATASET_DIR="%s/datasets" % DATA_DIR VECTORS_DIR="%s/vectors" % DATA_DIR # text TEXT=data.Field(lower=True,include_lengths=False,batch_first=True) LABEL = data.Field(sequential=False, is_target=True) # make splits for data train, val, test = datasets.sst.SST.splits(TEXT, LABEL,root=DATASET_DIR) # Use the vocabulary wordemb = torchtext.vocab.GloVe("6B", dim=100, cache=VECTORS_DIR) # Build the vocabularies # for labels, we use special_first to False so <unk> is last # (to discard it) TEXT.build_vocab(train, vectors=wordemb) LABEL.build_vocab(train, specials_first=False) train_iter, val_iter, test_iter = data.BucketIterator.splits( (train, val, test), batch_size=10, device=0) nn_embeddings = nn.Embedding.from_pretrained(TEXT.vocab.vectors)
Semaine 7
- Regarder : http://karpathy.github.io/2015/05/21/rnn-effectiveness
- Dataset nom : https://download.pytorch.org/tutorial/data.zip
- Dataset news : as-tp7.tgz
Semaine 8
Semaine 9
Semaine 11 : AE, VAE
- Arithmétique des convolutions : https://arxiv.org/pdf/1603.07285.pdf
- Tuto VAE : https://arxiv.org/pdf/1606.05908.pdf
- Article VAE : https://arxiv.org/pdf/1312.6114.pdf (formule page 5)
- Code pour affichage :
fig, ax = plt.subplots() ax.scatter(range(5), range(5)) for i in range(5): ab = AnnotationBbox(OffsetImage(x[i].squeeze(), zoom=1), (i, i), xycoords='data', frameon=False) ax.add_artist(ab)
Semaine 12 : Dynamic Memory Network
- Dynamic Memory Network : https://arxiv.org/abs/1506.07285
import sys sys.path.insert(0, Path("~piwowarski/.local/lib/python%d.%d/site-packages" % (sys.version_info.major, sys.version_info.minor))) import torchtext import torchtext.datasets as datasets import torchtext.data as ttdata import spacy from pathlib import Path device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") # Répertoires de stockage des données DATA_DIR=Path("/users/Enseignants/piwowarski/torchtextdata") DATASET_DIR=DATA_DIR.joinpath("datasets") VECTORS_DIR=DATA_DIR.joinpath("vectors") wordsemb_dim = 100 wordsemb = torchtext.vocab.GloVe("6B", dim=wordsemb_dim, cache=VECTORS_DIR) TOKENIZER="spacy" TEXT=ttdata.Field(lower=True,include_lengths=False,batch_first=False,tokenize=TOKENIZER) LABEL = ttdata.Field(sequential=False, is_target=True) train, val, test = datasets.babi.BABI20.splits(TEXT, task=1) TEXT.build_vocab(train, vectors=wordsemb) text_wordemb = nn.Embedding.from_pretrained(TEXT.vocab.vectors).to(device) "Vocabulary size: %d words" % len(TEXT.vocab) train.examples[0].story, train.examples[0].query, train.examples[0].answer train_it, val_it, test_it = ttdata.BucketIterator.splits((train, val, test), batch_size=32) batch = next(iter(train_it))