Neural network Caffe可变批量

Neural network Caffe可变批量,neural-network,caffe,Neural Network,Caffe,我知道如果我有如下的输入层,我的网络将接收维度为(1,1100100)的blob 如何使第一个维度(输入批量大小)变为变量?因此,我可以输入不同大小的网络批?在调用forward()方法之前,您可以重塑网络。因此,如果您想要一个可变的批处理大小,您应该每次都重新调整批处理大小。这可以在您使用的任何接口(C、python、MATLAB)中完成 在python中,它是这样的: net.blobs['data'].reshape(BATCH_SIZE, CHANNELS, HEIGHT, WIDTH)

我知道如果我有如下的输入层,我的网络将接收维度为
(1,1100100)
的blob


如何使第一个维度(输入批量大小)变为变量?因此,我可以输入不同大小的网络批?

在调用
forward()
方法之前,您可以重塑网络。因此,如果您想要一个可变的批处理大小,您应该每次都重新调整批处理大小。这可以在您使用的任何接口(C、python、MATLAB)中完成

在python中,它是这样的:

net.blobs['data'].reshape(BATCH_SIZE, CHANNELS, HEIGHT, WIDTH)
net.reshape()
net.forward()

提示:我相信NET.RESHAPEE()/Cyp>是可选的,网络在执行前向动作之前调用这个。

< P>除了AHA的回答之外,C++中的内容类似于

Blob<float>* input_layer = net_->input_blobs()[0];
input_layer->Reshape(batch_size, input_layer->shape(1), input_layer->shape(2), input_layer->shape(3));
net_->Reshape();
Blob*input\u layer=net\u->input\u Blob()[0];
输入_层->整形(批量_大小,输入_层->形状(1),输入_层->形状(2),输入_层->形状(3));
net_uu1;->重塑();

我认为在函数
Net::Forward(const vector&bottom,Dtype*loss)
中,只需修改
Net\u input\u blobs\u[I]->CopyFrom(*bottom[I])
to
net\u input\u blobs\ui]->CopyFrom(*底部[i],false,true)
可以帮助,它将根据
底部
水滴形状重塑输入。@DaleSong许多感谢者我发现这是一个对caffe有用的教程:我遵循您的示例,但我遇到了如下错误:`Check failed:top[0]->count()==bottom[0]->count()(6656对11188736)输出计数必须与输入计数匹配`,您知道发生了什么吗?
Blob<float>* input_layer = net_->input_blobs()[0];
input_layer->Reshape(batch_size, input_layer->shape(1), input_layer->shape(2), input_layer->shape(3));
net_->Reshape();