【问题标题】:Cannot Split Malaria Dataset using Tensorflow Datasets无法使用 TensorFlow 数据集拆分疟疾数据集
【发布时间】:2019-12-05 12:35:14
【问题描述】:

我正在关注Transfer Learning Tutorial。笔记本使用 Cats and Dogs 数据集成功运行,但是当我将其更改为 malaria 数据集时,它会引发断言错误

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

我尝试手动拆分它

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%:]")

但这会在绘图时引发错误

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

【问题讨论】:

    标签: python-3.x tensorflow tensorflow-datasets


    【解决方案1】:

    我使用以下代码尝试了本教程,并且成功了:

    (raw_train, raw_validation, raw_test), metadata = tfds.load(
    'malaria',
    split=['train[:80%]', 'train[80%:90%]', 'train[90%:]'],
    with_info=True,
    as_supervised=True,)
    

    如果您可以发布您使用的代码,我们可以进行比较。

    【讨论】:

      【解决方案2】:

      @dulo Collins 发布了正确答案。这是他答案的一个小延伸。

      我在进行故障排除时遇到了这篇文章,但我无法实施它的解决方案 - 我不知道是什么导致了问题。幸运的是,我找到了一篇介绍它的文章。此答案是该文章中问题和解决方案的简要概述。

      AssertionError: Unrecognized instruction format: NamedSplit is reported in the TensorFlow official tutorial imdb movie evaluation example

      问题

      由拆分数据的格式引起。重新格式化后错误消失了。

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

      上面的代码来自Stanford's CS231n course 中的Jupyter Notebook on Tensorflow

      错误

      AssertionError:无法识别的指令格式:NamedSplit('train')(tfds.percent[0:80])

      解决方案

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

      【讨论】:

        【解决方案3】:

        你可以使用它。这条简单的线对我有用。

        (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)
        

        【讨论】:

          猜你喜欢
          • 2018-12-10
          • 1970-01-01
          • 2022-01-01
          • 2020-12-29
          • 1970-01-01
          • 2021-09-07
          • 1970-01-01
          • 2020-06-24
          • 1970-01-01
          相关资源
          最近更新 更多