当我在Google深度梦境的bvlc_googlenet的deploy.prototxt文件中设置'batch_size'
以减少GPU内存需求时,它对速度和内存需求都没有影响。似乎被忽略了。我知道文件本身(deploy.prototxt)正在使用,因为其他更改在结果中有所反映,所以这不是问题。我还尝试在所有相关层上设置batch_size(如”inception_4c/1×1″等),仍然没有变化。
我设置的方式如下:
layer { name: "inception_4c/output" type: "Concat" bottom: "inception_4c/1x1" bottom: "inception_4c/3x3" bottom: "inception_4c/5x5" bottom: "inception_4c/pool_proj" top: "inception_4c/output" data_param { batch_size 1 }}
当我计时脚本的运行时间时,使用batch_size 1和batch_size 512的结果是一样的,没有任何差异。
我做错了什么?
回答:
data_param
是输入数据层的参数。您只能为输入设置batch_size
,该值会通过网络传播。
在deploy.prototxt中,批量大小由第一个'input_dim'
参数设置(第三行),尝试更改此值,看看它是否对网络的内存消耗有任何影响。
deploy.prototxt文件的前几行应解释为
input: "data" # 输入层的"top"名称input_dim: 10 # 第四维度 - 批量大小input_dim: 3 # 第三维度 - 通道数input_dim: 224 # 第二维度 - 输入高度input_dim: 224 # 第一维度 - 输入宽度
因此,您期望在第一个卷积层("conv1/7x7_s2"
)中有一个名为”data”的”bottom”,其形状为10
-by-3
-by-224
-by-224
。