import os import matplotlib.pyplot as plt from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.optimizers import RMSprop import tensorflow as tf from kerastuner.tuners import Hyperband from kerastuner.engine.hyperparameters import HyperParameters #创建两个生成器,指定scaling范围为0~1 train_datagen = ImageDataGenerator(rescale=1/255) validation_datagen = ImageDataGenerator(rescale=1/255) #指向训练数据的文件夹 train_generator = train_datagen.flow_from_directory( './tmp/horse-or-human', #训练数据的文件夹 target_size=(150,150), #指定输出尺寸 batch_size=32, class_mode='binary' #指定二分类 ) #指向测试数据文件夹 validation_generator = validation_datagen.flow_from_directory( './tmp/validation-horse-or-human', target_size=(150,150), batch_size=32, class_mode='binary' ) hp = HyperParameters() def build_model(hp): model = tf.keras.models.Sequential() model.add(tf.keras.layers.Conv2D(hp.Choice('num_filters_layer0',values=[16,64],default=16),(3,3),activation='relu',input_shape=(150,150,3))) model.add(tf.keras.layers.MaxPooling2D(2,2)) for i in range(hp.Int('num_conv_layers',1,3)): model.add(tf.keras.layers.Conv2D(hp.Choice(f'num_filters_layer{i}',values=[16,64],default=16),(3,3),activation='relu')) model.add(tf.keras.layers.MaxPooling2D(2,2)) # model.add(tf.keras.layers.Conv2D(64,(3,3),activation='relu')) # model.add(tf.keras.layers.MaxPooling2D(2,2)) model.add(tf.keras.layers.Flatten()) model.add(tf.keras.layers.Dense(hp.Int('hidden_units',128,512,step=32),activation='relu')) model.add(tf.keras.layers.Dense(1,activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer=RMSprop(lr=0.001), metrics=['acc']) return model tuner = Hyperband( build_model, objective = 'val_acc', max_epochs = 15, directory = 'horse_human_params', hyperparameters = hp, project_name = 'my_horse_human_project' ) tuner.search(train_generator,epochs = 10,validation_data = validation_generator)
你把那个数据文件夹地址换成绝对路径试试