Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build the model first by calling build() #1019

Open
badfish2019 opened this issue Jul 27, 2024 · 0 comments
Open

Build the model first by calling build() #1019

badfish2019 opened this issue Jul 27, 2024 · 0 comments

Comments

@badfish2019
Copy link

this is my code, it copy from the getting_started https://keras.io/guides/keras_tuner/getting_started/
but I got an error
ValueError: This model has not yet been built. Build the model first by calling build() or by calling the model on a batch of data.
i use the TensorFlow 2.11 and keras 2.xx

这是我的 代码 import keras
import numpy as np
import keras
from keras import layers
import keras_tuner

定义模型

def build_model(hp):
model = keras.Sequential()
model.add(layers.Flatten())
# Tune the number of layers.
for i in range(hp.Int("num_layers", 1, 3)):
model.add(
layers.Dense(
# Tune number of units separately.
units=hp.Int(f"units_{i}", min_value=32, max_value=512, step=32),
activation=hp.Choice("activation", ["relu", "tanh"]),
)
)
if hp.Boolean("dropout"):
model.add(layers.Dropout(rate=0.25))
model.add(layers.Dense(10, activation="softmax"))
learning_rate = hp.Float("lr", min_value=1e-4, max_value=1e-2, sampling="log")
model.compile(
optimizer=keras.optimizers.Adam(learning_rate=learning_rate),
loss="categorical_crossentropy",
metrics=["accuracy"],
)

return model

build_model(keras_tuner.HyperParameters())

定义调参

tuner = keras_tuner.RandomSearch(
hypermodel=build_model,
objective="val_accuracy",
max_trials=3,
executions_per_trial=2,
overwrite=True,
directory="my_dir",
project_name="helloworld",
)

#搜索空间摘要
tuner.search_space_summary()

(x, y), (x_test, y_test) = keras.datasets.mnist.load_data()

x_train = x[:-10000]
x_val = x[-10000:]
y_train = y[:-10000]
y_val = y[-10000:]

x_train = np.expand_dims(x_train, -1).astype("float32") / 255.0
x_val = np.expand_dims(x_val, -1).astype("float32") / 255.0
x_test = np.expand_dims(x_test, -1).astype("float32") / 255.0

num_classes = 10
y_train = keras.utils.to_categorical(y_train, num_classes)
y_val = keras.utils.to_categorical(y_val, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)

训练

tuner.search(x_train, y_train, epochs=2, validation_data=(x_val, y_val))

查询结果

models = tuner.get_best_models(num_models=2)
best_model = models[0]
best_model.summary()
best_model
使用keras_tuner优化

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant