TensorFlow的tf.placeholder参数shape列表首位为None的原因是什么
TensorFlow占位符shape第0位设为None的原因
这是TensorFlow 1.x版本tf.placeholder的标准灵活用法,具体原因如下:
- 该位置对应输入张量的**批次大小(batch size)**维度,设置为None代表该维度支持动态可变长度,不需要在定义网络结构阶段就固定死批次的大小。
- 适配不同场景的输入需求:训练阶段可以根据硬件资源设置32、64等不同的批次大小加快训练效率,验证或推理阶段可以灵活输入单条样本、整批测试样本等不同规模的数据,不需要修改占位符的定义就能兼容所有场景。
- 匹配持续学习项目的场景特性:不同任务的训练样本总量、适配的批次大小可能存在差异,动态批次的设置不用为每个任务单独调整输入层的形状定义,降低代码冗余。
- 如果将该维度固定为具体数值,后续传入的张量第一维大小和定义值不匹配时,TensorFlow会直接抛出形状不匹配的报错,灵活性极低。
你给出的代码中标签self.y的第一维也设置为None,就是为了和输入self.x的批次大小严格对应,保证每个输入样本都能匹配到对应的标签。
内容的提问来源于stack exchange,提问作者samsambakster
相关产品推荐
相关产品推荐

