What is The Blob?
Blobs, Layers, and Nets: anatomy of a Caffe model
A
Blob is a wrapper over the actual data being processed and passed
along by Caffe, and also under the hood provides synchronization
capability between the CPU and the GPU. Mathematically, a blob is an
N-dimensional array stored in a C-contiguous fashion.
Caffe
stores and communicates data using blobs. Blobs provide a unified
memory interface holding data; e.g., batches of images, model
parameters, and derivatives for optimization.
Blobs
conceal the computational and mental overhead of mixed CPU/GPU
operation by synchronizing from the CPU host to the GPU device as
needed. Memory on the host and device is allocated on demand (lazily)
for efficient memory usage.
The
conventional blob dimensions for batches of image data are number N x
channel K x height H x width W. Blob memory is row-major in layout, so
the last / rightmost dimension changes fastest. For example, in a 4D
blob, the value at index (n, k, h, w) is physically located at index
((n * K + k) * H + h) * W + w.
- Number / N is the batch size of the data. Batch processing achieves better throughput for communication and device processing. For an ImageNet training batch of 256 images N = 256.
- Channel / K is the feature dimension e.g. for RGB images K = 3.
Note
that although many blobs in Caffe examples are 4D with axes for image
applications, it is totally valid to use blobs for non-image
applications. For example, if you simply need fully-connected networks
like the conventional multi-layer perceptron, use 2D blobs (shape (N,
D)) and call the InnerProductLayer (which we will cover soon).
Parameter
blob dimensions vary according to the type and configuration of the
layer. For a convolution layer with 96 filters of 11 x 11 spatial
dimension and 3 inputs the blob is 96 x 3 x 11 x 11. For an inner
product / fully-connected layer with 1000 output channels and 1024
input channels the parameter blob is 1000 x 1024.
For
custom data it may be necessary to hack your own input preparation
tool or data layer. However once your data is in your job is done. The
modularity of layers accomplishes the rest of the work for you.
by BAIR
Hiç yorum yok:
Yorum Gönder