Input 函数tf_keras.Input(
shape=None,
batch_size=None,
name=None,
dtype=None,
sparse=None,
tensor=None,
ragged=None,
type_spec=None,
**kwargs
)
Input() 用于实例化 TF-Keras 张量。
TF-Keras 张量是一种符号式的张量状对象,我们为其增加了某些属性,这些属性允许我们仅通过了解模型的输入和输出来构建 TF-Keras 模型。
例如,如果 a、b 和 c 是 TF-Keras 张量,则可以执行以下操作:model = Model(input=[a, b], output=c)
参数
shape=(32,) 表示预期的输入将是大小为 32 的向量的批次。此元组的元素可以是 None;'None' 元素表示形状未知的维度。float32, float64, int32...)。sparse 为 False,稀疏张量仍然可以传递给输入 - 它们将使用默认值 0 进行密集化。Input 层中。如果设置,该层将使用此张量的 tf.TypeSpec,而不是创建新的占位符张量。tf.TypeSpec 对象,用于从中创建输入占位符。提供此参数时,除 name 之外的所有其他参数都必须为 None。batch_shape 和 batch_input_shape。返回值
一个 tensor。
示例
# this is a logistic regression in Keras
x = Input(shape=(32,))
y = Dense(16, activation='softmax')(x)
model = Model(x, y)
注意,即使启用了急切执行 (eager execution),Input 也会生成一个符号张量状对象(即占位符)。此符号张量状对象可与接受张量作为输入的较低级别 TensorFlow 操作一起使用,例如:
x = Input(shape=(32,))
y = tf.square(x) # This op will be treated like a layer
model = Model(x, y)
(此行为不适用于更高级别的 TensorFlow API,例如控制流以及由 tf.GradientTape 直接监视的情况)。
但是,生成的模型不会跟踪任何用作 TensorFlow 操作输入的变量。所有变量的使用都必须发生在 TF-Keras 层内部,以确保它们将被模型的权重跟踪。
TF-Keras Input 还可以从任意 tf.TypeSpec 创建占位符,例如:
x = Input(type_spec=tf.RaggedTensorSpec(shape=[None, None],
dtype=tf.float32, ragged_rank=1))
y = x.values
model = Model(x, y)
传递任意 tf.TypeSpec 时,它必须表示整个批次的签名,而不仅仅是一个示例的签名。
抛出
sparse 和 ragged。shape 和 (batch_input_shape 或 batch_shape)。shape、tensor 和 type_spec 均为 None。type_spec,而除此以外的参数不为 None。