如何动态选择卷积步幅?
使用占位符似乎不起作用:
s = tf.placeholder(np.int32)
image = tf.placeholder(np.float32, [None, 3, 32, 32])
tf.layers.conv2d(image,
filters=32,
kernel_size=[3, 3],
strides=[s, s],
padding='same',
data_format='channels_first')
Run Code Online (Sandbox Code Playgroud)
这给了一个TypeError.
类似的困难出现与pool_size和strides做池时.
不幸的是,Tensorflow不允许将Tensors传递给定义conv2d.我使用的方法基本上conv2d是以1的步幅运行,然后用必要的步幅对结果进行切片.可能不是最佳方法,但它起作用并且tf.strided_slice可以使用张量.所以在你的情况下它会是这样的:
s = tf.placeholder(np.int32,[4])
image = tf.placeholder(np.float32, [None, 3, 32, 32])
convoluted = tf.layers.conv2d(image,
filters=32,
kernel_size=[3, 3],
strides=[1,1],
padding='same',
data_format='channels_first')
result = tf.strided_slice(convoluted,
[0,0,0,0],
tf.shape(convoluted),
s)
Run Code Online (Sandbox Code Playgroud)
然后,您可以在运行期间将4个步幅大小传递给s,其中每个条目对应于回旋输入的相应维度中的步幅.
| 归档时间: |
|
| 查看次数: |
263 次 |
| 最近记录: |