当前位置: 首页 > 知识库问答 >
问题:

TypeError:listdir:path应该是string、bytes、os.pathlike或None,而不是DirectoryIterator

吴星汉
2023-03-14

我是机器学习的初学者,目前正在尝试将VGG网络应用于我的神经网络

from tensorflow.keras.preprocessing.image import ImageDataGenerator
#Training Set
train_set = train_datagen.flow_from_directory('train')

#Training Set
valid_set = train_datagen.flow_from_directory('test')


train_size, validation_size, test_size = 200, 100, 100
img_width, img_height = 224, 224  # Default input size for VGG16

# Extract features
import os, shutil


datagen = ImageDataGenerator(rescale=1./255)
batch_size = 32

def extract_features(directory, sample_count):
    features = np.zeros(shape=(sample_count, 7, 7, 512))  # Must be equal to the output of the convolutional base
    labels = np.zeros(shape=(sample_count))
    # Preprocess data
    generator = datagen.flow_from_directory(directory,
                                            target_size=(img_width,img_height),
                                            batch_size = batch_size,
                                            class_mode='categorical')
    # Pass data through convolutional base
    i = 0
    for inputs_batch, labels_batch in generator:
        features_batch = conv_base.predict(inputs_batch)
        features[i * batch_size: (i + 1) * batch_size] = features_batch
        labels[i * batch_size: (i + 1) * batch_size] = labels_batch
        i += 1
        if i * batch_size >= sample_count:
            break
    return features, labels

train_features, train_labels = extract_features(train_set, train_size)  # Agree with our small dataset size
validation_features, validation_labels = extract_features(validation_dir, validation_size)
test_features, test_labels = extract_features(test_dir, test_size)

这是发生的错误

发现714幅图像,分属10类。发现100个图像,属于

到10个班。-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在extract_features(目录,sample_count)24 target_size=(img_width,img_height),25 batch_size=batch_size,-->26 class_mode='categorical')27#通过卷积基28 i=0

~\anaconda3\envs\tensorflow_cpu\lib\site-packages\keras_preprocessing\image\image_data_generator.py in flow_from_directory(self,directory,target_size,color_mode,classes,class_mode,batch_size,shuffle,seed,save_to_dir,save_prefix,save_format,follow_links,subset,interpolation)538

~\anaconda3\envs\tensorflow_cpu\lib\site-packages\keras_preprocessing\image\directory_iterator.py init(self,directory,image_data_generator,target_size,color_mode,classes,class_mode,batch_size,shuffle,seed,data_format,save_to_dir,save_prefix,save_format,follow_links,suffle,seed,

TypeError:listdir:path应该是string、bytes、os.pathlike或None,而不是DirectoryIterator

共有1个答案

章丰茂
2023-03-14

您正在将一个数据生成器传递给另一个数据生成器,如下所示:

generator = datagen.flow_from_directory(directory,
                                        target_size=(img_width,img_height),
                                        batch_size = batch_size,
                                        class_mode='categorical')

第一个参数directory应该是一个目录,而不是一个数据生成器,它应该类似于:'path/to/my/train_set/'。我想,在你的情况下,这只是“火车”,因为你把它们放在同一个文件夹里,就像你的笔记本一样。

 类似资料:
  • 我学习Python才几个星期,这个问题难倒了我。我试图创建一个简单的塔防风格的游戏使用Pyplay。已经在谷歌上搜索和研究了4个多小时(pyplay docs网站在发布时已经关闭,依赖于缓存版本)。我相信它最终会变得非常容易修复,但我没有主意了。 我把塔类放在一个文件中,主游戏循环放在另一个文件中。图像文件存储在名为“资产”的文件夹中,该文件夹与tower类和主游戏循环位于同一目录中。当我试图创建

  • 问题内容: 从SavedModel Docs中 , SavedModel,TensorFlow模型的通用序列化格式。 和 SavedModel包装了一个TensorFlow Saver。Saver主要用于生成变量检查点。 据我了解,如果有人想使用TensorFlow Serving ,那是必须的。不过,我可以部署Tensorflow模型没有服务服务器:冻结图并将其导出为,和负载图形到会话中使用和创

  • 问题内容: 在numpy中,可以使用切片语法中的’newaxis’对象创建长度为1的轴,例如: 该文档的状态是一个也可以用代替,效果是完全一样的。 有什么理由选择一个?是否有一般偏好或样式指南?我的印象是更受欢迎,可能是因为它更明确。那么,有什么理由允许这样做? 问题答案: 之所以被允许,是因为它仅仅是的别名。 作者之所以选择它,是因为他们需要一个方便的常量并且可用。 至于为什么你应该更喜欢过:主

  • 问题内容: 我有以下抛出的非常基本的代码; 我尝试将解码设置为Data变量,如下所示,但是会引发相同的错误; 有什么建议? 问题答案: 您只是将其以错误的顺序放置,是无辜的错误。 (深入解答)。正如wim礼貌地指出的那样,在极少数情况下,他们可以选择UTF-16或UTF-32。在这种情况下,对于开发人员而言,这种情况将不那么常见,在这种情况下,他们将有意识地决定放弃宝贵的带宽。因此,如果遇到编码问

  • 问题内容: 我正在使用Python2.x。 比较时我的编辑会警告我,但使用时不会警告。 我在Python Shell中进行了测试,并确定两者都是有效的语法,但我的编辑器似乎在说这是首选。 是这样吗?如果是,为什么? 问题答案: 摘要: 使用时要核对对象的身份(如检查,看看是否是)。使用时要检查的平等(例如是等于?)。 说明: 你可以在其中返回的自定义类True 例如: is检查对象身份。只有1个对

  • 代码段用于获取从文本文件中提取的一行文本,将其分离为单独的标记,并将每个标记存储在数组的索引中。起初我以为问题出在文本文件上,但是直接将字符串放入编辑器并不能解决这个问题。 使用字符串,如: 带分隔符的StringTokenizer对象返回前四个标记作为正确的字符串,但其余四个标记为null。 有趣的是,另一个字符串: “Gnollnonegeralany222taunttaunt” 鸡肉没有野兽