Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:找不到可以处理输入的数据适配器:<;类别';非类型'>&书信电报;类别';非类型'&燃气轮机;在keras模型中,预测_Python_Tensorflow_Keras - Fatal编程技术网

Python ValueError:找不到可以处理输入的数据适配器:<;类别';非类型'>&书信电报;类别';非类型'&燃气轮机;在keras模型中,预测

Python ValueError:找不到可以处理输入的数据适配器:<;类别';非类型'>&书信电报;类别';非类型'&燃气轮机;在keras模型中,预测,python,tensorflow,keras,Python,Tensorflow,Keras,我在Keras制作了一个CNN模型,并将其保存为“model.h5”。它的输入形状为128x128。现在,我在一个新的文件中,试图用这个模型进行预测。以下是我到目前为止所做的: import keras from keras.preprocessing.image import load_img, img_to_array from keras.models import load_model import PIL img = load_img("img.jpg") i

我在Keras制作了一个CNN模型,并将其保存为“model.h5”。它的输入形状为128x128。现在,我在一个新的文件中,试图用这个模型进行预测。以下是我到目前为止所做的:

import keras
from keras.preprocessing.image import load_img, img_to_array 
from keras.models import load_model
import PIL

img = load_img("img.jpg")

img = img_to_array(img) 

img = img.resize((128, 128))

model = load_model('model.h5')

model.summary()

abc = model.predict(img)

print(abc)
这是我的错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-3-e23dbdb3fe22> in <module>()
     14 model.summary()
     15 
---> 16 abc = model.predict(img)
     17 
     18 print(abc)

3 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data_adapter.py in select_data_adapter(x, y)
    969         "Failed to find data adapter that can handle "
    970         "input: {}, {}".format(
--> 971             _type_name(x), _type_name(y)))
    972   elif len(adapter_cls) > 1:
    973     raise RuntimeError(

ValueError: Failed to find data adapter that can handle input: <class 'NoneType'>, <class 'NoneType'>
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
14.范本摘要()
15
--->16 abc=模型预测(img)
17
18印刷(abc)
3帧
/选择数据适配器(x,y)中的usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data\u adapter.py
969“找不到可处理的数据适配器”
970“输入:{},{}”。格式(
-->971(类型名称(x),(类型名称(y)))
972 elif透镜(适配器cls)>1:
973 raise运行时错误(
ValueError:找不到可以处理输入的数据适配器:,
任何帮助都将不胜感激


提前感谢

您正试图在此行之后调整img阵列的大小:

img = img_to_array(img) 
img=img到img阵列(img)

您可能正在尝试使用“重新调整数组形状”而不是“调整大小”。如果要调整加载的图像的大小,可能需要在将其转换为数组之前执行此操作,即在此行之前:

img = img_to_array(img) 
更新:

您试图在用于图像对象的数组上使用resize函数。因此,它返回的是NoneType,这反过来又导致了问题

另一件事是,您的模型需要一个4维向量(使用您提供的文件进行检查)作为输入,并且您正在以非类型传递它。此外,如果您希望PIL的resize函数将数组重塑为128*128,那么它仍然是一个二维向量,因此给出了使用resize而不是resize的错误

您可以通过以下更改使代码正常工作:

img = load_img("img.jpg")
img = img.resize((128, 128))
img = img_to_array(img) 

img = img.reshape( -1,128, 128,3)

print(img.shape)
model = load_model('hotdogs.h5')
model.summary()
abc = model.predict(img)

print(abc)
这里,使用“重塑”将输入数组转换为模型所需的4维数组


我希望这能有所帮助。我是StackOverflow的新手。如果你觉得这个答案有帮助的话,你能给我一票,这将是一个激励。从Tensorflow导入Keras为我解决了这个问题

from tensorflow.keras.preprocessing.image import load_img, img_to_array 
from tensorflow.keras.models import load_model

由于这取决于从计算机读取文件,因此您的问题不符合可复制标准。您应该验证
img
是否为128x128图像。如果您有Spyder,您可以转到变量资源管理器查看它是什么。其他选项可能是打印它或打印
img.shape
。我尝试了img.shape。它不起作用。然后我打印了img。它显示了一个不起作用的。它给出了一个形状错误。之前我没有形状错误。只有一个在predict中。这意味着它在成为阵列之前真的不需要调整大小。如果你能提供你的模型文件和图像文件,这样我就可以复制和本地化代码,帮助你更好。好的,但不是吗这里没有共享文件的选项。你可以上传到google drive并共享linkOk。这是一个分类热狗而不是热狗的模型。这是一个模型,你可以从互联网上获取任何热狗图片