通过卷积降低一维向量的维度

在卷积神经网络(CNN)中,如果输出是一个一维向量(例如,预对数几率层),如何仅使用卷积将其维度降低到指定大小?

如何推导出过滤器尺寸/感受野来完成这一任务?

我知道可以通过在网络末端堆叠一个全连接层来实现这一点,但这看起来并不那么优雅。


回答:

使用最初在全卷积网络论文中提出的想法,后来在Inception网络中广泛使用,即应用卷积进行维度降低。

诀窍是使用较少数量的过滤器进行单位filter的卷积(对于2-D卷积是1x1,对于3-D卷积是1x1x1,依此类推)。如今,这个技巧在非常深的卷积网络中被广泛应用以节省计算,因此你也可以在卷积层之前使用它。在你的问题中,输出张量是一维的(除了批次大小),所以使用1的内核大小进行1-D卷积。

以下是tensorflow中的代码,将张量长度从64减少到32:

                              # `x` shape:  [batch, length] = [?, 64]
layer = tf.expand_dims(x, 2)  # reshape to: [batch, channels, 1] = [?, 64, 1]
output = tf.layers.conv1d(layer, filters=32, kernel_size=1,                          strides=1, padding='valid',                          data_format='channels_first')                              # new shape:  [batch, filters, 1] = [?, 32, 1]
output = tf.squeeze(output)   # reshape to: [batch, length] = [?, 32]

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注