Giter Club home page Giter Club logo

Comments (6)

luoyetx avatar luoyetx commented on June 7, 2024

All reshape stuffs are done in PlaceMemory. When the shape of input blob changes, all internal blob will change the shape and realloc the memory buffer.

from mini-caffe.

spacegrass avatar spacegrass commented on June 7, 2024

Yes. I have read the code. It will reshape every layer of the net BEFORE net forward. Some kind of net like faster-rcnn will change the down layer shape information at forward time. So I think PlaceMemory won't fix it.

from mini-caffe.

luoyetx avatar luoyetx commented on June 7, 2024

The layer itself gets all shape info about input blobs, it should be able to computer the shape of output blobs when reshape function called.

from mini-caffe.

luoyetx avatar luoyetx commented on June 7, 2024

For proposal layer, checkout code here. We set maximum shape for output rois.

from mini-caffe.

yanhn avatar yanhn commented on June 7, 2024

@luoyetx I got this strange problem when call Net::CopyTrainedLayersFrom under different
mode(caffe::GPU vs caffe CPU):
Error info is:

C:\workspace\opensource\mini-caffe\src\net.cpp:277: Cannot copy param 0 weights from layer '221'; shape mismatch. Source param shape is 1 64 1 1 (64); target param shape is 64 1 1 1 (64). To learn this layer's parameters from scratch rather than copying from a saved net, rename the layer.

my last 2 layers has prototxt as below:
layer {
name: "221"
type: "Convolution"
bottom: "220"
top: "221"
convolution_param {
num_output: 1
bias_term: true
group: 1
pad: 0
kernel_size: 1
stride: 1
dilation: 1
}
}
layer {
name: "output"
type: "Sigmoid"
bottom: "221"
top: "output"
}

1:under cpu mode. everything's fine. My conv layer's weights target param has shape 1 x 64 x 1 x 1, with bias shape (1), can correctly load from caffemodel to caffe::Net.
2: under gpu mode, conv layer's target param weights has shape 64 x 1 x 1 x1, with bias shape (64), so I can't load params from caffemodel due to the mismatch between my caffemodel( which is corect) and caffe::Net from prototxt (which is wrong).
Have you any idea on this strange problem?

I have tried with add a special case into line 259 of net.cpp,
if (source_layer_name == "221") {
const bool kReshape = true;
target_blobs[j]->FromProto(source_layer.blobs(j), kReshape);
printf("after copy proto blob no.%d: shape is %s\n", j, target_blobs[j]->shape_string());
continue;
}
It helped me with Net::CopyTrainedLayersFrom, but when I do net.Forward(); same shape mismatch problem occurred again. The only difference in code is if I use different
mode(caffe::GPU vs caffe CPU).

from mini-caffe.

yanhn avatar yanhn commented on June 7, 2024

Recently I did some code reading and debug. The result shows that:
1、Net::Reshape() was called during Net::Forward, so the shape of my Convolution changed to mismatching status.
2、I put some log info in BaseConvolutionLayer::Reshape, and found other Convolution layers print the corresponding logs except for my last Convolution with kernel_size=1 and num_output=1. ( I only use this conv layer once for feature dimension reduction. )
3、Test with other models on other computers has the same problem: pycaffe ( gpu & cpu ) ok ; c++ cpu ok; c++ gpu not ok.
So is there some advice to help me out? Thanks.

from mini-caffe.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.