Como dividir um conjunto de dados tensorflow em treinamento, teste e validação em um script Python?
Oct 20 2020
Em um notebook Jupyter com Tensorflow-2.0.0, uma divisão de teste de validação de trem de 80-10-10 foi realizada desta maneira:
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)
No entanto, ao tentar executar o mesmo código localmente, recebo o erro
AttributeError: type object 'Split' has no attribute 'ALL'
Eu vi que posso criar dois conjuntos desta maneira:
splits, info = tfds.load('fashion_mnist', with_info=True, as_supervised=True, split=['train[:80]','test[80:90]'], data_dir=filePath)
mas não sei como posso adicionar um terceiro conjunto.
Respostas
FrancescoBoi Oct 21 2020 at 07:55
tfds.Split.ALL.subsplitou tfds.Split.TRAIN.subsplitaparentemente estão obsoletos e não têm mais suporte.
Alguns dos conjuntos de dados já estão divididos entre trem e teste. Nesse caso, encontrei a seguinte solução (usando, por exemplo, o conjunto de dados fashion 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
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?