我正在使用 kerastuner.tuner.RandomSearch 来调整超参数,包括模型的层数。但是报告的层数与创建的层数不同。例如。
Search: Running Trial #1
Hyperparameter |Value |Best Value So Far
num_layers_conv |7 |?
conv0_filters |32 |?
conv0_kernel_size |5 |?
pool0_pool_size |6 |?
conv1_filters |64 |?
conv1_kernel_size |6 |?
pool1_pool_size |6 |?
num_layers_dense |8 |?
dense0_units |32 |?
dense1_units |256 |?
在上述试验中,据报道卷积层数将为 7,但仅创建了 3 个,据报道层数为 8,但仅创建了两个。
这是我的built_model 函数的代码。
def build_model(hp):
model = models.Sequential()
num_conv = hp.Int('num_layers_conv', 2, 8)
model.add(layers.Conv2D(filters=hp.Choice('conv0_filters', [32, 64, 128]),
kernel_size=hp.Int('conv0_kernel_size', min_value=3, max_value=9),
activation='relu',
input_shape=(200, 200, 1),
padding='same'))
model.add(layers.MaxPooling2D(pool_size=hp.Int('pool0_pool_size', min_value=2, max_value=7),
padding='same'))
for i in range(1, num_conv):
model.add(layers.Conv2D(filters=hp.Choice(f'conv{i}_filters', [32, 64, 128]),
kernel_size=hp.Int(f'conv{i}_kernel_size', min_value=3, max_value=9),
activation='relu',
padding='same'))
model.add(layers.MaxPooling2D(pool_size=hp.Int(f'pool{i}_pool_size', min_value=2, max_value=7),
padding='same'))
model.add(layers.Flatten())
num_dense = hp.Int('num_layers_dense', 2, 8)
for i in range(num_dense):
model.add(layers.Dense(units=hp.Choice(f'dense{i}_units', [32, 64, 128, 256, 512]),
activation='relu'))
model.add(layers.Dense(29, activation='sigmoid'))
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
return model
我做错了什么还是kerastuner中的错误?