keras.preprocessing.image_dataset_from_directory 声明它已找到所有类,然后使用其中的一小部分

我很绿,所以这可能是基本的,但我迷路了。

我尝试了 keras.preprocessing.image_dataset_from_directory 并且我得到了

Found 32000 files belonging to 2 classes.
Using 25600 files for training.
Found 32000 files belonging to 2 classes.
Using 6400 files for validation.
Found 8000 files belonging to 2 classes.
Number of training samples: 800
Number of validation samples: 200
Number of test samples: 250

从这个代码(目录是假的,它可以工作)

import tensorflow as tf
import sys
import os
import numpy as np
import pandas as pd
import seaborn as sns
import itertools
import sklearn
from tensorflow import keras
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.vgg16 import preprocess_input,decode_predictions
from tensorflow.keras import layers


#Importing images
train_ds = keras.preprocessing.image_dataset_from_directory(
    'directory\\classification',labels="inferred",label_mode="binary",class_names=("Negative","Positive"),color_mode="rgb",batch_size=32,image_size=(227,227),shuffle=True,seed=50,validation_split=0.2,subset="training",interpolation="bilinear",follow_links=False,)

val_ds = keras.preprocessing.image_dataset_from_directory(
    'directory\\classification',subset="validation",)

test_ds = keras.preprocessing.image_dataset_from_directory(
    'directory\\test',validation_split=None,subset=None,)

print("Number of training samples: %d" % tf.data.experimental.cardinality(train_ds))
print("Number of validation samples: %d" % tf.data.experimental.cardinality(val_ds))
print("Number of test samples: %d" % tf.data.experimental.cardinality(test_ds))

# Visualise the data
import matplotlib.pyplot as plt 

plt.figure(figsize=(10,10))
for images,labels in train_ds.take(1):
    for i in range(9): 
        ax = plt.subplot(3,3,i + 1) 
        plt.imshow(images[i].numpy().astype("uint8")) 
        plt.title(int(labels[i])) 
        plt.axis("off")

# data augmentation
data_augmentation = keras.Sequential(
    [layers.experimental.preprocessing.RandomFlip("horizontal_and_vertical"),layers.experimental.preprocessing.RandomRotation(0.2),])

# Visualise
plt.figure(figsize=(10,_ in train_ds.take(1):
    for i in range(9):
        augmented_images = data_augmentation(images)
        ax = plt.subplot(3,i + 1)
        plt.imshow(augmented_images[0].numpy().astype("uint8"))
        plt.axis("off")
        
# buffered prefetching - last op on dataset,suggested 2xbatch,default batch =32
train_ds = train_ds.prefetch(buffer_size=64)
val_ds = val_ds.prefetch(buffer_size=64)
test_ds = test_ds.prefetch(buffer_size=64)

当此数据尝试评估测试数据时,它使用 250 个样本而不是 8000 个样本(仅超过 3%)。如何让模型使用所有数据?

wannazhao 回答:keras.preprocessing.image_dataset_from_directory 声明它已找到所有类,然后使用其中的一小部分

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2442.html

大家都在问