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

如何在tensorflow/keras中使用常数滤波器进行卷积

柴茂材
2023-03-14

在resnet的某个阶段,每个图像有6个特征,即每个示例的形状为1X8X8X6,我希望每个特征都包含4个大小为1x2x1x1的常量过滤器(DWT),步长为2,以便在下一层中获得24个特征,并将图像变为1X4X4X24。然而,我无法使用tf。nn。conv2d或tf。nn。卷积为此,conv2d说输入的第四维等于滤波器的第三维,但我如何才能做到这一点,我尝试了第一个滤波器,但即使这样也不起作用:

x_in = np.random.randn(1,8,8,6)
kernel_in = np.array([[[[1],[1]],[[1],[1]]]])
kernel_in.shape
x = tf.constant(x_in, dtype=tf.float32)
kernel = tf.constant(kernel_in, dtype=tf.float32)
tf.nn.convolution(x, kernel, strides=[1, 1, 1, 1], padding='VALID')

共有2个答案

许法
2023-03-14

一个简单的示例,介绍如何在Keras中为过滤器填充预定义值。TF2中的conv2d层:

model = models.Sequential()
# one 3x3 filter
model.add(layers.Conv2D(1, (3, 3), input_shape=(None, None, 1)))
# access to the target layer
layer = model.layers[0]
current_w, current_bias = layer.get_weights()  # see the current weights
new_w = tf.constant([[1,2, 3],
                     [4, 5, 6],
                     [7, 8, 9]])
new_w = tf.reshape(new_w, custom_w.shape)  # fix the shape
new_bias = tf.constant([0])
layer.set_weights([new_w, new_bias])
model.summary()
# let's see ..
tf.print(model.layers[0].get_weights())
徐欣德
2023-03-14

以这种方式尝试

x_in = np.random.randn(1,8,8,6) # [batch, in_height, in_width, in_channels]
kernel_in = np.ones((2,2,6,24)) # [filter_height, filter_width, in_channels, out_channels]

x = tf.constant(x_in, dtype=tf.float32)
kernel = tf.constant(kernel_in, dtype=tf.float32)

tf.nn.conv2d(x, kernel, strides=[1, 2, 2, 1], padding='VALID')
# <tf.Tensor: shape=(1, 4, 4, 24), dtype=float32, numpy=....>
 类似资料:
  • 我正在构建一个卷积网络图像分类的目的,我的网络受到VGG conv网络的启发,但我更改了每层的层数和过滤器,因为我的图像数据集非常简单。 然而,我想知道为什么VGG中的Fitler数总是2:64的幂- 我猜这是因为每个池将输出大小除以2 x 2,因此需要将过滤器的数量乘以2。 但我仍然想知道,这一选择背后的真正原因是什么;这是为了优化吗?分配计算是否更容易?我应该在我的人际网络中保持这种逻辑吗。

  • 该脚本可以在几分钟内在 CPU 上运行完。 结果示例: from __future__ import print_function import time import numpy as np from PIL import Image as pil_image from keras.preprocessing.image import save_img from keras import la

  • 如果我有一个图像是WxHx3(RGB),我该如何决定制作多大的过滤器遮罩?它是尺寸(W和H)的函数还是其他函数?第二个、第三个……的维度是怎样的。。。过滤器是否与第一个过滤器的尺寸进行比较?(如有任何具体指示,将不胜感激。) 我看到了以下内容,但它们没有回答这个问题。 卷积神经网络的维数 卷积神经网络:每个过滤器将覆盖多少像素? 如何确定用于图像分类的卷积神经网络的参数?

  • 我对神经网络和keras有点陌生。我有一些大小为6*7的图像,过滤器的大小为15。我想有几个过滤器,并在每个上分别训练一个卷积层,然后组合它们。我在这里看了一个例子: 此型号使用一个过滤器。有谁能给我一些关于如何修改模型以处理并行卷积层的提示吗。 谢啦

  • 我问了一个关于我上周建立的一个网络的问题,我重复了一些建议,这些建议导致我发现了一些问题。我回到这个项目,解决了所有问题,并在这个过程中了解了更多关于CNN的信息。现在我陷入了一个问题:我所有的权重都变成了巨大的负值,再加上输出图像中的RELU端总是完全是黑色的(这使得分类器无法完成它的工作)。 在两个标记的图像上: 这些数据被传递到一个两层网络、一个分类器(它自己获得100%)和一个单过滤器3×

  • 我正在从事一个语义分割项目,该项目涉及动态过滤器,以学习多尺度表示。 为了创建这些过滤器,我使用Unet主干并从瓶颈层提取特征图。特征图的大小为H x W X 512,其中H是特征图的高度,W是宽度,512是通道(图)的数量。 这些特征被传递到1x1卷积,以将滤波器的数量减少到H X W X 128,并且这些特征也被传递到自适应池层,以将H X W X 512减少到k X k X 512,其中k是