Keras Tuner安装
pip install keras-tuner
from tensorflow.keras import layers
from tensorflow import keras
from kerastuner.tuners import RandomSearch
from kerastuner.tuners import BayesianOptimization
(x,y),(val_x,val_y)=keras.datasets.mnist.load_data()
x = x.astype('float32') / 255.
val_x = val_x.astype('float32') / 255.
x = x[:10000]
y = y[:10000]
def build_model(hp):
model=keras.Sequential()
model.add(layers.Flatten(input_shape=(28,28)))
for i in range(hp.Int('num_layers',2,20)):
model.add(layers.Dense(units=hp.Int('units_'+str(i),32,152)))
model.add(layers.Dense(10,activation='softmax'))
model.compile(optimizer=keras.optimizers.Adam(hp.Choice('learning_rate',[1e-2,1e-3,1e-4])),loss='sp
arse_categorical_crossentropy',metrics=['accuracy'])
return model
tuner=RandomSearch(build_model, # # 构建模型函数名,默认传入hp
objective='val_accuracy', # 优化指标
max_trials=10, # 最大尝试次数
executions_per_trial=3, # 每种方式的尝试次数
directory='test_dir') # 结果保存路径,自动创建目录
tuner.search(x=x,y=y,epochs=2,validation_data=(val_x,val_y))
tuner.results_summary()
运行返回
[Results summary]
|-Results in test_dir/untitled_project
|-Showing 10 best trials
|-Objective(name='val_accuracy', direction='max')
[Trial summary]
|-Trial ID: fe780013dda2075c6ba800e86cc51a40
|-Score: 0.8907000025113424
|-Best step: 0
> Hyperparameters:
|-learning_rate: 0.0001
|-num_layers: 3
|-units_0: 98
|-units_1: 130
|-units_10: 65
|-units_11: 137
|-units_12: 120
|-units_13: 103
|-units_14: 98
|-units_15: 45
|-units_16: 136
|-units_17: 109
|-units_2: 100
|-units_3: 56
|-units_4: 81
|-units_5: 35
|-units_6: 87
|-units_7: 116
|-units_8: 53
|-units_9: 85
[Trial summary]
|-Trial ID: 4a465da19ef82fd8a9072cc94813f51c
|-Score: 0.8893333474795023
|-Best step: 0
> Hyperparameters:
|-learning_rate: 0.0001
|-num_layers: 7
|-units_0: 79
|-units_1: 85
|-units_10: 84
|-units_11: 70
|-units_12: 121
|-units_13: 107
|-units_14: 129
|-units_15: 148
|-units_16: 56
|-units_17: 123
|-units_2: 97
|-units_3: 77
|-units_4: 39
|-units_5: 91
|-units_6: 70
|-units_7: 110
|-units_8: 37
|-units_9: 57
[Trial summary]
|-Trial ID: 59246fbda040f771a6ab9ccfc8cf72e2
|-Score: 0.8885666529337565
|-Best step: 0
> Hyperparameters:
|-learning_rate: 0.001
|-num_layers: 3
|-units_0: 134
|-units_1: 90
|-units_10: 34
|-units_11: 113
|-units_12: 119
|-units_13: 36
|-units_14: 102
|-units_15: 91
|-units_16: 99
|-units_17: 144
|-units_2: 55
|-units_3: 49
|-units_4: 123
|-units_5: 77
|-units_6: 140
|-units_7: 141
|-units_8: 81
|-units_9: 69
[Trial summary]
|-Trial ID: 414acd3219bebb7e39508aff1e4888f4
|-Score: 0.8752666711807251
|-Best step: 0
> Hyperparameters:
|-learning_rate: 0.001
|-num_layers: 9
|-units_0: 139
|-units_1: 135
|-units_10: 142
|-units_11: 124
|-units_12: 126
|-units_13: 126
|-units_14: 113
|-units_15: 40
|-units_16: 36
|-units_17: 137
|-units_2: 44
|-units_3: 58
|-units_4: 51
|-units_5: 110
|-units_6: 54
|-units_7: 124
|-units_8: 43
|-units_9: 142
[Trial summary]
|-Trial ID: c8a3ee5f9ab41ae8a4bacf077fcc68a6
|-Score: 0.8689999977747599
|-Best step: 0
> Hyperparameters:
|-learning_rate: 0.001
|-num_layers: 12
|-units_0: 78
|-units_1: 100
|-units_10: 61
|-units_11: 125
|-units_12: 72
|-units_13: 40
|-units_14: 116
|-units_15: 90
|-units_16: 80
|-units_17: 142
|-units_2: 50
|-units_3: 94
|-units_4: 37
|-units_5: 135
|-units_6: 147
|-units_7: 68
|-units_8: 116
|-units_9: 122
[Trial summary]
|-Trial ID: 9d665196db31f6639c1a8e8c38624756
|-Score: 0.8681999842325846
|-Best step: 0
> Hyperparameters:
|-learning_rate: 0.01
|-num_layers: 17
|-units_0: 146
|-units_1: 132
|-units_10: 102
|-units_11: 46
|-units_12: 55
|-units_13: 77
|-units_14: 124
|-units_15: 99
|-units_16: 74
|-units_17: 137
|-units_2: 99
|-units_3: 143
|-units_4: 49
|-units_5: 33
|-units_6: 56
|-units_7: 45
|-units_8: 49
|-units_9: 80
[Trial summary]
|-Trial ID: fb36e64a04d784bf27c7570053d01fe3
|-Score: 0.8650000095367432
|-Best step: 0
> Hyperparameters:
|-learning_rate: 0.001
|-num_layers: 11
|-units_0: 41
|-units_1: 123
|-units_10: 40
|-units_11: 124
|-units_12: 43
|-units_13: 80
|-units_14: 84
|-units_15: 33
|-units_16: 93
|-units_17: 65
|-units_2: 99
|-units_3: 130
|-units_4: 103
|-units_5: 110
|-units_6: 97
|-units_7: 38
|-units_8: 73
|-units_9: 37
[Trial summary]
|-Trial ID: 79024e28abd01e0ec160ac365921175e
|-Score: 0.8572333256403605
|-Best step: 0
> Hyperparameters:
|-learning_rate: 0.01
|-num_layers: 17
|-units_0: 97
|-units_1: 111
|-units_10: 80
|-units_11: 148
|-units_12: 36
|-units_13: 48
|-units_14: 54
|-units_15: 84
|-units_16: 109
|-units_17: 54
|-units_2: 89
|-units_3: 53
|-units_4: 135
|-units_5: 41
|-units_6: 95
|-units_7: 57
|-units_8: 76
|-units_9: 104
[Trial summary]
|-Trial ID: c2f2c32c73ff34d9be17cef6ec932da8
|-Score: 0.8558000127474467
|-Best step: 0
> Hyperparameters:
|-learning_rate: 0.001
|-num_layers: 12
|-units_0: 117
|-units_1: 135
|-units_10: 115
|-units_11: 72
|-units_12: 149
|-units_13: 146
|-units_14: 47
|-units_15: 143
|-units_16: 87
|-units_17: 132
|-units_2: 114
|-units_3: 73
|-units_4: 74
|-units_5: 113
|-units_6: 107
|-units_7: 128
|-units_8: 46
|-units_9: 136
[Trial summary]
|-Trial ID: 6ec7d10ff76cc678ae5884afef189c0a
|-Score: 0.8537000020345052
|-Best step: 0
> Hyperparameters:
|-learning_rate: 0.0001
|-num_layers: 18
|-units_0: 73
|-units_1: 74
|-units_10: 32
|-units_11: 32
|-units_12: 32
|-units_13: 32
|-units_14: 32
|-units_15: 32
|-units_16: 32
|-units_17: 32
|-units_2: 32
|-units_3: 32
|-units_4: 32
|-units_5: 32
|-units_6: 32
|-units_7: 32
|-units_8: 32
|-units_9: 32