Я пытаюсь использовать keras model.fit_generator() для соответствия модели, ниже мое определение генератора:keras model fit_generator ValueError: ошибка при проверке цели модели: ожидается, что cropping2d_4 имеет 4 измерения, но получил массив с формой (32, 1)
from sklearn.utils import shuffle
IMG_PATH_PREFIX = "./data/IMG/"
def generator(samples, batch_size=64):
num_samples = len(samples)
while 1: # Loop forever so the generator never terminates
shuffle(samples)
for offset in range(0, num_samples, batch_size):
batch_samples = samples[offset:offset+batch_size]
images = []
angles = []
for batch_sample in batch_samples:
name = IMG_PATH_PREFIX + batch_sample[0].split('/')[-1]
center_image = cv2.imread(name)
center_angle = float(batch_sample[3])
images.append(center_image)
angles.append(center_angle)
X_train = np.array(images)
y_train = np.array(angles)
#X_train = np.expand_dims(X_train, axis=0)
#y_train = np.expand_dims(y_train, axis=1)
print("X_train shape: ", X_train.shape, " y_train shape:", y_train.shape)
#print("X train: ", X_train)
yield X_train, y_train
train_generator = generator(train_samples, batch_size = 32)
validation_generator = generator(validation_samples, batch_size = 32)
Здесь форма выхода: X_train формы: (32, 160, 320, 3) y_train форма: (32)
модель подходит код:
model = Sequential()
#cropping layer
model.add(Cropping2D(cropping=((50,20), (1,1)), input_shape=(160,320,3), dim_ordering='tf'))
model.compile(loss = "mse", optimizer="adam")
model.fit_generator(train_generator, samples_per_epoch= len(train_samples), validation_data=validation_generator, nb_val_samples=len(validation_samples), nb_epoch=3)
Тогда я получаю сообщение об ошибке:
ValueError: Ошибка при проверке целевой модели: ожидается cropping2d_6 иметь 4 измерения, но есть массив с формой (32, 1)
Может кто-нибудь помочь, дайте мне знать, что этот вопрос ?