我是机器学习的初学者,目前正在尝试将VGG net应用于我的神经网络
我正面临着这样的错误
listdir:路径应为字符串,字节,os.PathLike或无,而不是ImageDataGenerator
我目前使用Jupyter笔记本作为编辑器,这是我遇到错误的代码
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堂课。 -------------------------------------------------- ------------------------- TypeError跟踪(最近的呼叫 最后) 36个返回特征,标签 37 ---> 38 train_features,train_labels = extract_features(train_set,train_size)#同意我们小的数据集大小 39validation_features,validation_labels = extract_features(validation_dir,validation_size) 40个test_features,test_labels = extract_features(test_dir,test_size)
在extract_features(目录, sample_count) 24 target_size =(img_width,img_height), 25 batch_size = batch_size, ---> 26 class_mode ='categorical') 27#通过卷积基传递数据 28我= 0
〜\ Anaconda3 \ envs \ tensorflow_cpu \ lib \ site-packages \ keras_preprocessing \ image \ image_data_generator.py 在flow_from_directory(自身,目录,target_size,color_mode, 类,class_mode,batch_size,随机播放,种子,save_to_dir, save_prefix,save_format,follow_links,子集,插值) 538 follow_links = follow_links, 539个子集=子集 -> 540插值=插值 541) 542
〜\ Anaconda3 \ envs \ tensorflow_cpu \ lib \ site-packages \ keras_preprocessing \ image \ directory_iterator.py in init (自身,目录,image_data_generator,target_size, color_mode,类,class_mode,batch_size,随机播放,种子, data_format,save_to_dir,save_prefix,save_format,follow_links, 子集,插值,dtype) 104如果不是课程: 105个班级= [] -> 106 for subdir在sorted(os.listdir(directory))中: 107如果os.path.isdir(os.path.join(directory,subdir)): 108个类.append(subdir)
TypeError:listdir:路径应为字符串,字节,os.PathLike或无, 不是DirectoryIterator
答案 0 :(得分:0)
您正在将数据生成器传递给另一数据生成器,在此行:
generator = datagen.flow_from_directory(directory,
target_size=(img_width,img_height),
batch_size = batch_size,
class_mode='categorical')
第一个参数,目录,应该是目录,而不是数据生成器,它应该类似于:'path / to / my / train_set /'。我猜这只是您的“培训”,因为您将它们与笔记本放在同一文件夹中。