我正在尝试使用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 /
如果有任何我需要澄清的内容,请告诉我。我可以发布全部代码,但至少在我看来,大多数代码都无关紧要。
感谢任何愿意花时间帮助我的人!
答案 0 :(得分:0)
您使用了错误的功能。您正在使用的是卷积 op ,它接受输入和滤波张量并执行卷积。这样,第二个参数应该是滤波器张量本身。您正在尝试通过11
作为滤波器张量,这显然没有意义。我怀疑您想使用的是tf.keras.layers.Conv2D
,它会根据某些规范创建过滤器,然后还要包装卷积运算。试试这个:
conv_layer = tf.layers.Conv2D(1, 11, 4)
result = conv_layer(image)
这将创建一个11x11过滤器和一个跨度为4的卷积运算;第二行然后调用op。我将1
用作过滤器的数量(第一个参数),因为我不知道您到底要做什么。