【发布时间】:2017-05-03 16:22:25
【问题描述】:
在哪里可以找到keras.layers.Input 类的 API 文档?我在https://keras.io/ 找不到它。
【问题讨论】:
标签: keras
在哪里可以找到keras.layers.Input 类的 API 文档?我在https://keras.io/ 找不到它。
【问题讨论】:
标签: keras
当您不习惯 Keras 时,这些文档真的很难阅读。
但是构建 keras 模型有两种方法:
Sequential 模型Model 函数式 APIInput 层不与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 年)
可能的论点:
K.variable()。name、dtype 和 sparse。【讨论】:
tf.contrib.keras 是否等于keras,例如tf.contrib.keras.layers 等于keras.layers? tensorflow.org/versions/master/api_docs/python/tf/contrib/keras
None 是一个可变大小的维度。形状完全取决于您打算如何处理数据。如果您创建Input(shape=(None,256)),在内部您将有一个形状为(?,?,256) 的占位符 - 可变批量大小、可变第二维(通常是长度或时间步长)和最后一维中的 256 个元素(通常是通道或特征)。通常,这是在具有“长度”的数据中完成的,例如时间序列、一维卷积等。
上面的答案已经总结了大部分内容。但正如评论中提到的,我认为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的用法有些相似
【讨论】: