ValueError: Аргумент должен быть плотным тензором при использовании estimator.predict - PullRequest
0 голосов
/ 12 декабря 2018

Я использовал adanet.estimator in Tensorflow инструмент для обучения набора данных cifar10 .Учебное пособие находится здесь .

После обучения модели я хотел предсказать test набор данных.Я вставляю estimator.predict () в учебную модель для прогнозирования.

estimator = adanet.Estimator(
    head=head,
    subnetwork_generator=SimpleCNNGenerator(
        learning_rate=LEARNING_RATE,
        max_iteration_steps=max_iteration_steps,
        seed=RANDOM_SEED),
    max_iteration_steps=max_iteration_steps,
    evaluator=adanet.Evaluator(
        input_fn=input_fn("train", training=False, batch_size=BATCH_SIZE),
        steps=None),
    adanet_loss_decay=.99,
    config=config)


predictions = estimator.predict(input_fn=input_fn("predict", training=False, batch_size=None))

for prediction in predictions:
      self.assertIsNotNone(prediction["predictions"])

input_fn () - это функция для чтения изображений.Это часть возврата тестовых изображений .

def input_fn():
    x_testing = []
    x_testing.append(cv2.imread(image_name))  
    input_features = tf.data.Dataset.from_tensors(
          x_testing).make_one_shot_iterator().get_next()
       return {"x": input_features}, None

Код работает успешно, за исключением части прогнозирования.Это дает мне эту проблему.

Traceback (последний вызов был последним): файл "ada.py", строка 381, для прогнозирования в прогнозах: Файл "/home/a/.local/lib / python3.6 / site-packages / tenorflow / python / estimator / estimator.py ", строка 531, в файле предиката input_fn, model_fn_lib.ModeKeys.PREDICT)" /home/a/.local/lib/python3.6/site-packages / tenorflow / python / estimator / estimator.py ", строка 968, в файле _get_features_from_input_fn result = self._call_input_fn (input_fn, mode) Файл" /home/a/.local/lib/python3.6/site-packages/tenorflow / python / estimator / estimator.py ", строка 1074, в _call_input_fn, возвращают input_fn (** kwargs) Файл" ada.py ", строка 126, в _input_fn x_testing) .make_one_shot_iterator (). get_next () File" / home // /local / lib / python3.6 / site-packages / tenorflow / python / data / ops / dataset_ops.py ", строка 228, в from_tensors возвращают файл TensorDataset (тензор)" "/home/a/.local/lib/python3.6 / site-packages / tenorflow / python / data / ops / dataset_ops.py ", строка 1019, в init для i, t в перечислении(nest.flatten (тензор)) Файл "/home/a/.local/lib/python3.6/site-packages/tensorflow/python/data/ops/dataset_ops.py", строка 1019, для i, t вперечислить (nest.flatten (тензор)) файл "/home/a/.local/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", строка 1011, в файле convert_to_tensor as_ref = False)"/home/a/.local/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", строка 1107, в internal_convert_to_tensor ret = translation_func (значение, dtype = dtype, name = name, as_ref= as_ref) Файл "/home/a/.local/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py", строка 217, в функции _constant_tensor_conversion_function возвращает константу (v, dtype = dtype, name =name) Файл "/home/a/.local/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py", строка 196, в постоянном значении, dtype = dtype, shape = shape, verify_shape =verify_shape)) Файл "/home/a/.local/lib/python3.6/site-packages/tensorflow/python/framework/tensor_util.py", строка 445, в make_tensor_proto _GetDenseDimensions (значения))) ValueError: Аргумент должен быть плотным тензором: [array ([[[167, 187, 204],

    [163, 185, 206],
    [163, 193, 212],
    ...,
    [155, 179, 201],
    [159, 178, 197],
    [150, 176, 193]],

   [[171, 187, 205],
    [164, 184, 205],
    [162, 192, 211],
    ...,
    [147, 172, 192],
    [159, 179, 197],
    [152, 178, 193]],

   [[167, 193, 209],
    [170, 190, 202],
    [167, 184, 201],
    ...,
    [159, 180, 197],
    [156, 174, 197],
    [152, 178, 187]],

   ...,

   [[157, 178, 200],
    [162, 186, 206],
    [157, 177, 194],
    ...,
    [153, 173, 198],
    [147, 172, 193],
    [148, 175, 196]],

   [[160, 179, 204],
    [161, 182, 209],
    [161, 182, 193],
    ...,
    [150, 170, 195],
    [150, 174, 196],
    [148, 176, 196]],

   [[166, 183, 205],
    [156, 186, 196],
    [166, 180, 203],
    ...,
    [148, 172, 190],
    [151, 176, 196],
    [148, 175, 196]]], dtype=uint8)] - got shape [1, 128, 64, 3], but wanted [1].
...