def create_sequences(tokenizer, max_length, desc_list, photo):
X1, X2, y = list(), list(), list()
# walk through each description for the image
for desc in desc_list:
# encode the sequence
seq = tokenizer.texts_to_sequences([desc])[0]
# split one sequence into multiple X,y pairs
for i in range(1, len(seq)):
# split into input and output pair
in_seq, out_seq = seq[:i], seq[i]
# pad input sequence
in_seq = pad_sequences([in_seq], maxlen=max_length)[0]
# encode output sequence
out_seq = to_categorical([out_seq], num_classes=vocab_size)[0]
# store
X1.append(photo)
X2.append(in_seq)
y.append(out_seq)
return array(X1), array(X2), array(y)
def data_generator (описания, фотографии, токенизатор, max_length):
l oop для вечных изображений
while 1:
for key, desc_list in descriptions.items():
# retrieve the photo feature
photo = photos[key][0]
in_img, in_seq, out_word = create_sequences(tokenizer, max_length, desc_list, photo)
yield [[in_img, in_seq], out_word]
для i в диапазоне (эпох):
generator = data_generator(train_descriptions, train_features, tokenizer, max_length)
model.fit_generator (генератор, эпох = 1, steps_per_epoch = шагов, многословный = 1) model.save ("models / model_" + str (i) + ".h5")
Ошибка: ValueError: Ошибка при проверке цели: ожидается, что dens_20 будет иметь форму (1,), но получил массив с формой (88,)