#python #image-processing #tensorflow2.0
Вопрос:
Я сделал трубопровод в TensorFlow, что-то вроде:
from glob import glob
import random
IMG_SIZE=224
def make_dataset(path,batch_size):
def parse_image(filename):
image= tf.io.read_file(filename)
image=tf.image.decode_jpeg(image,channels=3)
image=tf.image.resize(image, [IMG_SIZE,IMG_SIZE])
image=tf.cast(image, tf.float32) / 255.0
return image
def configure_for_performance(ds):
ds=ds.shuffle(buffer_size=5000)
ds=ds.batch(batch_size)
ds=ds.repeat()
ds=ds.prefetch(buffer_size=tf.data.experimental.AUTOTUNE)
return ds
classes= os.listdir(path)
filenames=glob(path '/*/*')
random.shuffle(filenames)
labels= [classes.index(name.split('/')[-2])for name in
filenames]
filenames_ds= tf.data.Dataset.from_tensor_slices(filenames)
images_ds= filenames_ds.map(parse_image,
num_parallel_calls=tf.data.experimental.AUTOTUNE)
labels_ds= tf.data.Dataset.from_tensor_slices(labels)
ds= tf.data.Dataset.zip((images_ds,labels_ds))
ds= configure_for_performance(ds)
return ds
Я хочу провести перекрестную проверку, как я могу это сделать с моим новым набором данных? Я хочу что-то вроде:
dataset=make_dataset(path,32)
kfold = KFold(n_splits=num_folds, shuffle=True)
fold_no = 1
for train, test in kfold.split(dataset):
model = Sequential()
...... # some Keras layers
model.complie("sth is here")
history = model.fit(train,
epochs=3)
scores = model.evaluate(test, verbose=0)
но этот код не работает, и ошибка связана с тем, как набор данных разделяется для обучения и тестирования. как я могу решить эту проблему?