当前位置: 首页 > 知识库问答 >
问题:

上载图像以使用keras进行预测时出现错误消息

东门晟
2023-03-14

上传图像做预测时出错html" target="_blank">消息

ValueError:层block1\u conv1的输入0与层不兼容:输入形状的ed轴-1应具有值3,但接收到带有形状的输入[无,2 24,224,4]

代码处理/图像预处理

def model\U predict(img,模型):img=img。调整大小((224224))

# Preprocessing the image
x = image.img_to_array(img)
x = np.true_divide(x, 255)
x = np.expand_dims(x, axis=0)

# Be careful how your trained model deals with the input
# otherwise, it won't make correct prediction!
x = preprocess_input(x, mode='tf')

preds = model.predict(x)
return preds

培训课程的产出

flow/compiler/xla/service/service.cc:176]StreamExecitor设备(0): Host, Def ault版本编译模型...模型有14716227个参数模型:"模型"

input\u 1(InputLayer)[(无,224,224,3)]0

block1\u conv1(Conv2D)(无、224、224、64)1792

block1_conv2(Conv2D)(无,224, 224, 64) 36928

block1\u池(MaxPoolig2D)(无、112、112、64)0

block2\u conv1(Conv2D)(无、112、112、128)73856

block2\u conv2(Conv2D)(无、112、112、128)147584

block2_pool(MaxPooling2D)(无,56, 56, 128) 0

block3_conv1(Conv2D)(无,56, 56, 256) 295168

block3_conv2(Conv2D)(无,56, 56, 256) 590080

block3_conv3(Conv2D)(无,56, 56, 256) 590080

block3\u池(MaxPoolig2D)(无、28、28、256)0

block4_conv1(Conv2D)(无,28, 28, 512) 1180160

block4\u conv2(Conv2D)(无、28、28、512)2359808

block4\u conv3(Conv2D)(无、28、28、512)2359808

block4\u池(MaxPoolig2D)(无、14、14、512)0

block5\u conv1(Conv2D)(无、14、14、512)2359808

block5\u conv2(Conv2D)(无、14、14、512)2359808

block5\u conv3(Conv2D)(无、14、14、512)2359808

block5\u池(MaxPoolig2D)(无、7、7、512)0

tf_op_layer_Mean(TensorFlow[(无,512)] 0

Dropout(Dropout)(无,512)0

共有2个答案

澹台欣怿
2023-03-14

因为您尝试为模型提供4通道图像。请在将图像转换为阵列后使用firts 3通道。

Preprocessing the image
x = image.img_to_array(img)
x = img[:, :, :3]
x = np.true_divide(x, 255)
x = np.expand_dims(x, axis=0)
常炯
2023-03-14

如果要使用batch training and testing部分,您应该明确地签出ImageDataGenerator。它不仅可以帮助您创建批次,还可以帮助您进行图像增强(艺术使您的模型更加健壮)。它为您提供了一个参数,如“重新缩放”(rescale)和“预处理”(preprocess\u)函数,您可以轻松地将其设置为“重新缩放”(rescale)为1/255。,preprocessing\u函数=preprocess\u输入,

您的代码在通道部分有问题。如果您使用的是上一次使用的通道,则它已经接受了关于3个通道数据的培训(批次、宽度、高度,3),并且当您试图通过数据进行测试时,它显示错误。

在这种情况下,您应该删除alpha通道。请检查ImageData生成器。所有flow_from_dataframeflow_from_directoryflow中都有一个参数,作为color_mode='rgb这是默认的。

否则,您可以按以下方式打开图像:

from PIL import Image
img = Image.open(img_path).convert('RGB') # get RGB PNG image
img = np.array(img) # Convert to numpy array
img = np.expand_dims(x, axis=0) # add an extra dimension for batch

然后,您可以应用预处理功能

img = preprocess_input(img, mode='tf')

preds = model.predict(img)
return preds

注意:如果要使用单个图像,则应使用numpy的重塑或展开dims方法创建额外的批处理轴,因为Keras总是需要批处理。

 类似资料:
  • 本文向大家介绍Python-使用keras进行图像分类,包括了Python-使用keras进行图像分类的使用技巧和注意事项,需要的朋友参考一下 图像分类是一种使用某种方法将图像分类为各自类别的方法- 从头开始训练小型网络 使用VGG16微调模型的顶层 示例

  • 问题内容: 我有一个使用Keras和Tensorflow作为后端训练的模型,但是现在我需要将我的模型转换为特定应用程序的张量流图。我尝试执行此操作并进行了预测以确保其正常工作,但是与从model.predict()收集的结果进行比较时,我得到了非常不同的值。例如: 返回: keras预测的值是正确的,但tf图的结果却不正确。 如果它有助于了解最终的预期应用程序,那么我将使用tf.gradients

  • 我得到这样的错误消息:线程“awt-eventqueue-0”org.apache.jena.riot.riotexception:[line:1,col:1]Prolog中不允许内容。当我试图通过NetBeans用java加载本地本体文件时?请问这是什么意思,我该怎么做?

  • 本文向大家介绍使用Keras预训练模型ResNet50进行图像分类方式,包括了使用Keras预训练模型ResNet50进行图像分类方式的使用技巧和注意事项,需要的朋友参考一下 Keras提供了一些用ImageNet训练过的模型:Xception,VGG16,VGG19,ResNet50,InceptionV3。在使用这些模型的时候,有一个参数include_top表示是否包含模型顶部的全连接层,如

  • 我正在尝试安装yii2alpha。下载composer并添加后运行以下命令时 去composer.json. 我得到以下错误。 问题1-在任何版本中都找不到请求的包最低稳定性,包名中可能有输入错误。 问题2-在任何版本中都找不到请求的包yiisoft/yii2 composer,包名中可能有输入错误。 问题3-在任何版本中都找不到请求的包yiisoft/yii2框架,包名中可能有输入错误。 潜在原

  • 我有一个类(A),它包含另一个类(B)的自动生成依赖项,而另一个类(B)又具有另一个类C的自动生成依赖项。 我正在尝试使用Mockito编写测试用例,并对依赖项使用spy注释。我在监视C类时遇到空指针错误。 如何从A类执行此单元测试?