Input functiontf_keras.Input(
shape=None,
batch_size=None,
name=None,
dtype=None,
sparse=None,
tensor=None,
ragged=None,
type_spec=None,
**kwargs
)
Input() is used to instantiate a TF-Keras tensor.
A TF-Keras tensor is a symbolic tensor-like object, which we augment with certain attributes that allow us to build a TF-Keras model just by knowing the inputs and outputs of the model.
For instance, if a, b and c are TF-Keras tensors,
it becomes possible to do:
model = Model(input=[a, b], output=c)
Arguments
shape=(32,) indicates that the expected input
will be batches of 32-dimensional vectors. Elements of this tuple
can be None; 'None' elements represent dimensions where the shape is
not known.float32, float64, int32...)sparse is False, sparse tensors can still be passed into the
input - they will be densified with a default value of 0.Input layer.
If set, the layer will use the tf.TypeSpec of this tensor rather
than creating a new placeholder tensor.tf.TypeSpec object to create the input placeholder from.
When provided, all other args except name must be None.batch_shape and
batch_input_shape.Returns
A tensor.
Example
# this is a logistic regression in Keras
x = Input(shape=(32,))
y = Dense(16, activation='softmax')(x)
model = Model(x, y)
Note that even if eager execution is enabled,
Input produces a symbolic tensor-like object (i.e. a placeholder).
This symbolic tensor-like object can be used with lower-level
TensorFlow ops that take tensors as inputs, as such:
x = Input(shape=(32,))
y = tf.square(x) # This op will be treated like a layer
model = Model(x, y)
(This behavior does not work for higher-order TensorFlow APIs such as
control flow and being directly watched by a tf.GradientTape).
However, the resulting model will not track any variables that were used as inputs to TensorFlow ops. All variable usages must happen within TF-Keras layers to make sure they will be tracked by the model's weights.
The TF-Keras Input can also create a placeholder from an arbitrary
tf.TypeSpec, e.g:
x = Input(type_spec=tf.RaggedTensorSpec(shape=[None, None],
dtype=tf.float32, ragged_rank=1))
y = x.values
model = Model(x, y)
When passing an arbitrary tf.TypeSpec, it must represent the signature of
an entire batch instead of just one example.
Raises
sparse and ragged are provided.shape and (batch_input_shape or batch_shape) are
provided.shape, tensor and type_spec are None.type_spec are non-None while
type_spec is passed.