Tensorflow Keras Conv2D多个过滤器

米娜·加布里埃尔(Mina Gabriel)

如果我有一个1X2X3X3输入(我首先使用通道)并且权重为2X2X2X2,则我不太了解Keras Conv2D输出,如下图所示,有人可以帮助我了解输出特征图,滤波器如何对输入进行卷积得到输出?

在此处输入图片说明

这是我的代码:

import os

import tensorflow as to
import tensorflow.python.util.deprecation as deprecation
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Conv1D, Conv2D


data = tf.range(3 * 3 * 2)
print(data)
data = tf.reshape(data, (1, 2, 3, 3))
print(data)

print('-------')
e = tf.range(2 * 2 * 2 * 2)
print(e)
e = tf.reshape(e, (2, 2, 2, 2))
print(e)
print('-------')

model = Sequential()
model.add(Conv2D(2, (2, 2), input_shape=(2, 3, 3), data_format='channels_first'))

weights = [e, tf.constant([0.0,0.0])]
model.set_weights(weights)

print(model.get_weights())

yhat = model.predict(data)
print(yhat.shape)
print(yhat)

在此处输入图片说明

Jdehesa

如果在查看每个操作员时更改视角,将更容易理解。您有一个形状为1x2x3x3的输入。由于您正在使用data_format='channels_first',这意味着您有1个具有2个通道的图像,尺寸为3x3。您可以像这样可视化该图像:

| [ 0  9] [ 1 10] [ 2 11] |
| [ 3 12] [ 4 13] [ 5 14] |
| [ 6 15] [ 7 16] [ 8 17] |

This is your 3x3 image where each "pixel" has two channels. The filters shape is 2x2x2x2, meaning a 2x2 filter going from 2 channels to 2 channels. This can be represented like this:

|  0  1 |  |  4   5 |
|  2  3 |  |  6   7 |

|  8  9 |  | 12  13 |
| 10 11 |  | 14  15 |

This is your 2x2 filter, where each filter position contains a 2x2 matrix. The result, with shape 1x2x2x2, is 1 image with 2 channels and size 2x2:

| [456 508] [512 571] |
| [624 700] [680 764] |

To understand how the operation works, I will walk through the computation of the first "pixel" of the output, [456 508]. This output is computed from the first 2x2 window in the input image:

| [ 0  9] [ 1 10] |
| [ 3 12] [ 4 13] |

What you have to do is take each of the "pixels" (the two-element vectors) and multiply them by the matrix in the corresponding position in the filter:

# Top-left
          |  0  1 |
[ 0  9] x |       | = [18 27]
          |  2  3 |
# Top-right
          |  4  5 |
[ 1 10] x |       | = [64 75]
          |  6  7 |
# Bottom-left
          |  8  9 |
[ 3 12] x |       | = [144 159]
          | 10 11 |
# Bottom-right
          | 12 13 |
[ 4 13] x |       | = [230 247]
          | 14 15 |

Then, you simply add all the resulting vectors:

[18 27] + [64 75] + [144 159] + [230 247] = [456 508]

其余输出以相同的方式计算,例如,[512 571]通过将滤镜应用于下一个图像窗口来计算输出

| [ 1 10] [ 2 11] |
| [ 4 13] [ 5 14] |

等等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有padding ='SAME'的Tensorflow / Keras Conv2D层的行为异常

来自分类Dev

在 tensorflow Keras 中将图像拟合到 Conv2D 层时出错

来自分类Dev

Keras Tensorflow多个错误

来自分类Dev

TensorFlow 2.0如何从tf.keras.layers层获取可训练变量,例如Conv2D或Dense

来自分类Dev

Keras:过度拟合的Conv2D

来自分类Dev

在 keras 或 tensorflow 中定义多个不同的 lstm

来自分类Dev

Conv2D keras中的稳压器

来自分类Dev

Keras Conv2D和LSTM的尺寸问题

来自分类Dev

keras Conv2d 权重矩阵大小反转

来自分类Dev

