Comment diviser un ensemble de données Tensorflow en train, test et validation dans un script Python?
Oct 20 2020
Sur un ordinateur portable Jupyter avec Tensorflow-2.0.0, un fractionnement de test de validation de train de 80-10-10 a été effectué de cette manière:
import tensorflow_datasets as tfds
from os import getcwd
splits = tfds.Split.ALL.subsplit(weighted=(80, 10, 10))
filePath = f"{getcwd()}/../tmp2/"
splits, info = tfds.load('fashion_mnist', with_info=True, as_supervised=True, split=splits, data_dir=filePath)
Cependant, en essayant d'exécuter le même code localement, j'obtiens l'erreur
AttributeError: type object 'Split' has no attribute 'ALL'
J'ai vu que je peux créer deux ensembles de cette manière:
splits, info = tfds.load('fashion_mnist', with_info=True, as_supervised=True, split=['train[:80]','test[80:90]'], data_dir=filePath)
mais je ne sais pas comment je peux ajouter un troisième ensemble.
Réponses
FrancescoBoi Oct 21 2020 at 07:55
tfds.Split.ALL.subsplitou tfds.Split.TRAIN.subsplitsont apparemment obsolètes et ne sont plus pris en charge.
Certains des ensembles de données sont déjà répartis entre le train et le test. Dans ce cas, j'ai trouvé la solution suivante (en utilisant par exemple le jeu de données mode MNIST):
splits, info = tfds.load('fashion_mnist', with_info=True, as_supervised=True,
split=['train+test[:80]','train+test[80:90]', 'train+test[90:]'],
data_dir=filePath)
(train_examples, validation_examples, test_examples) = splits