【问题标题】:keras layers tutorial and sampleskeras 图层教程和示例
【发布时间】:2017-10-16 04:13:04
【问题描述】:

我正在尝试编写和学习不同的神经网络模型。我对输入维度有很多复杂性。我正在寻找一些教程,显示层的差异以及如何为每个层设置输入和输出。

【问题讨论】:

    标签: python neural-network keras conv-neural-network keras-layer


    【解决方案1】:

    Keras documentation 向您显示每一层所期望的所有input_shapes。

    在 Keras 中,您会看到以下形式的输入形状:

    • input_shape 由用户分层定义
    • 摘要和其他中显示的形状
    • 阵列形状
    • 张量形状

    用户定义的输入形状和传递给Reshape层的形状:

    定义的输入形状将忽略批量大小,它只需要单个数据样本的大小。

    例如,当您定义Dense 层时,您将其input_shape 声明为(10,),这意味着它需要十个数值作为输入。

    keras 显示的一般形状:

    这些将有一个None 作为第一个维度。这表示您用于训练的批次的大小。批处理是具有许多数据样本的数组。由于批大小是免费的,并且仅在您实际通过批进行训练时才定义,因此 Keras 将其显示为 None

    在那个 Dense 层中,Keras 会将(None, 10) 显示为输入形状。

    阵列形状:

    在训练、预测等过程中,当您实际上有一个批次及其大小时,keras 将在错误消息中显示批次的实际形状,这将是(BatchSize,...其他维度...)。

    对于我们的Dense(10),假设您传递了一个包含 300 个样本的批次进行训练,那么 keras 会显示包含形状 (300,10) 的错误消息

    张量形状:

    当您创建Lambda 层或自定义层以及创建自定义损失函数时,张量形状将出现在更高级的用法中。

    张量形状将遵循将批量大小作为第一维度的想法。因此,请记住,无论何时您直接使用张量,它们的形状都是 (BatchSize, ...other dimensions...)

    一些最常见的图层及其输入形状:

    现在您知道这些区别了,我将继续使用下面带有None 的表单。定义input_shape时记得忽略None部分。

    密集

    密集层通常采用单个值,而不是数组作为输入,因此,其输入形状为:(None, AnyNumberOfInputValues)

    输出将类似:(None, NumberOfNeuronsInThisLayer)

    Conv1D

    只有一维的卷积层。使用卷积时,想法是要有通道。

    想象一个声音文件,它包含两个声道,左声道和右声道。每个通道都是一个与波形对应的值数组。

    Keras 为您提供channels_firstchannels_last 选项,这会改变层的输入和输出:

    • 频道优先:(None, channels, length)
    • 频道最后:(None, length, channels)

    输出也遵循“channels_first/channels_last”设置,如下所示:(None, NumberOfFilters, ResultingLength) - 通道优先

    默认设置为“channels_last”,可以在每一层或者keras.json文件中定义

    Conv2D:

    与 Conv1D 相同的想法,使用通道,先使用通道或最后使用通道。但是现在,它有两个维度,比如图像,每个通道都与红色、绿色、蓝色相比。

    • 频道优先:(None, channels, pixelsX, pixelsY)
    • 频道最后:(None, pixelsX, pixelsY, channels)

    输出遵循“channels_firts/channels_last”设置,类似于(None, NumberOfFilters, resultPixelsX, resultPixelsY) for channels_first。

    循环层:

    Lstm 层很难理解。他们有一些使用不同输入形状的选项,还有一些有趣的教程,例如this onethis too

    通常,输入形状为(None, TimeSteps, InputDimension)

    由于 LSTM 用于序列,您可以按时间步长分离序列。输入维度只是具有多维值的可能性。

    输出也因所选选项而异。它可能是 (None, Timesteps, NumberOfCellsInTheLeyr) 或只是 (None, NumberOfCells),这取决于您是否选择返回序列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-08
      • 2013-05-01
      • 2011-03-08
      • 2013-09-18
      • 1970-01-01
      • 2012-02-01
      • 2017-01-07
      • 2018-12-23
      相关资源
      最近更新 更多