ValueError: Input 0 is incompatible with layer mobilenetv2_1.00_224: expected shape=(None, 224, 224, 3), found shape=(None, 224, 224, 4)

时间:2021-06-19 16:27:58

标签: python python-3.x tensorflow keras tensorflow2.0

我在 tensorflow 中工作并产生错误。当我使用 web url 时,代码运行良好 image_path = tf.keras.utils.get_file('YellowLabradorLooking_new.jpg', 'https://storage.googleapis.com/download.tensorflow.org/example_images/YellowLabradorLooking_new.jpg') 然后我将 web url 更改为系统 url,然后它会生成一些其他错误,然后解决该错误,但随后会生成另一个错误。 [系统url在下面的代码中]:

def preprocess(image):
  image = tf.cast(image, tf.float32)
  image = tf.image.resize(image, (224, 224))
  image = tf.keras.applications.mobilenet_v2.preprocess_input(image)
  image = image[None, ...]
  return image

image_path = tf.keras.utils.get_file('Screenshot_12.png', 'file:///C:/gsData/venv/django-ai/src/filters/Screenshot_12.png')
image_raw = tf.io.read_file(image_path)
image = tf.image.decode_image(image_raw)

image = preprocess(image)

错误是这样的:

(django-ai) C:\gsData\venv\django-ai\src>python filters/adversarial_fgsm.py
2021-06-19 21:32:38.788313: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
2021-06-19 21:32:38.788956: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
2021-06-19 21:32:44.739562: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'nvcuda.dll'; dlerror: nvcuda.dll not found
2021-06-19 21:32:44.740063: W tensorflow/stream_executor/cuda/cuda_driver.cc:326] failed call to cuInit: UNKNOWN ERROR (303)
2021-06-19 21:32:44.746311: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:169] retrieving CUDA diagnostic information for host: 
DESKTOP-CGO5P3S
2021-06-19 21:32:44.747051: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:176] hostname: DESKTOP-CGO5P3S
2021-06-19 21:32:44.748533: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
/kyle/09-09-201315-47-571378756077.jpg
09-09-201315-47-571378756077.jpg
2021-06-19 21:32:46.377404: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:176] None of the MLIR Optimization Passes are enabled (registered 2)
Traceback (most recent call last):
  File "C:\gsData\venv\django-ai\src\filters\adversarial_fgsm.py", line 48, in <module>
    image_probs = pretrained_model.predict(image)
  File "C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1727, in predict
    tmp_batch_outputs = self.predict_function(iterator)
  File "C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\eager\def_function.py", line 889, in __call__
    result = self._call(*args, **kwds)
  File "C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\eager\def_function.py", line 933, in _call
    self._initialize(args, kwds, add_initializers_to=initializers)
  File "C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\eager\def_function.py", line 763, in _initialize
    self._stateful_fn._get_concrete_function_internal_garbage_collected(  # pylint: disable=protected-access
  File "C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\eager\function.py", line 3050, in _get_concrete_function_internal_garbage_collected
    graph_function, _ = self._maybe_define_function(args, kwargs)
  File "C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\eager\function.py", line 3444, in _maybe_define_function
    graph_function = self._create_graph_function(args, kwargs)
  File "C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\eager\function.py", line 3279, in _create_graph_function
    func_graph_module.func_graph_from_py_func(
  File "C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\framework\func_graph.py", line 999, in func_graph_from_py_func     
    func_outputs = python_func(*func_args, **func_kwargs)
  File "C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\eager\def_function.py", line 672, in wrapped_fn
    out = weak_wrapped_fn().__wrapped__(*args, **kwds)
  File "C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\framework\func_graph.py", line 986, in wrapper
    raise e.ag_error_metadata.to_exception(e)
ValueError: in user code:

    C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\keras\engine\training.py:1569 predict_function  *
        return step_function(self, iterator)
    C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\keras\engine\training.py:1559 step_function  **
        outputs = model.distribute_strategy.run(run_step, args=(data,))
    C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:1285 run
        return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
    C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2833 call_for_each_replica
        return self._call_for_each_replica(fn, args, kwargs)
    C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:3608 _call_for_each_replica
        return fn(*args, **kwargs)
    C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\keras\engine\training.py:1552 run_step  **
        outputs = model.predict_step(data)
    C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\keras\engine\training.py:1525 predict_step
        return self(x, training=False)
    C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\keras\engine\base_layer.py:1013 __call__
        input_spec.assert_input_compatibility(self.input_spec, inputs, self.name)
    C:\gsData\venv\django-ai\lib\site-packages\tensorflow\python\keras\engine\input_spec.py:267 assert_input_compatibility
        raise ValueError('Input ' + str(input_index) +

    ValueError: Input 0 is incompatible with layer mobilenetv2_1.00_224: expected shape=(None, 224, 224, 3), found shape=(None, 224, 224, 4)

1 个答案:

答案 0 :(得分:-1)

您的图片是 png,因此它可能有 4 个频道 (RGBA),而您的网络需要 3 个频道。您需要摆脱第 4 个频道。

image = image[:,:,:3]