【问题标题】:Where can I find the API documentation of the class Input?在哪里可以找到 Input 类的 API 文档?
【发布时间】:2017-05-03 16:22:25
【问题描述】:

在哪里可以找到keras.layers.Input 类的 API 文档?我在https://keras.io/ 找不到它。

【问题讨论】:

    标签: keras


    【解决方案1】:

    当您不习惯 Keras 时,这些文档真的很难阅读。

    但是构建 keras 模型有两种方法:

    • Sequential 模型
    • Model 函数式 API

    Input 层不与Sequential 模型一起使用,仅与Model 一起使用。

    可能没有明确的文档,因为Input 层除了为模型定义输入数据的形状外,什么都不做。 (事实上​​,它创建了一个“张量”,您可以将其用作其他层的输入)。

    假设您正在创建一个使用 MNIST 数据批量处理的模型,其中包含 28x28 像素的图像。那么你的输入形状就是(28,28)(见*)。

    在创建模型时,您使用 Input 来定义它:

    #inp will be a tensor with shape (?, 28, 28)
    inp = Input((28,28))
    

    然后以下层将使用此输入:

    x = SomeKerasLayer(blablabla)(inp)     
    x = SomeOtherLayer(blablabla)(x)    
    output = TheLastLayer(balblabla)(x)
    

    当你创建模型时,你定义了数据将遵循的路径,在这种情况下是从输入到输出:

    model = Model(inp,output)
    

    使用Model api,还可以创建分支、多输入和多输出、分支等。

    如果有多个输入,您将创建多个Input 层。

    有关实际层的更高级示例,请参见此处:https://keras.io/getting-started/functional-api-guide/


    * - 这不是规则。根据您格式化输入数据的方式,此形状可能会发生变化。有些模型不喜欢关心 2D 信息,而是使用形状为 (784,) 的扁平图像。将使用卷积层的模型通常会将输入数据塑造为(28,28,1),即具有一个通道的图像。 (通常,图像有 3 个通道,RGB)。


    Input 的参数

    Input 方法的代码定义为here(2017 年 12 月 22 日至 2017 年)

    可能的论点:

    • shape:定义单个样本的形状,批量大小可变(如上图)
    • batch_shape:在传递的形状中明确定义批次的大小
    • 张量:不是将输入形状传递给模型,而是传递现有张量,例如,您可以传递一个填充了值的张量,例如 K.variable()。
    • 其他参数:name、dtype 和 sparse。

    【讨论】:

    • 感谢您的帮助。我发现 tensorflow 有一些关于 keras 的 API。那些tf.contrib.keras 是否等于keras,例如tf.contrib.keras.layers 等于keras.layers? tensorflow.org/versions/master/api_docs/python/tf/contrib/keras
    • 我不知道 :(
    • 这是一个很好的答案。一个明确的问题:我见过 Input(shape=(None,256)) 或 Input(shape=(256,)) 的示例。我理解 None 是一个占位符,但不理解 None 是第一与第二(与第三,...)时的差异,或者最终如何解决该维度。这部分在某处有解释吗?
    • None 是一个可变大小的维度。形状完全取决于您打算如何处理数据。如果您创建Input(shape=(None,256)),在内部您将有一个形状为(?,?,256) 的占位符 - 可变批量大小、可变第二维(通常是长度或时间步长)和最后一维中的 256 个元素(通常是通道或特征)。通常,这是在具有“长度”的数据中完成的,例如时间序列、一维卷积等。
    【解决方案2】:

    上面的答案已经总结了大部分内容。但正如评论中提到的,我认为tf.contrib.keras 包含有关keras 的文档。 This 链接包含相同的文档。

    正如接受的答案中提到的,Input 可以与model 一起使用来表示张量。事实上,它返回一个张量。我理解它的方式是,它有点类似于tf.placeholder,因为它允许我们单独根据Input 对象定义模型并稍后拟合模型。以下是 tensorflow 文档中的示例。

    # this is a logistic regression in Keras
    x = Input(shape=(32,))
    y = Dense(16, activation='softmax')(x)
    model = Model(x, y)
    

    这里可以看出Input的用法和tf.placeholder的用法有些相似

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 2011-11-06
      • 2020-10-06
      • 2013-09-04
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多