使用keras

使用keras,第1张

使用keras
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow import keras
from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale=1.0/255)
val_datagen = ImageDataGenerator(rescale=1.0/255)
train_generator = train_datagen.flow_from_directory(r"/jupyter/horse-or-human/",target_size=(300,300),
                                                    batch_size=32,class_mode='binary')
validation_generator = val_datagen.flow_from_directory(r"/jupyter/validation-horse-or-human/",target_size=(300,300),
                                                      batch_size=32,class_mode='binary')
                                                      from kerastuner.tuners import Hyperband
from kerastuner.engine.hyperparameters import HyperParameters
hp=HyperParameters()
def build_model(hp):
    model = keras.Sequential()
    model.add(keras.layers.Conv2D(hp.Choice("num_filters_layer0",values=[16,64],default=16),kernel_size=(3,3),
                                 activation='relu'),input_shape=(300,300,3))
    model.add(keras.layers.MaxPool2D(2,2))
    for i in range(hp.Int("num_Cov_layer",1,3)):
        model.add(keras.layers.Conv2D(hp.Int(f"num_filters_layer{i}",16,64,48),
                                      kernel_size=(3,3),activation='relu'))
        model.add(keras.layers.MaxPool2D(2,2))
    model.add(keras.layers.Flatten())
    model.add(keras.layers.Dense(hp.Int("num_Dense",128,256,128),activation='relu'))
    model.add(keras.layers.Dense(1,activation='sigmoid'))
    
    model.compile(optimizer=keras.optimizers.RMSprop(learning_rate=hp.Float("lr",0.001,0.01,0.005)),
                  loss='binary_crossentropy',metrics=['acc'])
    return model
tuner = Hyperband(hypermodel=build_model,objective='val_acc',
                 max_epochs=10,directory='horse-or-human_parameters',
                 project_name='my_project_para')

tuner.search(train_generator,epochs=5,validation_data=validation_generator)
best_hp = tuner.get_best_hyperparameters()[0]
print(best_hp.values)
model = tuner.hypermodel.build(best_hp)
model.summary()

主要是使用hp.Int(),Choice,float来代替需要调整的超参数,最后使用search函数进行搜索。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5701316.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存