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)
请注意,即使启用了渴望执行,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。