Сиамские сети в Керасе - ошибки - PullRequest
1 голос
/ 04 апреля 2020

Я обучил сиамца net на наборе данных изображения и получил несколько ошибок, которые приведены ниже.

a = Input(shape=(256,256,3))
b = Input(shape=(256,256,3))
#create model
model = Sequential()
#add model layers
model.add(Conv2D(64, kernel_size=10, activation='relu', input_shape=(256,256,3),strides=(1,1)))
model.add(MaxPooling2D(2,2))
model.add(Conv2D(128, kernel_size=7, activation='relu',strides=(1,1)))
model.add(MaxPooling2D(2,2))
model.add(Conv2D(128, kernel_size=4, activation='relu',strides=(1,1)))
model.add(MaxPooling2D(2,2))
model.add(Conv2D(256, kernel_size=4, activation='relu',strides=(1,1)))
model.add(Flatten())
model.add(Dense(7, activation='sigmoid'))
encoded_l = model(a)
encoded_r = model(b)
L1_layer = Lambda(lambda tensors:K.abs(tensors[0] - tensors[1]))
L1_distance = L1_layer([encoded_l, encoded_r])
prediction = Dense(4096,activation='sigmoid')(L1_distance)

# Connect the inputs with the outputs
model = Model(inputs=[a,b],outputs=prediction)
# plot graph
keras.utils.plot_model(model, show_shapes=True)

Я обучил модель на наборе данных изображения:

train_data_path = '/content/drive/My Drive/jaffe augmented/train'
validation_data_path = '/content/drive/My Drive/jaffe augmented/validation'
test_data_path = '/content/drive/My Drive/jaffe augmented/test'
img_rows = 256
img_cols = 256
epochs = 2
batch_size = 32
num_of_train_samples = 1026
num_of_validation_samples =126
num_of_test_samples =21
train_datagen = ImageDataGenerator(rescale=1. / 255)
validation_datagen = ImageDataGenerator(rescale=1. / 255)
test_datagen = ImageDataGenerator(rescale=1. / 255)
train_generator = train_datagen.flow_from_directory(train_data_path,
                                                target_size=(img_rows, img_cols),
                                                batch_size=batch_size)
validation_generator = validation_datagen.flow_from_directory(validation_data_path,
                                                    target_size=(img_rows, img_cols),
                                                    batch_size=batch_size)
test_generator = test_datagen.flow_from_directory(test_data_path,
                                                target_size=(img_rows, img_cols),
                                                batch_size=batch_size)                                             
model.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
history=model.fit_generator(train_generator,
                steps_per_epoch=num_of_train_samples // batch_size,
                epochs=epochs,
                validation_data=validation_generator,
                validation_steps=num_of_validation_samples//batch_size)

Я получил следующую ошибку.

ValueError: Ошибка при проверке ввода модели: список Numpy массивов, передаваемых в вашу модель, не соответствует размеру, ожидаемому моделью. Ожидается увидеть 2 массива (ов), но вместо этого получен следующий список из 1 массива: [array ([[[[[. 1, 1., 1.], [1., 1., 1.], [1. , 1., 1.], ..., [1., 1., 1. ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...