Я пытаюсь использовать Keras Tuner для оптимизации гиперпараметров:
import keras
from kerastuner import HyperModel
from kerastuner.tuners import Hyperband
input_shape = (1, 28, 28)
num_classes = 10
# Define hypermodel class
class CNNHyperModel(HyperModel):
def __init__(self, input_shape, num_classes):
self.input_shape = input_shape
self.num_classes = num_classes
def build(self, hp):
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation="relu", input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation="relu"))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation="softmax"))
model.compile(
loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=["accuracy"],
)
return model
# Instantiate
hypermodel = CNNHyperModel(input_shape=input_shape, num_classes=num_classes)
# Create tuner
HYPERBAND_MAX_EPOCHS = 40
MAX_TRIALS = 20
EXECUTION_PER_TRIAL = 2
SEED = 1
tuner = RandomSearch(
hypermodel,
max_epochs=HYPERBAND_MAX_EPOCHS,
objective='val_accuracy',
seed=SEED,
max_trials=MAX_TRIALS,
executions_per_trial=EXECUTION_PER_TRIAL,
directory='hyperband',
project_name='mnist'
)
Я получаю
AttributeError: модуль 'tenorflow._api.v1.keras.metrics' не имеет атрибута 'Metri c'
с Tensorflow 1.13 и 2.0, установленными с использованием conda.
Включая from tensorflow.python.keras.metrics import Metric
, как предложено в , этот ответ ничего не меняет .