numpy model.predict() 不起作用

Posted

技术标签:

【中文标题】numpy model.predict() 不起作用【英文标题】:numpy model.predict() doesn't function 【发布时间】:2021-06-07 11:46:24 【问题描述】:

您好,我是 Numpy、Keras 和 *** 的新手,我有一个问题,我在循环中

        roi = roi.reshape(28,28)
        roi = (np.linalg.norm(roi))
        probas = model.predict(roi)[0]
        #number = np.argmax(probas[i])
        #i+=1

而且我确信我的重塑工作 它给了我

ValueError                                Traceback (most recent call last)

<ipython-input-385-3ee67baef91d> in <module>()
----> 1 detect_digits("/content/drive/MyDrive/Colab Notebooks/photo1.jpg", network)

3 frames

<ipython-input-384-79a58876db55> in detect_digits(image_name, model)
    49         # 2. Use 'model' to make a prediction
    50 
---> 51         probas = model.predict(roi)[0]
    52 
    53         # 3. Based on the prediction, determine the class (a number between 0 and 9)

/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py in predict(self, x, batch_size, verbose, steps, callbacks, max_queue_size, workers, use_multiprocessing)
  1606           use_multiprocessing=use_multiprocessing,
  1607           model=self,
-> 1608           steps_per_execution=self._steps_per_execution)
  1609 
  1610       # Container that configures and calls `tf.keras.Callback`s.

/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/data_adapter.py in __init__(self, x, y, sample_weight, batch_size, steps_per_epoch, initial_epoch, epochs, shuffle, class_weight, max_queue_size, workers, use_multiprocessing, model, steps_per_execution)
  1097       self._steps_per_execution_value = steps_per_execution.numpy().item()
  1098 
-> 1099     adapter_cls = select_data_adapter(x, y)
  1100     self._adapter = adapter_cls(
  1101         x,

/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/data_adapter.py in select_data_adapter(x, y)
   962         "Failed to find data adapter that can handle "
   963         "input: , ".format(
--> 964             _type_name(x), _type_name(y)))
   965   elif len(adapter_cls) > 1:
   966     raise RuntimeError(

ValueError: Failed to find data adapter that can handle input: <class 'numpy.float32'>, <class 'NoneType'>

谁能解释一下我真的不明白问题出在哪里 谢谢你的回答

【问题讨论】:

嗨。你的型号是什么?如果是 Keras 模型,你的输入 roi 必须是 InputKeras 类型 嗨,“模型”的模型是network = models.Sequential() network.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,))) network.add(layers.Dense(10, activation='softmax')) 你试过这个吗(不确定但可能是一个解决方案)? model.predict(np.array(roi)) 我刚试过,我的答案是:IndexError: list index out of range 显示回溯 - 即完整的错误。到目前为止,我们只是猜测错误发生在哪里(显然你也在猜测)。更具体地了解进口。 model 不是 numpy 创建的。这是keras 中的东西(我猜!)。 【参考方案1】:

我解决了我的问题,解决方案是:

roi = roi.reshape((1,28*28))
min = np.min(roi)
max = np.max(roi)
roi = (roi - min) * (1.0/(max - min))
probas = model.predict(roi)[0]
number = np.argmax(probas)

我正在将我的矩阵重塑为一个向量,这就是我的代码无法正常工作的原因,非常感谢你的帮助!

【讨论】:

以上是关于numpy model.predict() 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥 TF Keras 推理方式比 Numpy 操作慢?

keras 中 model.predict() 和 model.predict_generator() 之间的预测差异

model.predict() 和 model.fit() 做啥?

model.evaluate() 和 model.predict() 的 F1 不同

Keras model.evaluate() 和 model.predict() 有啥区别?

model.predict() 没有产生预期的标签?