import os
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.optimizers import RMSprop
train_datagen = ImageDataGenerator(rescale=1/255)
validation_datagen = ImageDataGenerator(rescale=1/255)
train_generator = train_datagen.flow_from_directory('/home/jovyan/tensorflow_datasets/horse-or-human/',
target_size=(150, 150),batch_size=32,class_mode='binary')
validation_generator = validation_datagen.flow_from_directory('/home/jovyan/tensorflow_datasets/validation-horse-or-human/',
target_size=(150, 150), batch_size=32,class_mode='binary')
from kerastuner.tuners import Hyperband
from kerastuner.engine.hyperparameters import HyperParameters
import tensorflow as tf
hp=HyperParameters()
def build_model(hp):
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Conv2D(hp.Choice('num_filters_top_layer',values=[16,64],default=16), (3,3),
activation='relu', input_shape=(150, 150, 3)))
model.add(tf.keras.layers.MaxPooling2D(2, 2))
for i in range(hp.Int("num_conv_layers",1,3)):
model.add(tf.keras.layers.Conv2D(hp.Choice(f'num_filters_layer{i}',values=[16,64],default=16), (3,3), activation='relu'))
model.add(tf.keras.layers.MaxPooling2D(2,2))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(hp.Int("hidden_units",128,512,step=32), activation='relu'))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',optimizer=RMSprop(lr=0.001),metrics=['acc'])
return model
tuner=Hyperband(
build_model,
objective='val_acc',
max_epochs=10,
directory='horse_human_params',
hyperparameters=hp,
project_name='my_horse_human_project'
)
tuner.search(train_generator,epochs=10,validation_data=validation_generator)
出错信息
--------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-3-37d1b22bd3e1> in <module>
7 project_name='my_horse_human_project'
8 )
----> 9 tuner.search(train_generator,epochs=10,validation_data=validation_generator)
/opt/conda/lib/python3.7/site-packages/kerastuner/engine/base_tuner.py in search(self, *fit_args, **fit_kwargs)
129
130 self.on_trial_begin(trial)
--> 131 self.run_trial(trial, *fit_args, **fit_kwargs)
132 self.on_trial_end(trial)
133 self.on_search_end()
/opt/conda/lib/python3.7/site-packages/kerastuner/tuners/hyperband.py in run_trial(self, trial, *fit_args, **fit_kwargs)
352 fit_kwargs['epochs'] = hp.values['tuner/epochs']
353 fit_kwargs['initial_epoch'] = hp.values['tuner/initial_epoch']
--> 354 super(Hyperband, self).run_trial(trial, *fit_args, **fit_kwargs)
355
356 def _build_model(self, hp):
/opt/conda/lib/python3.7/site-packages/kerastuner/engine/multi_execution_tuner.py in run_trial(self, trial, *fit_args, **fit_kwargs)
76 model_checkpoint = keras.callbacks.ModelCheckpoint(
77 filepath=self._get_checkpoint_fname(
---> 78 trial.trial_id, self._reported_step),
79 monitor=self.oracle.objective.name,
80 mode=self.oracle.objective.direction,
/opt/conda/lib/python3.7/site-packages/kerastuner/engine/tuner.py in _get_checkpoint_fname(self, trial_id, epoch)
315 self._get_checkpoint_dir(trial_id, epoch),
316 'checkpoint')
--> 317 if (isinstance(self.distribution_strategy, tf.distribute.TPUStrategy) and
318 not self.project_dir.startswith('gs://')):
319 # TPU strategy only support saving h5 format on local path
AttributeError: module 'tensorflow._api.v2.distribute' has no attribute 'TPUStrategy'
```