InvalidArgumentError: вход для изменения формы является тензором с 64000 значениями, но запрашиваемая форма требует кратного 4608 - PullRequest
0 голосов
/ 18 апреля 2020

Я получил следующую ошибку при реализации кодов в этом учебнике: https://machinelearningmastery.com/snapshot-ensemble-deep-learning-neural-network

Шаги в этом учебнике следующие:

  • загрузка моделей из файла
  • оценка определенного c количества членов в ансамбле
  • создание прогноза ансамбля
InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-11-e6db5acc3e93> in <module>()
      2 for i in range(1, len(members)+1):
      3   # evaluate model with i members
----> 4   ensemble_score = evaluate_n_members(members, i)
      5   # evaluate the i'th model standalone
      6   _, single_score = members[i-1].evaluate_generator(test_generator, evaluate_generator_steps, max_queue_size = 2, workers = 1)

12 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
     58     ctx.ensure_initialized()
     59     tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
---> 60                                         inputs, attrs, num_outputs)
     61   except core._NotOkStatusException as e:
     62     if name is not None:

InvalidArgumentError:  Input to reshape is a tensor with 64000 values, but the requested shape requires a multiple of 4608
     [[node sequential_1/flatten_1/Reshape (defined at <ipython-input-10-7057180abd3c>:17) ]] [Op:__inference_predict_function_105280]

Function call stack:
predict_function

Я использую генератор данных для чтения образцы. Образцы изображений в формате jpg. Я использую следующие значения:

img_width, img_height = 224, 224
depth = 3
number_of_test_sample = 1172
batch_size = 20
evaluate_generator_steps = int(number_of_test_sample / batch_size) + 1
class_mode = 'binary'

И я использую следующий генератор данных:

# Using ImageDataGenerator to read images from directories
test_datagen = ImageDataGenerator(rescale=1./255)
test_generator = test_datagen.flow_from_directory(
    test_dir,
    target_size=(img_width, img_height),
    batch_size=batch_size,
    class_mode=class_mode,
    shuffle=False)

Загруженные модели - это разные типы сверточных нейронных сетей (CNN). Некоторые из них являются моделями с предварительной подготовкой, такими как Dens eNet, а некоторые - с нуля.

Я думаю, что ошибка происходит из-за этой строки кода, которая находится в функции "ensemble_predictions". В этой строке кода с помощью генератора данных выбираются тестовые образцы, а затем прогнозируются:

# make predictions
yhats = [model.predict_generator(test_generator, evaluate_generator_steps, max_queue_size = 2, workers = 1) for model in members]

Пожалуйста, помогите мне решить проблему.

...