tf.keras.layers.InputLayer函数

这篇博客详细介绍了tf.keras.layers.InputLayer及其在构建深度学习模型中的使用。通过实例展示了如何指定input_shape和input_tensor来创建输入层,并讨论了两者的区别。还提到了tf.keras.Input函数作为替代方法。博客内容涵盖了张量占位符的创建、模型构建以及不同参数设置对输出张量形状的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数原型
tf.keras.layers.InputLayer(input_shape=None, 
						   batch_size=None, 
						   dtype=None, 
						   input_tensor=None, 
						   sparse=None, 
						   name=None, 
						   ragged=None, 
						   type_spec=None, 
						   **kwargs
)
函数使用

输入层一般用作线性模型的第一层,通过指定参数input_tensor包装现有的张量或者指定参数input_shape创建新的占位符张量。

tf.compat.v1.disable_eager_execution()
a = tf.compat.v1.placeholder("float", (None, 32))
model = tf.keras.Sequential([
    tf.keras.layers.InputLayer(input_tensor=a),
    tf.keras.layers.Dense(64)
])
Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense (Dense)               (None, 64)                2112      
                                                                 
=================================================================
Total params: 2,112
Trainable params: 2,112
Non-trainable params: 0
_________________________________________________________________

首先创建了一个占位符张量a,形状为(None, 32)。然后通过指定input_tensor=a包裹张量a作为输入张量。最终输出张量形状为(None, 64)。

model = tf.keras.Sequential([
    tf.keras.layers.InputLayer(input_shape=32),
    tf.keras.layers.Dense(64)
])
Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense (Dense)               (None, 64)                2112      
                                                                 
=================================================================
Total params: 2,112
Trainable params: 2,112
Non-trainable params: 0
_________________________________________________________________

指定指定参数input_shape=32,创建一个占位符张量tensor作为输入张量,形状为(None, 32)。经过一个Dense层,最终输出张量形状也为(None, 64)。

值得注意的是,如果同时指定input_shape和input_tensor,那么input_shape参数会失效,也就是根据现有的张量创建输入层。

还可以在其他层上指定input_shape参数来省略该层。

model = tf.keras.Sequential([
    tf.keras.layers.Dense(64, input_shape=(None, 32))
])
Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense (Dense)               (None, None, 64)          2112      
                                                                 
=================================================================
Total params: 2,112
Trainable params: 2,112
Non-trainable params: 0
_________________________________________________________________

通过在Dense层上指定input_shape=(None, 32),相当于创建一个张量形状为(None, None, 32)的输入层。通过Dense层后,最终形状为(None, None, 64)。

tf.keras.layers.InputLayer函数和tf.keras.Input函数区别

tf.keras.Input函数返回的是一个张量Tensor,tf.keras.layers.InputLayer函数是一个layer对象。官网的建议是使用tf.keras.Input函数来创建一个InputLayer输入层,而不是直接使用tf.keras.layers.InputLayer来定义输入层。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不负韶华ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值