#python-3.x #image-processing #deep-learning #computer-vision
#python-3.x #обработка изображений #глубокое обучение #компьютерное зрение
Вопрос:
Я выполнял классификацию изображений с использованием предопределенной модели vgg16, я получил 89% точности в данных проверки, чтобы повысить точность модели, я увеличил изображение, но получил некоторые ошибки. пожалуйста, помогите мне, как подогнать под модель. вот мой код.
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
train_datagen.fit(X_train)
Я использую входное изображение размером 64x64x3.
Мне подходит такая модель.
history = model.fit_generator(
train_datagen.flow(X_train,y_train),
steps_per_epoch=(X_train)/32 ,
epochs=30,
validation_data=(X_test,y_test),
validation_steps=(X_test)/32,
verbose=1)
Epoch 1/30
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-30-ff3a9aaa40da> in <module>()
5 validation_data=(X_test,y_test),
6 validation_steps=(X_test)/32,
----> 7 verbose=1)
/usr/local/lib/python3.6/dist-packages/keras/legacy/interfaces.py in wrapper(*args, **kwargs)
89 warnings.warn('Update your `' object_name '` call to the '
90 'Keras 2 API: ' signature, stacklevel=2)
---> 91 return func(*args, **kwargs)
92 wrapper._original_function = func
93 return wrapper
/usr/local/lib/python3.6/dist-packages/keras/engine/training.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
1416 use_multiprocessing=use_multiprocessing,
1417 shuffle=shuffle,
-> 1418 initial_epoch=initial_epoch)
1419
1420 @interfaces.legacy_generator_methods_support
/usr/local/lib/python3.6/dist-packages/keras/engine/training_generator.py in fit_generator(model, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
178 steps_done = 0
179 batch_index = 0
--> 180 while steps_done < steps_per_epoch:
181 generator_output = next(output_generator)
182
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Ответ №1:
Ссылаясь на @jmetz, @suri, у вас та же проблема с вашим validation_steps
параметром, которым вы его инициализировали (X_test)/32
(вероятно, не скалярный). Проверьте свои validation_steps.shape
/ len(validation_steps)
и steps_per_epoch.shape
/ len(steps_per_epoch)
(в зависимости от входных размеров). Они должны быть скалярами.
Ответ №2:
Похоже, что steps_per_epoch
должно быть скалярным (одиночное значение).
Вы устанавливаете его равным (X_train)/32
.
Комментарии:
1. привет, jmetz, я имею в виду его для применения автоэнкодера к данным.
2. привет @suri — в любом случае, ошибка изнутри
keras
подразумевает, чтоsteps_per_epoch
должно быть единственное значение, и вы передаете массив, так что это причина проблемы.