-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
optimization batch_norm 2D and NCHW format on CPU #34585
optimization batch_norm 2D and NCHW format on CPU #34585
Conversation
Thanks for your contribution! |
LGTM |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
@@ -332,6 +331,12 @@ class BatchNormKernel<platform::CPUDeviceContext, T> | |||
saved_mean->mutable_data<T>(ctx.GetPlace()); | |||
saved_variance->mutable_data<T>(ctx.GetPlace()); | |||
|
|||
// input dimension is 2 and the format is NCHW. The input can be regarded | |||
// as NHWC format | |||
if (x_dims.size() == 2 && data_layout == DataLayout::kNCHW) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
判断条件其实可以简化下,是不是if (sample_size == 1)
就可以了?以及代码书写也可以简化下:const DataLayout data_layout = sample_size == 1 ? DataLayout::kNHWC : framework::StringToDataLayout(data_layout_str);
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
经过验证,在sample_size为1时,在代码"const int C = (data_layout == DataLayout::kNCHW ? x_dims[1]: x_dims[x_dims.size() - 1]);" 执行完成后获取到C的值,再使用sample_size==1判断修改layout是可以的。根据建议修改
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
但是对于简化的写法应该是不可行的,因为如果这里直接修改data_layout的话,后续会通过这个data_layout来计算C的值,如果输入为[10,10,1,1],输入格式为"NCHW",sample_size==1,满足条件,这时输入格式改为"NHWC",后续计算C会等于1,而实际上C=10.
PR types
Performance optimization
PR changes
OPs
Describe
Optimization batch_norm two-dimensional shape and the format is NCHW
The performance test data of OMP==1 is as follows: