以下是我原来的 MLP 模型:
def create_model(n_hidden_1, n_hidden_2, num_classes, num_features):
# create the model
model = Sequential()
model.add(tf.keras.layers.InputLayer(input_shape=(num_features,)))
model.add(tf.keras.layers.Dense(n_hidden_1, activation='sigmoid'))
model.add(tf.keras.layers.Dense(n_hidden_2, activation='sigmoid'))
model.add(tf.keras.layers.Dense(num_classes, activation='softmax'))
# instantiate the optimizer
opt = keras.optimizers.SGD(learning_rate=LEARNING_RATE)
# compile the model
model.compile(
optimizer=opt,
loss="categorical_crossentropy",
metrics="categorical_accuracy"
)
# return model
return model
为了调整它,我实现了一个 Keras-Tuner 模型,如下所示:
def _model(hp, num_features, num_classes):
model = keras.Sequential()
model.add(tf.keras.layers.InputLayer(input_shape=(num_features)))
model.add(tf.keras.layers.Dense(
hp.Int("dense_1_units", min_value=128, max_value=2048, step=128, default=128),
activation="sigmoid"
))
model.add(tf.keras.layers.Dense(
hp.Int("dense_2_units", min_value=128, max_value=2048, step=128, default=128),
activation="sigmoid"
))
model.add(tf.keras.layers.Dense(num_classes, activation="softmax"))
model.compile(
optimizer=tf.keras.optimizers.Adam(
hp.Choice("learning_rate", values=[1e-1, 1e-2, 1e-3])
),
loss="categorical_crossentropy",
metrics="categorical_accuracy"
)
return model
而且,电话是这样的:
tuner = RandomSearch(
_model(FEATURES_COUNT, CLASS_COUNT),
objective="categorical_accuracy",
max_trials=10,
overwrite=True,
directory="my_project",
project_name="my_project",
)
但是,它正在生成以下错误:
Traceback (most recent call last):
File "C:\Users\pc\source\repos\my_project\my_tuner.py", line 219, in <module>
_model(FEATURES_COUNT, CLASS_COUNT),
TypeError: _model() missing 1 required positional argument: 'num_classes'
如何将num_features
和的值传递num_classes
到调谐器模型中?