Skip to content Skip to sidebar Skip to footer

Grid Search Fit Not Accepting List Of Tensors

I have a siamese network and I want to perform a grid seach on it using GridSearchCV. So I create a model using the following function: def createMod(learn_rate=0.01, optimizer='Ad

Solution 1:

this is workaround to pass multiple input. I create a dummy model that receives a SINGLE input in the format (n_sample, 2, 6) and then split it into two parts using Lambda layer. you can modify this according to your siamese structure.

def createMod(optimizer='Adam'):
    
    combi_input = Input((2,6)) # (n_sample, 2, 6)
    input_a = Lambda(lambda x: x[:,0])(combi_input) # (n_sample, 6)
    input_b = Lambda(lambda x: x[:,1])(combi_input) # (n_sample, 6)

    c = Concatenate()([input_a,input_b])
    x = Dense(32)(c)

    prediction = Dense(1,activation='sigmoid')(x)
    model = Model(combi_input, prediction)

    model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics='accuracy')

    return model

tr_pairs = np.random.uniform(0,1, (1054, 2, 6))
tr_y = np.random.randint(0,2, 1054)

model = tf.keras.wrappers.scikit_learn.KerasClassifier(build_fn=createMod, verbose=0)
batch_size = [10, 20]
epochs = [10, 5]
optimizer = ['adam','SGD']
param_grid = dict(batch_size=batch_size, epochs=epochs)
grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=-1, cv=3)
grid_result = grid.fit(tr_pairs, tr_y)

Post a Comment for "Grid Search Fit Not Accepting List Of Tensors"