0

I am trying keras tuner for the first time. Here is my code:

import os
import sys 
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import tensorflow
import tensorflow.keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Dropout
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import MaxPooling2D
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.utils import plot_model
from sklearn.metrics import roc_curve, auc ,confusion_matrix
from tensorflow.keras.layers import BatchNormalization
from tensorflow.keras.losses import MeanSquaredLogarithmicError

gpus = tensorflow.config.experimental.list_physical_devices('GPU')

for gpu in gpus:
    tensorflow.config.experimental.set_memory_growth(gpu, True)

dft1 = pd.read_hdf('Transverse_W.h5').astype(np.float32)
dft2 = pd.read_hdf('Transverse_W2.h5').astype(np.float32)
   
dfj1 = pd.read_hdf('Longitudinal_W.h5').astype(np.float32)
dfj2 = pd.read_hdf('Longitudinal_W2.h5').astype(np.float32)

dft = pd.concat([dft1,dft2],ignore_index=True)
dfj = pd.concat([dfj1,dfj2],ignore_index=True)

dft = dft.dropna()
dfj = dfj.dropna()

onet = np.ones(len(dft))
zeroj = np.zeros(len(dfj))

dft['val'] = onet
dfj['val'] = zeroj

dfval = pd.concat([dft,dfj],ignore_index=True)

X = dfval.drop('val',axis=1).values
Y = dfval['val'].values

from sklearn.model_selection import train_test_split

X_train, X_test, Y_train, Y_test = train_test_split(X,Y,test_size=0.1,random_state=42)

import keras_tuner as kt
def build_model(hp):
    model = tensorflow.keras.Sequential()
    hp_units1 = hp.Int('units1', min_value=16, max_value=512, step=32)
    hp_units2 = hp.Int('units2', min_value=16, max_value=512, step=32)
    hp_units3 = hp.Int('units3', min_value=16, max_value=512, step=32)
    hp_units4 = hp.Int('units4', min_value=16, max_value=512, step=32)
    hp_units5 = hp.Int('units5', min_value=16, max_value=512, step=32)
    model.add(Dense(units=hp_units1,input_shape=(750,), activation='relu'))
    model.add(Dense(units=hp_units2, activation='relu'))
    model.add(Dense(units=hp_units3, activation='relu'))
    model.add(Dense(units=hp_units4, activation='relu'))
    model.add(Dense(units=hp_units5, activation='relu'))
    model.add(Dense(1, kernel_initializer='normal', activation='sigmoid'))

    hp_learning_rate = hp.Choice('learning_rate', values=[1e-2, 1e-3, 1e-4])
    model.compile(
      optimizer=tensorflow.keras.optimizers.Adam(learning_rate=hp_learning_rate),
      loss='binary_crossentropy',
      metrics=['accuracy'])
    return model

tuner = kt.Hyperband(
    build_model,
    objective='val_loss',
    max_epochs=10,
    overwrite=True,
    directory='keras_tuner_dir',
    project_name='keras_tuner_demo'
)

tuner.search(X_train, Y_train, epochs=50, validation_split=0.2)

But I am getting some attribute error. Here is the error message:

AttributeError: 'Sequential' object has no attribute 'distribute_strategy'

Have anyone faced similar problems earlier. If you have please give some suggestion. I am completely clueless here.

Best Regards.

I am using:

tensorflow-gpu 2.0.0
keras-tuner 1.3.0

If I don't use keras tuner, tensorflow works fine. But, with keras tuner it gives me:

AttributeError: 'Sequential' object has no attribute 'distribute_strategy'
user16217248
  • 3,119
  • 19
  • 19
  • 37

0 Answers0