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
@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.
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))
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)