- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 WaveNet ,扩张卷积用于增加上面层的感受野。
从图中,您可以看到内核大小为 2 且幂为 2 的扩张率的扩张卷积层创建了一个树状的感受野结构。我试图(非常简单地)在 Keras 中复制上述内容。
import tensorflow.keras as keras
nn = input_layer = keras.layers.Input(shape=(200, 2))
nn = keras.layers.Conv1D(5, 5, padding='causal', dilation_rate=2)(nn)
nn = keras.layers.Conv1D(5, 5, padding='causal', dilation_rate=4)(nn)
nn = keras.layers.Dense(1)(nn)
model = keras.Model(input_layer, nn)
opt = keras.optimizers.Adam(lr=0.001)
model.compile(loss='mse', optimizer=opt)
model.summary()
和输出:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_4 (InputLayer) [(None, 200, 2)] 0
_________________________________________________________________
conv1d_5 (Conv1D) (None, 200, 5) 55
_________________________________________________________________
conv1d_6 (Conv1D) (None, 200, 5) 130
_________________________________________________________________
dense_2 (Dense) (None, 200, 1) 6
=================================================================
Total params: 191
Trainable params: 191
Non-trainable params: 0
_________________________________________________________________
我在期待
axis=1
每次收缩后
conv1d
图层,类似于gif。为什么不是这样?
最佳答案
模型摘要符合预期。正如您所注意到的,使用扩张卷积会导致感受野增加。然而,扩张卷积实际上保留了我们输入图像/激活的输出形状,因为我们只是在改变卷积核。常规内核可能如下所示
0 1 0
1 1 1
0 1 0
膨胀率为 2 的内核将在我们原始内核中的每个条目之间添加零,如下所示。
0 0 1 0 0
0 0 0 0 0
1 0 1 0 1
0 0 0 0 0
0 0 1 0 0
事实上,您可以看到我们的原始内核也是一个膨胀内核,其膨胀率为 1。增加感受野的替代方法导致输入图像的缩小。最大池化和跨步卷积是 2 种替代方法。
import tensorflow.keras as keras
nn = input_layer = keras.layers.Input(shape=(200, 2))
nn = keras.layers.Conv1D(5, 5, padding='causal', strides=2)(nn)
nn = keras.layers.Conv1D(5, 5, padding='causal', strides=4)(nn)
nn = keras.layers.Dense(1)(nn)
model = keras.Model(input_layer, nn)
opt = keras.optimizers.Adam(lr=0.001)
model.compile(loss='mse', optimizer=opt)
model.summary()
Model: "model_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_2 (InputLayer) [(None, 200, 2)] 0
_________________________________________________________________
conv1d_3 (Conv1D) (None, 100, 5) 55
_________________________________________________________________
conv1d_4 (Conv1D) (None, 25, 5) 130
_________________________________________________________________
dense_1 (Dense) (None, 25, 1) 6
=================================================================
Total params: 191
Trainable params: 191
Non-trainable params: 0
_________________________________________________________________
总结扩张卷积只是增加模型感受野的另一种方法。它的好处是可以保留输入图像的输出形状。
关于tensorflow - 在 Keras 中使用扩张卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63073760/
所以通常情况下,最小/最大过滤器是通过使用四个 for 循环实现的,效率非常低。 for( index1 val) ? pixel : val; // max }
Closed. This question needs details or clarity。它当前不接受答案。 想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。 2
我有一个函数通过假设 anchor 是左上角或矩阵的第一个元素来执行膨胀/腐 eclipse 函数。 [1 1 1] [1 1 1] [1 1 1] 我有其他函数通过假设 anchor 是矩阵的中点来
我想平滑二值化图像的轮廓,认为腐 eclipse 是最好的方法。我知道正常的工作方式是使用 cvDilate(src, dst, 0, iter);其中 0 是 3x3 矩阵。 问题是 3x3 矩阵在
书中指出,在图像处理中,膨胀用于“加厚”二值图像中的对象。此外,作者在示例中使用了 imdilate 来修复或加粗扫描文档中的损坏文本。 imdilate 填补了扫描质量不佳的文本文档中的空白和裂缝。
我是一名优秀的程序员,十分优秀!