带Keras的卷积层的输出尺寸

时间:2016-09-16 00:27:54

标签: machine-learning neural-network keras conv-neural-network

Keras教程提供了以下代码示例(带注释):

Public Class Form1
    Private WithEvents p As New System.Diagnostics.Process
    Public Event pEnd As EventHandler

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        p.StartInfo.FileName = "notepad.exe"
        p.EnableRaisingEvents = True
        p.Start()
    End Sub

    Private Sub p_Ended(ByVal sender As Object, ByVal e As System.EventArgs) Handles p.Exited
        DoYourPostExitFileProcessing()
    End Sub
End Class

我对输出大小感到困惑。它不应该创建10个时间步长,深度为64,宽度为32(步幅默认为1,无填充)?所以# apply a convolution 1d of length 3 to a sequence with 10 timesteps, # with 64 output filters model = Sequential() model.add(Convolution1D(64, 3, border_mode='same', input_shape=(10, 32))) # now model.output_shape == (None, 10, 64) 代替(10,32,64)

1 个答案:

答案 0 :(得分:2)

在k-dimensional维数卷积中,你将有一个过滤器,它将以某种方式保留第一个k维的结构,并通过用过滤器权重对它们进行卷积来压缩所有其他维度的信息。因此,网络中的每个过滤器基本上都有一个维度(3x32),并且最后一个维度(这个大小为32)的所有信息将被压缩为一个实数,并保留第一个维度。这就是为什么你有这样的形状的原因。

当你有彩色图像时,可以想象二维情况下的类似情况。您的输入将具有三维结构(picture_length,picture_width,color)。当您对前两个维度应用二维卷积时 - 有关颜色的所有信息都将被过滤器压扁,并且不会保留在输出结构中。和这里一样。