cypw / mxnet2caffe Goto Github PK
View Code? Open in Web Editor NEWConvert MXNet model to Caffe model
License: MIT License
Convert MXNet model to Caffe model
License: MIT License
I am tring to convert a mxnet model into a caffe model. The feature maps of 'conv1a' layer in mxnet and caffe are the same, but the feature maps of 'bn' layer in mxnet differs from the ones in caffe. The parameters 'moving_men', 'moving_var', 'gamma', 'beta' of mxnet model are suitable put into the caffe model.
And, when i tried to test the caffe model on ilsvrc2012 val, predicted classes of all images are 0. There must be some mistakes when i converted the model.
This bothers me for quite a while,can u give me some suggestions? thx a lot~
error! key error mxnet: mobilenet0_batchnorm0_beta
error! key error mxnet: mobilenet0_batchnorm0_gamma
Warning! unknown mxnet: mobilenet0_batchnorm0_runing_mean
转化模型师,出现以上错误,怎么解决?
Can you please clarify the license requirements? Is it MIT, BSD or some other license?
I get an error in "json2prototxt.py" on line 35: KeyError: 'attrs'
Hi, Thanks for your effort.
Here I encountered a problem when converting the default examples in this repo.
The procedure is quite simple:
$python json2prototxt.py
0, op:null , name:data -> data
2, op:Convolution , name:conv1__conv -> conv1__conv
use shared weight -> data
5, op:BatchNorm , name:conv1__bn__bn -> conv1__bn__bn
6, op:Activation , name:conv1__bn__relu -> conv1__bn__relu
8, op:Convolution , name:conv2__conv -> conv2__conv
11, op:BatchNorm , name:conv2__bn__bn -> conv2__bn__bn
12, op:Activation , name:conv2__bn__relu -> conv2__bn__relu
14, op:Convolution , name:conv3_c1x1-a__conv -> conv3_c1x1-a__conv
17, op:BatchNorm , name:conv3_c1x1-a__bn__bn -> conv3_c1x1-a__bn__bn
18, op:Activation , name:conv3_c1x1-a__bn__relu -> conv3_c1x1-a__bn__relu
20, op:Convolution , name:conv3_c3x3-b__conv -> conv3_c3x3-b__conv
23, op:BatchNorm , name:conv3_c3x3-b__bn__bn -> conv3_c3x3-b__bn__bn
24, op:Activation , name:conv3_c3x3-b__bn__relu -> conv3_c3x3-b__bn__relu
26, op:Convolution , name:conv3_c1x1-c__conv -> conv3_c1x1-c__conv
29, op:BatchNorm , name:conv3_c1x1-c__bn__bn -> conv3_c1x1-c__bn__bn
30, op:ElementWiseSum , name:conv3_ele-sum -> conv3_ele-sum
31, op:Activation , name:conv3_sum-act__relu -> conv3_sum-act__relu
33, op:Convolution , name:conv4_c1x1-w(s/2)__conv -> conv4_c1x1-w(s/2)__conv
36, op:BatchNorm , name:conv4_c1x1-w(s/2)__bn__bn -> conv4_c1x1-w(s/2)__bn__bn
38, op:Convolution , name:conv4_c1x1-a__conv -> conv4_c1x1-a__conv
41, op:BatchNorm , name:conv4_c1x1-a__bn__bn -> conv4_c1x1-a__bn__bn
42, op:Activation , name:conv4_c1x1-a__bn__relu -> conv4_c1x1-a__bn__relu
44, op:Convolution , name:conv4_c3x3-b__conv -> conv4_c3x3-b__conv
47, op:BatchNorm , name:conv4_c3x3-b__bn__bn -> conv4_c3x3-b__bn__bn
48, op:Activation , name:conv4_c3x3-b__bn__relu -> conv4_c3x3-b__bn__relu
50, op:Convolution , name:conv4_c1x1-c__conv -> conv4_c1x1-c__conv
53, op:BatchNorm , name:conv4_c1x1-c__bn__bn -> conv4_c1x1-c__bn__bn
54, op:ElementWiseSum , name:conv4_ele-sum -> conv4_ele-sum
55, op:Activation , name:conv4_sum-act__relu -> conv4_sum-act__relu
57, op:Convolution , name:conv5_c1x1-a__conv -> conv5_c1x1-a__conv
60, op:BatchNorm , name:conv5_c1x1-a__bn__bn -> conv5_c1x1-a__bn__bn
61, op:Activation , name:conv5_c1x1-a__bn__relu -> conv5_c1x1-a__bn__relu
63, op:Convolution , name:conv5_c3x3-b__conv -> conv5_c3x3-b__conv
66, op:BatchNorm , name:conv5_c3x3-b__bn__bn -> conv5_c3x3-b__bn__bn
67, op:Activation , name:conv5_c3x3-b__bn__relu -> conv5_c3x3-b__bn__relu
69, op:Convolution , name:conv5_c1x1-c__conv -> conv5_c1x1-c__conv
72, op:BatchNorm , name:conv5_c1x1-c__bn__bn -> conv5_c1x1-c__bn__bn
73, op:ElementWiseSum , name:conv5_ele-sum -> conv5_ele-sum
74, op:Activation , name:conv5_sum-act__relu -> conv5_sum-act__relu
76, op:Convolution , name:conv6_c1x1-w(s/2)__conv -> conv6_c1x1-w(s/2)__conv
79, op:BatchNorm , name:conv6_c1x1-w(s/2)__bn__bn -> conv6_c1x1-w(s/2)__bn__bn
81, op:Convolution , name:conv6_c1x1-a__conv -> conv6_c1x1-a__conv
84, op:BatchNorm , name:conv6_c1x1-a__bn__bn -> conv6_c1x1-a__bn__bn
85, op:Activation , name:conv6_c1x1-a__bn__relu -> conv6_c1x1-a__bn__relu
87, op:Convolution , name:conv6_c3x3-b__conv -> conv6_c3x3-b__conv
90, op:BatchNorm , name:conv6_c3x3-b__bn__bn -> conv6_c3x3-b__bn__bn
91, op:Activation , name:conv6_c3x3-b__bn__relu -> conv6_c3x3-b__bn__relu
93, op:Convolution , name:conv6_c1x1-c__conv -> conv6_c1x1-c__conv
96, op:BatchNorm , name:conv6_c1x1-c__bn__bn -> conv6_c1x1-c__bn__bn
97, op:ElementWiseSum , name:conv6_ele-sum -> conv6_ele-sum
98, op:Activation , name:conv6_sum-act__relu -> conv6_sum-act__relu
99, op:Pooling , name:pool5 -> pool5
100, op:Flatten , name:flatten -> flatten
103, op:FullyConnected , name:fc -> fc
105, op:SoftmaxOutput , name:softmax -> softmax
$python mxnet2caffe.py
[09:31:04] src/nnvm/legacy_json_util.cc:190: Loading symbol saved by previous version v0.8.0. Attempting to upgrade...
[09:31:04] src/nnvm/legacy_json_util.cc:198: Symbol successfully upgraded!
WARNING: Logging before InitGoogleLogging() is written to STDERR
I0308 09:31:04.431555 2737054528 net.cpp:51] Initializing net from parameters:
name: "mxnet-mdoel"
state {
phase: TRAIN
level: 0
}
layer {
name: "data"
type: "Input"
top: "data"
input_param {
shape {
dim: 10
dim: 3
dim: 224
dim: 224
}
}
}
layer {
name: "conv1__conv"
type: "Convolution"
bottom: "data"
top: "conv1__conv"
param {
name: "data"
}
convolution_param {
num_output: 16
bias_term: false
pad: 1
kernel_size: 3
group: 1
stride: 2
}
}
layer {
name: "conv1__bn__bn"
type: "BatchNorm"
bottom: "conv1__conv"
top: "conv1__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv1__bn__bn_scale"
type: "Scale"
bottom: "conv1__bn__bn"
top: "conv1__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv1__bn__relu"
type: "ReLU"
bottom: "conv1__bn__bn"
top: "conv1__bn__relu"
}
layer {
name: "conv2__conv"
type: "Convolution"
bottom: "conv1__bn__relu"
top: "conv2__conv"
convolution_param {
num_output: 16
bias_term: false
pad: 1
kernel_size: 3
group: 1
stride: 2
}
}
layer {
name: "conv2__bn__bn"
type: "BatchNorm"
bottom: "conv2__conv"
top: "conv2__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv2__bn__bn_scale"
type: "Scale"
bottom: "conv2__bn__bn"
top: "conv2__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv2__bn__relu"
type: "ReLU"
bottom: "conv2__bn__bn"
top: "conv2__bn__relu"
}
layer {
name: "conv3_c1x1-a__conv"
type: "Convolution"
bottom: "conv2__bn__relu"
top: "conv3_c1x1-a__conv"
convolution_param {
num_output: 16
bias_term: false
pad: 0
kernel_size: 1
group: 1
stride: 1
}
}
layer {
name: "conv3_c1x1-a__bn__bn"
type: "BatchNorm"
bottom: "conv3_c1x1-a__conv"
top: "conv3_c1x1-a__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv3_c1x1-a__bn__bn_scale"
type: "Scale"
bottom: "conv3_c1x1-a__bn__bn"
top: "conv3_c1x1-a__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv3_c1x1-a__bn__relu"
type: "ReLU"
bottom: "conv3_c1x1-a__bn__bn"
top: "conv3_c1x1-a__bn__relu"
}
layer {
name: "conv3_c3x3-b__conv"
type: "Convolution"
bottom: "conv3_c1x1-a__bn__relu"
top: "conv3_c3x3-b__conv"
convolution_param {
num_output: 16
bias_term: false
pad: 1
kernel_size: 3
group: 1
stride: 1
}
}
layer {
name: "conv3_c3x3-b__bn__bn"
type: "BatchNorm"
bottom: "conv3_c3x3-b__conv"
top: "conv3_c3x3-b__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv3_c3x3-b__bn__bn_scale"
type: "Scale"
bottom: "conv3_c3x3-b__bn__bn"
top: "conv3_c3x3-b__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv3_c3x3-b__bn__relu"
type: "ReLU"
bottom: "conv3_c3x3-b__bn__bn"
top: "conv3_c3x3-b__bn__relu"
}
layer {
name: "conv3_c1x1-c__conv"
type: "Convolution"
bottom: "conv3_c3x3-b__bn__relu"
top: "conv3_c1x1-c__conv"
convolution_param {
num_output: 16
bias_term: false
pad: 0
kernel_size: 1
group: 1
stride: 1
}
}
layer {
name: "conv3_c1x1-c__bn__bn"
type: "BatchNorm"
bottom: "conv3_c1x1-c__conv"
top: "conv3_c1x1-c__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv3_c1x1-c__bn__bn_scale"
type: "Scale"
bottom: "conv3_c1x1-c__bn__bn"
top: "conv3_c1x1-c__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv3_ele-sum"
type: "Eltwise"
bottom: "conv2__bn__relu"
bottom: "conv3_c1x1-c__bn__bn"
top: "conv3_ele-sum"
}
layer {
name: "conv3_sum-act__relu"
type: "ReLU"
bottom: "conv3_ele-sum"
top: "conv3_sum-act__relu"
}
layer {
name: "conv4_c1x1-w(s/2)__conv"
type: "Convolution"
bottom: "conv3_sum-act__relu"
top: "conv4_c1x1-w(s/2)__conv"
convolution_param {
num_output: 32
bias_term: false
pad: 0
kernel_size: 1
group: 1
stride: 2
}
}
layer {
name: "conv4_c1x1-w(s/2)__bn__bn"
type: "BatchNorm"
bottom: "conv4_c1x1-w(s/2)__conv"
top: "conv4_c1x1-w(s/2)__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv4_c1x1-w(s/2)__bn__bn_scale"
type: "Scale"
bottom: "conv4_c1x1-w(s/2)__bn__bn"
top: "conv4_c1x1-w(s/2)__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv4_c1x1-a__conv"
type: "Convolution"
bottom: "conv3_sum-act__relu"
top: "conv4_c1x1-a__conv"
convolution_param {
num_output: 32
bias_term: false
pad: 0
kernel_size: 1
group: 1
stride: 1
}
}
layer {
name: "conv4_c1x1-a__bn__bn"
type: "BatchNorm"
bottom: "conv4_c1x1-a__conv"
top: "conv4_c1x1-a__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv4_c1x1-a__bn__bn_scale"
type: "Scale"
bottom: "conv4_c1x1-a__bn__bn"
top: "conv4_c1x1-a__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv4_c1x1-a__bn__relu"
type: "ReLU"
bottom: "conv4_c1x1-a__bn__bn"
top: "conv4_c1x1-a__bn__relu"
}
layer {
name: "conv4_c3x3-b__conv"
type: "Convolution"
bottom: "conv4_c1x1-a__bn__relu"
top: "conv4_c3x3-b__conv"
convolution_param {
num_output: 32
bias_term: false
pad: 1
kernel_size: 3
group: 1
stride: 2
}
}
layer {
name: "conv4_c3x3-b__bn__bn"
type: "BatchNorm"
bottom: "conv4_c3x3-b__conv"
top: "conv4_c3x3-b__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv4_c3x3-b__bn__bn_scale"
type: "Scale"
bottom: "conv4_c3x3-b__bn__bn"
top: "conv4_c3x3-b__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv4_c3x3-b__bn__relu"
type: "ReLU"
bottom: "conv4_c3x3-b__bn__bn"
top: "conv4_c3x3-b__bn__relu"
}
layer {
name: "conv4_c1x1-c__conv"
type: "Convolution"
bottom: "conv4_c3x3-b__bn__relu"
top: "conv4_c1x1-c__conv"
convolution_param {
num_output: 32
bias_term: false
pad: 0
kernel_size: 1
group: 1
stride: 1
}
}
layer {
name: "conv4_c1x1-c__bn__bn"
type: "BatchNorm"
bottom: "conv4_c1x1-c__conv"
top: "conv4_c1x1-c__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv4_c1x1-c__bn__bn_scale"
type: "Scale"
bottom: "conv4_c1x1-c__bn__bn"
top: "conv4_c1x1-c__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv4_ele-sum"
type: "Eltwise"
bottom: "conv4_c1x1-w(s/2)__bn__bn"
bottom: "conv4_c1x1-c__bn__bn"
top: "conv4_ele-sum"
}
layer {
name: "conv4_sum-act__relu"
type: "ReLU"
bottom: "conv4_ele-sum"
top: "conv4_sum-act__relu"
}
layer {
name: "conv5_c1x1-a__conv"
type: "Convolution"
bottom: "conv4_sum-act__relu"
top: "conv5_c1x1-a__conv"
convolution_param {
num_output: 32
bias_term: false
pad: 0
kernel_size: 1
group: 1
stride: 1
}
}
layer {
name: "conv5_c1x1-a__bn__bn"
type: "BatchNorm"
bottom: "conv5_c1x1-a__conv"
top: "conv5_c1x1-a__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv5_c1x1-a__bn__bn_scale"
type: "Scale"
bottom: "conv5_c1x1-a__bn__bn"
top: "conv5_c1x1-a__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv5_c1x1-a__bn__relu"
type: "ReLU"
bottom: "conv5_c1x1-a__bn__bn"
top: "conv5_c1x1-a__bn__relu"
}
layer {
name: "conv5_c3x3-b__conv"
type: "Convolution"
bottom: "conv5_c1x1-a__bn__relu"
top: "conv5_c3x3-b__conv"
convolution_param {
num_output: 32
bias_term: false
pad: 1
kernel_size: 3
group: 1
stride: 1
}
}
layer {
name: "conv5_c3x3-b__bn__bn"
type: "BatchNorm"
bottom: "conv5_c3x3-b__conv"
top: "conv5_c3x3-b__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv5_c3x3-b__bn__bn_scale"
type: "Scale"
bottom: "conv5_c3x3-b__bn__bn"
top: "conv5_c3x3-b__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv5_c3x3-b__bn__relu"
type: "ReLU"
bottom: "conv5_c3x3-b__bn__bn"
top: "conv5_c3x3-b__bn__relu"
}
layer {
name: "conv5_c1x1-c__conv"
type: "Convolution"
bottom: "conv5_c3x3-b__bn__relu"
top: "conv5_c1x1-c__conv"
convolution_param {
num_output: 32
bias_term: false
pad: 0
kernel_size: 1
group: 1
stride: 1
}
}
layer {
name: "conv5_c1x1-c__bn__bn"
type: "BatchNorm"
bottom: "conv5_c1x1-c__conv"
top: "conv5_c1x1-c__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv5_c1x1-c__bn__bn_scale"
type: "Scale"
bottom: "conv5_c1x1-c__bn__bn"
top: "conv5_c1x1-c__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv5_ele-sum"
type: "Eltwise"
bottom: "conv4_sum-act__relu"
bottom: "conv5_c1x1-c__bn__bn"
top: "conv5_ele-sum"
}
layer {
name: "conv5_sum-act__relu"
type: "ReLU"
bottom: "conv5_ele-sum"
top: "conv5_sum-act__relu"
}
layer {
name: "conv6_c1x1-w(s/2)__conv"
type: "Convolution"
bottom: "conv5_sum-act__relu"
top: "conv6_c1x1-w(s/2)__conv"
convolution_param {
num_output: 32
bias_term: false
pad: 0
kernel_size: 1
group: 1
stride: 2
}
}
layer {
name: "conv6_c1x1-w(s/2)__bn__bn"
type: "BatchNorm"
bottom: "conv6_c1x1-w(s/2)__conv"
top: "conv6_c1x1-w(s/2)__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv6_c1x1-w(s/2)__bn__bn_scale"
type: "Scale"
bottom: "conv6_c1x1-w(s/2)__bn__bn"
top: "conv6_c1x1-w(s/2)__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv6_c1x1-a__conv"
type: "Convolution"
bottom: "conv5_sum-act__relu"
top: "conv6_c1x1-a__conv"
convolution_param {
num_output: 32
bias_term: false
pad: 0
kernel_size: 1
group: 1
stride: 1
}
}
layer {
name: "conv6_c1x1-a__bn__bn"
type: "BatchNorm"
bottom: "conv6_c1x1-a__conv"
top: "conv6_c1x1-a__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv6_c1x1-a__bn__bn_scale"
type: "Scale"
bottom: "conv6_c1x1-a__bn__bn"
top: "conv6_c1x1-a__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv6_c1x1-a__bn__relu"
type: "ReLU"
bottom: "conv6_c1x1-a__bn__bn"
top: "conv6_c1x1-a__bn__relu"
}
layer {
name: "conv6_c3x3-b__conv"
type: "Convolution"
bottom: "conv6_c1x1-a__bn__relu"
top: "conv6_c3x3-b__conv"
convolution_param {
num_output: 32
bias_term: false
pad: 1
kernel_size: 3
group: 1
stride: 2
}
}
layer {
name: "conv6_c3x3-b__bn__bn"
type: "BatchNorm"
bottom: "conv6_c3x3-b__conv"
top: "conv6_c3x3-b__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv6_c3x3-b__bn__bn_scale"
type: "Scale"
bottom: "conv6_c3x3-b__bn__bn"
top: "conv6_c3x3-b__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv6_c3x3-b__bn__relu"
type: "ReLU"
bottom: "conv6_c3x3-b__bn__bn"
top: "conv6_c3x3-b__bn__relu"
}
layer {
name: "conv6_c1x1-c__conv"
type: "Convolution"
bottom: "conv6_c3x3-b__bn__relu"
top: "conv6_c1x1-c__conv"
convolution_param {
num_output: 32
bias_term: false
pad: 0
kernel_size: 1
group: 1
stride: 1
}
}
layer {
name: "conv6_c1x1-c__bn__bn"
type: "BatchNorm"
bottom: "conv6_c1x1-c__conv"
top: "conv6_c1x1-c__bn__bn"
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.9
eps: 0.001
}
}
layer {
name: "conv6_c1x1-c__bn__bn_scale"
type: "Scale"
bottom: "conv6_c1x1-c__bn__bn"
top: "conv6_c1x1-c__bn__bn"
scale_param {
bias_term: true
}
}
layer {
name: "conv6_ele-sum"
type: "Eltwise"
bottom: "conv6_c1x1-w(s/2)__bn__bn"
bottom: "conv6_c1x1-c__bn__bn"
top: "conv6_ele-sum"
}
layer {
name: "conv6_sum-act__relu"
type: "ReLU"
bottom: "conv6_ele-sum"
top: "conv6_sum-act__relu"
}
layer {
name: "pool5"
type: "Pooling"
bottom: "conv6_sum-act__relu"
top: "pool5"
pooling_param {
pool: AVE
kernel_size: 14
stride: 1
pad: 0
}
}
layer {
name: "fc"
type: "InnerProduct"
bottom: "flatten"
top: "fc"
inner_product_param {
num_output: 1000
}
}
F0308 09:31:04.433809 2737054528 insert_splits.cpp:29] Unknown bottom blob 'flatten' (layer 'fc', bottom index 0)
*** Check failure stack trace: ***
Abort trap: 6
Not sure why the blob "flatten" is not correctly recognized. Any idea?
Traceback (most recent call last):
File "json2prototxt.py", line 38, in
write_node(prototxt_file, info)
File "/root/MXNet2Caffe/prototxt_basic.py", line 143, in write_node
Convolution(txt_file, info)
File "/root/MXNet2Caffe/prototxt_basic.py", line 16, in Convolution
if info['param']['no_bias'] == 'True':
KeyError: 'param'
Hi all,
This is my original question: https://github.com/deepinsight/insightface/issues/937
I also tried this repo to do the conversion. But the inference output is also problematic. The converted weights seems to be fine. And the first few hidden layer's output is almost the same as mxnet output. But the outputs afterwards becomes more and more different.
And ideas how to solve this problem?
Many thanks!
hi,I am trying to convert a model trained by mxnet into caffemodel,however after i get the caffemodel file,and tring to test the model on caffe framework,the error occurs:check failed:target_blobs.size() == source_layer.blobs_size() (3 vs 5) incompatible number of blobs for layer bn0.how to solve it
do you have updated the Flatten layer to caffe?
I get an error in prototxt_basic.py
Convolution(txt_file, info)
if info['param']['no_bias'] == 'True':
KeyError: 'param'
when I use the command:
python mxnet2caffe.py --mx-model model --mx-epoch 31 --cf-prototxt model_caffe/res.prototxt --cf-model model_caffe/res.caffemodel
An error occurred:
Segmentation fault: 11
*** Error in `python': malloc(): memory corruption: 0x0000000063c45e50 ***
I need help.
After I transformed the mxnet model into caffe model using the provided codes, I found the time comsumming and GPU memory of caffe model was much larger than the mxnet model. Is that normal?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.