试图获得单个图像的卷积

时间:2019-07-03 19:27:30

标签: python opencv tensorflow convolution tf.keras

我正在尝试使用tf.keras.backend.conv2d获得对图像进行一次卷积的结果。

输入的规格为227像素乘227像素,通道大小为3(RGB图像)。

我要使用的过滤器大小为11x11,跨度为4。不包括零填充。

我不喜欢使用tf.keras.backend.conv2d的想法。只要我得到上面指定要求的卷积图像,我就愿意更改方法/软件包。

这是我要制作的代码块:

import tensorflow as tf
from tensorflow import keras
import cv2

image = cv2.imread('pic.jpg')

tf.keras.backend.conv2d(image,11,strides=4,data_format="channels_last",dilation_rate=(1))

我收到此错误消息

  

InvalidArgumentError:无法计算Conv2D,因为输入1(从零开始)应该是双张量,但是是int32张量[Op:Conv2D]名称:convolution /

如果有任何我需要澄清的内容,请告诉我。我可以发布全部代码,但至少在我看来,大多数代码都无关紧要。

感谢任何愿意花时间帮助我的人!

1 个答案:

答案 0 :(得分:0)

您使用了错误的功能。您正在使用的是卷积 op ,它接受输入和滤波张量并执行卷积。这样,第二个参数应该是滤波器张量本身。您正在尝试通过11作为滤波器张量,这显然没有意义。我怀疑您想使用的是tf.keras.layers.Conv2D,它会根据某些规范创建过滤器,然后还要包装卷积运算。试试这个:

conv_layer = tf.layers.Conv2D(1, 11, 4)
result = conv_layer(image)

这将创建一个11x11过滤器和一个跨度为4的卷积运算;第二行然后调用op。我将1用作过滤器的数量(第一个参数),因为我不知道您到底要做什么。