web-dev-qa-db-fra.com

Impossible de fractionner le jeu de données sur le paludisme à l'aide des jeux de données Tensorflow

Je suis le Tutoriel d'apprentissage de transfert . Le bloc-notes s'exécute avec succès à l'aide du jeu de données Cats and Dogs, mais lorsque je le change en jeu de données sur le paludisme, il génère une erreur d'assertion

AssertionError: Unrecognized instruction format: NamedSplit('train')(tfds.percent[0:80])

J'ai essayé de le séparer manuellement

raw_train = tfds.load("malaria", split="train[:80%]")
raw_test = tfds.load("malaria", split="train[81%:90%]")
raw_validation = tfds.load("malaria", split="train[91%:]")

Mais cela génère une erreur lors du traçage

image, label = raw_train.take(2)
print(b)
plt.figure()
plt.imshow(a)
TypeError: Image data of dtype object cannot be converted to float
4
Navan Chauhan

@dulo Collins a publié la bonne réponse. Ceci est une petite extension de sa réponse.

J'ai rencontré ce message lors du dépannage, mais je n'ai pas pu implémenter sa solution - je ne savais pas ce qui causait le problème. Heureusement, j'ai trouvé un article qui l'a parcouru. Cette réponse est un bref aperçu du problème et de la solution de cet article.

AssertionError: format d'instruction non reconnu: NamedSplit est signalé dans l'exemple d'évaluation du film imdb du didacticiel officiel de TensorFlow

Problème :

Causé par le format des données divisées. L'erreur a disparu après l'avoir reformatée.

SPLIT_WEIGHTS = (8, 1, 1)

splits = tfds.Split.TRAIN.subsplit(weighted=SPLIT_WEIGHTS)

(raw_train, raw_validation, raw_test), metadata = tfds.load('cats_vs_dogs', split=list(splits), with_info=True, as_supervised=True)

get_label_name = metadata.features['label'].int2str

for image, label in raw_train.take(2):
  plt.figure()
  plt.imshow(image)
  plt.title(get_label_name(label))

Le code ci-dessus provient d'un Jupyter Notebook on Tensorflow in cours CS231n de Stanford .

Erreur :

AssertionError: Format d'instruction non reconnu: NamedSplit ('train') (tfds.percent [0:80])

Solution :

splits = ("train[:80]", "train[:10]", "train[:10]")

(raw_train, raw_validation, raw_test), metadata = tfds.load('cats_vs_dogs', split=splits, with_info=True, as_supervised=True)

get_label_name = metadata.features['label'].int2str

for image, label in raw_train.take(2):
  plt.figure()
  plt.imshow(image)
  plt.title(get_label_name(label))
0
DavidLittlefield

Vous pouvez l'utiliser. Cette ligne simple fonctionne pour moi.

(cat_train, cat_valid, cat_test), info = tfds.load('cats_vs_dogs', split=['train[:80%]', 'train[80%:90%]', 'train[90%:]'], with_info=True, as_supervised=True)
0
Tanmoy Datta