Browse Source

!13245 modify SycnBatchNorm note

From: @yuchaojie
Reviewed-by: @kisnwang,@zhoufeng54
Signed-off-by: @zhoufeng54
tags/v1.2.0-rc1
mindspore-ci-bot Gitee 5 years ago
parent
commit
dca301eabf
4 changed files with 14 additions and 4 deletions
  1. +1
    -1
      mindspore/ccsrc/backend/optimizer/ascend/ir_fission/bn_split.cc
  2. +11
    -2
      mindspore/ccsrc/backend/optimizer/ascend/mindir/avg_pool_grad_unify_mindir.cc
  3. +1
    -0
      mindspore/ccsrc/backend/optimizer/common/helper.cc
  4. +1
    -1
      mindspore/nn/layer/normalization.py

+ 1
- 1
mindspore/ccsrc/backend/optimizer/ascend/ir_fission/bn_split.cc View File

@@ -163,7 +163,7 @@ AnfNodePtr CreateValueNodeOfDeviceNumReciprocal(const FuncGraphPtr &graph, const
}
auto device_num = AnfAlgo::GetNodeAttr<int64_t>(sync_bn_cnode, kDeviceNum);
MS_LOG(INFO) << "device_num value: " << device_num;
float device_num_reciprocal = 1.0 / device_num;
const float device_num_reciprocal = 1.0 / device_num;

std::vector<int64_t> device_num_shape = {};
auto device_num_reciprocal_tensor = std::make_shared<tensor::Tensor>(kNumberTypeFloat32, device_num_shape);


+ 11
- 2
mindspore/ccsrc/backend/optimizer/ascend/mindir/avg_pool_grad_unify_mindir.cc View File

@@ -50,6 +50,10 @@ int64_t windowed_output_size(int64_t input_size, int64_t ksize, int64_t stride,
int64_t output = 0;
*pad_before = 0;
*pad_after = 0;
if (stride == 0) {
MS_LOG(EXCEPTION) << "The stride of AvgPoolGrad should not be 0.";
return 0;
}
if (pad_mode == PadMode::VALID) {
output = (input_size - ksize + stride) / stride;
} else if (pad_mode == PadMode::SAME) {
@@ -120,8 +124,13 @@ ValueNodePtr CreateMeanMatrixValueNode(const FuncGraphPtr &func_graph, const std
auto output_size = std::accumulate(output_shape.begin(), output_shape.end(), int64_t(1), std::multiplies<int64_t>());
std::vector<float> output(output_size, 0.0);
for (int64_t i = 0; i < output_shape[0] * output_shape[1]; ++i) {
size_t copy_size = hw_output.size() * kFloat32Len;
(void)memcpy_s(&output[i * hw_output.size()], copy_size, &hw_output[0], copy_size);
size_t src_size = hw_output.size() * kFloat32Len;
size_t dst_size = output_shape[2] * output_shape[3] * kFloat32Len;
auto ret = memcpy_s(&output[i * hw_output.size()], dst_size, &hw_output[0], src_size);
if (ret != 0) {
MS_LOG(EXCEPTION) << "memcpy_s error, errorno(" << ret << ")";
return nullptr;
}
}
auto output_tensor = std::make_shared<tensor::Tensor>(x_dtype, output_shape, &output[0], kNumberTypeFloat32);
MS_EXCEPTION_IF_NULL(output_tensor);


+ 1
- 0
mindspore/ccsrc/backend/optimizer/common/helper.cc View File

@@ -517,6 +517,7 @@ ValueNodePtr CreateShapeValueNode(const FuncGraphPtr &func_graph, const std::vec
auto ret_code = memcpy_s(data_ptr, static_cast<size_t>(shape_tensor->data().nbytes()), &shape[0], elem_num);
if (ret_code != 0) {
MS_LOG(EXCEPTION) << "Failed to copy data into Tensor.";
return nullptr;
}
shape_value = shape_tensor;
abstract = std::make_shared<abstract::AbstractTensor>(kInt64, shape_vec_shape);


+ 1
- 1
mindspore/nn/layer/normalization.py View File

@@ -714,7 +714,7 @@ class SyncBatchNorm(_BatchNorm):
TypeError: If `process_groups` is not a list.
ValueError: If `num_features` is less than 1.
ValueError: If `momentum` is not in range [0, 1].
ValueError: If `device_num_each_group` is less than 2.
ValueError: If rank_id in `process_groups` is not in range [0, rank_size).

Supported Platforms:
``Ascend``


Loading…
Cancel
Save