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 执行,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 时,除 type_spec 以外的其他参数不为 None。