预训练MobileNet V2输入(160,160,3)输出首维为32问题求解
问题解答
1. 输出维度32的来源
TensorFlow默认的张量排布格式为(批次大小, 高度, 宽度, 通道数),你观测到的第一个维度32就是批次大小:
- 在没有显式指定batch size的前提下输入数据,框架会默认按32张为一批进行并行计算,所以输出的第一个维度对应批次内的样本数量,自然就是32
- 如果你想要得到预期的(1,5,5,1280)输出,只需要给单张输入数据额外增加一个批次维度,构造为
(1, 160, 160, 3)的输入格式传入即可,或者调用推理接口时指定参数batch_size=1
2. 模型summary中输出维度标注为None的原因
模型结构定义时不会固定批次维度,所以用None作为动态占位符:
- 预训练模型的设计需要兼容不同批次大小的使用场景,比如训练时用64的batch size提速,推理时用1的batch size做单样本预测,这个可变的批次维度就用
None标注 - 该占位符的实际取值完全由你传入的输入数据第一个维度决定,因此不会在静态的模型结构展示中写死固定值
内容的提问来源于stack exchange,提问作者samatra
相关产品推荐
相关产品推荐

