【发布时间】:2018-11-04 23:49:47
【问题描述】:
我有 3 个 5x5 过滤器,我想在灰度图像(形状 [nx,ny,1])输入上进行卷积。我已经预设了这些 5x5 过滤器中的每一个都需要的硬编码值,我不希望它们被我的模型“学习”,而只是一个恒定的操作。
我如何实现这一目标?
我正在研究使用 tf.nn.conv2d() 并且它说它的过滤器需要具有 [高度、宽度、输入、输出] 的形状,所以我尝试使用 tf.constant() 为我的形状为 [5,5,1,3] 的过滤器(因此 3 个形状为 5x5 的过滤器应用于具有 1 个通道的输入),但 tf.constant() 的结果看起来不正确。结果是这样的:
[[[[ -5 7 -12]]
[[ 21 0 2]]
[[ -6 9 -6]]
[[ 2 -2 8]]
[[-6 4 -1]]]
[[[ 2 -6 8]]
[[ -6 2 -1]]
[[ 2 -2 2]]
[[ -1 1 5]]
[[ 4 3 2]]]
...etc
它看起来不像 3 个 5x5 过滤器的形状。
如果我使用形状为 [1,3,5,5] 的 tf.constant(),我会得到:
[[[[ -5 7 -12 21 0]
[ 2 -6 9 -6 2]
[ -2 8 -6 4 -1]
[ 2 -6 8 -6 2]
[ -1 2 -2 2 -1]]
[[ 1 5 4 3 2]
[ 4 0 -2 0 4]
[ 2 -1 7 -3 5]
[ -1 0 -1 0 -1]
[ 5 0 9 0 5]]
...etc
确实看起来像 5x5 过滤器,但它不是 tf.nn.conv2d() 采用的正确形状
所以我对这种不匹配感到困惑,不知道该怎么做才是正确的。
【问题讨论】:
-
不用担心张量显示出来的样子,只要符合TensorFlow的期望就行了
标签: tensorflow machine-learning conv-neural-network convolution tensor