在TensorFlow中编写类似Conv2D的操作

来自分类Dev

tensorflow conv2d参数数量

来自分类Dev

tensorflow中conv2d的顺序输出是什么?

来自分类Dev

在 Tensorflow 中查找 conv2d 层的权重

来自分类Dev

Tensorflow 2.0:从tensorflow keras导入

来自分类Dev

使用CPU的“ Keras后端+ Tensorflow”和“来自Tensorflow的Keras”之间有什么区别(在Tensorflow 2.x中)

来自分类Dev

创建可计算2D DCT的Keras / Tensorflow层

来自分类Dev

tensorflow keras 评估函数

来自分类Dev

如何在keras中将Conv1D的输出与Conv2D的输出合并

来自分类Dev

如何在TensorFlow 2中获得Keras张量的值?

来自分类Dev

使用Tensorflow 2的Keras Functional API时传递`training = true`

来自分类Dev

tensorflow 2个keras洗牌每行梯度问题

来自分类Dev

Keras和TensorFlow Hub版本的MobileNetV2之间的区别

来自分类Dev

keras tensorflow2获得训练数据的结果

来自分类Dev

为什么您必须重塑Keras / Tensorflow 2中的输入?

来自分类Dev

在tensorflow 2中从零开始训练keras应用

来自分类Dev

conv2d是否使用随机过滤器?这样对NN有好处吗?

来自分类Dev

在tensorflow 2中将keras功能模型转换为keras类

来自分类Dev

CNN Keras:ValueError:由 'conv2d 的 2 减去 3 引起的负尺寸大小

来自分类Dev

了解Keras Conv2D层中的参数数量

Related 相关文章

  1. 1

    具有padding ='SAME'的Tensorflow / Keras Conv2D层的行为异常

  2. 2

    在 tensorflow Keras 中将图像拟合到 Conv2D 层时出错

  3. 3

    Keras Tensorflow多个错误

  4. 4

    TensorFlow 2.0如何从tf.keras.layers层获取可训练变量,例如Conv2D或Dense

  5. 5

    Keras:过度拟合的Conv2D

  6. 6

    在 keras 或 tensorflow 中定义多个不同的 lstm

  7. 7

    Conv2D keras中的稳压器

  8. 8

    Keras Conv2D和LSTM的尺寸问题

  9. 9

    keras Conv2d 权重矩阵大小反转

  10. 10

    在TensorFlow中编写类似Conv2D的操作

  11. 11

    tensorflow conv2d参数数量

  12. 12

    tensorflow中conv2d的顺序输出是什么?

  13. 13

    在 Tensorflow 中查找 conv2d 层的权重

  14. 14

    Tensorflow 2.0:从tensorflow keras导入

  15. 15

    使用CPU的“ Keras后端+ Tensorflow”和“来自Tensorflow的Keras”之间有什么区别(在Tensorflow 2.x中)

  16. 16

    创建可计算2D DCT的Keras / Tensorflow层

  17. 17

    tensorflow keras 评估函数

  18. 18

    如何在keras中将Conv1D的输出与Conv2D的输出合并

  19. 19

    如何在TensorFlow 2中获得Keras张量的值?

  20. 20

    使用Tensorflow 2的Keras Functional API时传递`training = true`

  21. 21

    tensorflow 2个keras洗牌每行梯度问题

  22. 22

    Keras和TensorFlow Hub版本的MobileNetV2之间的区别

  23. 23

    keras tensorflow2获得训练数据的结果

  24. 24

    为什么您必须重塑Keras / Tensorflow 2中的输入?

  25. 25

    在tensorflow 2中从零开始训练keras应用

  26. 26

    conv2d是否使用随机过滤器?这样对NN有好处吗?

  27. 27

    在tensorflow 2中将keras功能模型转换为keras类

  28. 28

    CNN Keras:ValueError:由 'conv2d 的 2 减去 3 引起的负尺寸大小

  29. 29

    了解Keras Conv2D层中的参数数量

热门标签

归档