[fix] [assistant] [I465ZG] revise error message and change input param datatype

This commit is contained in:
chenx2ovo 2021-08-25 10:47:27 +08:00
parent 562088ad1b
commit 2f1d974eeb
16 changed files with 64 additions and 62 deletions

View File

@ -149,7 +149,7 @@ std::shared_ptr<TensorOperation> ComplexNorm::Parse() { return std::make_shared<
// FrequencyMasking Transform Operation.
struct FrequencyMasking::Data {
Data(bool iid_masks, int32_t frequency_mask_param, int32_t mask_start, double mask_value)
Data(bool iid_masks, int32_t frequency_mask_param, int32_t mask_start, float mask_value)
: iid_masks_(iid_masks),
frequency_mask_param_(frequency_mask_param),
mask_start_(mask_start),
@ -157,10 +157,10 @@ struct FrequencyMasking::Data {
int32_t frequency_mask_param_;
int32_t mask_start_;
bool iid_masks_;
double mask_value_;
float mask_value_;
};
FrequencyMasking::FrequencyMasking(bool iid_masks, int32_t frequency_mask_param, int32_t mask_start, double mask_value)
FrequencyMasking::FrequencyMasking(bool iid_masks, int32_t frequency_mask_param, int32_t mask_start, float mask_value)
: data_(std::make_shared<Data>(iid_masks, frequency_mask_param, mask_start, mask_value)) {}
std::shared_ptr<TensorOperation> FrequencyMasking::Parse() {
@ -170,15 +170,15 @@ std::shared_ptr<TensorOperation> FrequencyMasking::Parse() {
// TimeMasking Transform Operation.
struct TimeMasking::Data {
Data(bool iid_masks, int64_t time_mask_param, int64_t mask_start, double mask_value)
Data(bool iid_masks, int32_t time_mask_param, int32_t mask_start, float mask_value)
: iid_masks_(iid_masks), time_mask_param_(time_mask_param), mask_start_(mask_start), mask_value_(mask_value) {}
int64_t time_mask_param_;
int64_t mask_start_;
int32_t time_mask_param_;
int32_t mask_start_;
bool iid_masks_;
double mask_value_;
float mask_value_;
};
TimeMasking::TimeMasking(bool iid_masks, int64_t time_mask_param, int64_t mask_start, double mask_value)
TimeMasking::TimeMasking(bool iid_masks, int32_t time_mask_param, int32_t mask_start, float mask_value)
: data_(std::make_shared<Data>(iid_masks, time_mask_param, mask_start, mask_value)) {}
std::shared_ptr<TensorOperation> TimeMasking::Parse() {

View File

@ -134,7 +134,7 @@ PYBIND_REGISTER(
(void)
py::class_<audio::FrequencyMaskingOperation, TensorOperation, std::shared_ptr<audio::FrequencyMaskingOperation>>(
*m, "FrequencyMaskingOperation")
.def(py::init([](bool iid_masks, int32_t frequency_mask_param, int32_t mask_start, double mask_value) {
.def(py::init([](bool iid_masks, int32_t frequency_mask_param, int32_t mask_start, float mask_value) {
auto frequency_masking =
std::make_shared<audio::FrequencyMaskingOperation>(iid_masks, frequency_mask_param, mask_start, mask_value);
THROW_IF_ERROR(frequency_masking->ValidateParams());
@ -146,7 +146,7 @@ PYBIND_REGISTER(
TimeMaskingOperation, 1, ([](const py::module *m) {
(void)py::class_<audio::TimeMaskingOperation, TensorOperation, std::shared_ptr<audio::TimeMaskingOperation>>(
*m, "TimeMaskingOperation")
.def(py::init([](bool iid_masks, int64_t time_mask_param, int64_t mask_start, double mask_value) {
.def(py::init([](bool iid_masks, int32_t time_mask_param, int32_t mask_start, float mask_value) {
auto time_masking =
std::make_shared<audio::TimeMaskingOperation>(iid_masks, time_mask_param, mask_start, mask_value);
THROW_IF_ERROR(time_masking->ValidateParams());

View File

@ -24,7 +24,7 @@ namespace dataset {
namespace audio {
FrequencyMaskingOperation::FrequencyMaskingOperation(bool iid_masks, int32_t frequency_mask_param, int32_t mask_start,
double mask_value)
float mask_value)
: iid_masks_(iid_masks),
frequency_mask_param_(frequency_mask_param),
mask_start_(mask_start),

View File

@ -31,7 +31,7 @@ constexpr char kFrequencyMaskingOperation[] = "FrequencyMasking";
class FrequencyMaskingOperation : public TensorOperation {
public:
FrequencyMaskingOperation(bool iid_masks, int32_t frequency_mask_param, int32_t mask_start, double mask_value);
FrequencyMaskingOperation(bool iid_masks, int32_t frequency_mask_param, int32_t mask_start, float mask_value);
~FrequencyMaskingOperation();
@ -47,7 +47,7 @@ class FrequencyMaskingOperation : public TensorOperation {
int32_t frequency_mask_param_;
int32_t mask_start_;
bool iid_masks_;
double mask_value_;
float mask_value_;
}; // class FrequencyMaskingOperation
} // namespace audio

View File

@ -23,8 +23,8 @@ namespace mindspore {
namespace dataset {
namespace audio {
TimeMaskingOperation::TimeMaskingOperation(bool iid_masks, int64_t time_mask_param, int64_t mask_start,
double mask_value)
TimeMaskingOperation::TimeMaskingOperation(bool iid_masks, int32_t time_mask_param, int32_t mask_start,
float mask_value)
: iid_masks_(iid_masks), time_mask_param_(time_mask_param), mask_start_(mask_start), mask_value_(mask_value) {}
TimeMaskingOperation::~TimeMaskingOperation() = default;

View File

@ -31,7 +31,7 @@ constexpr char kTimeMaskingOperation[] = "TimeMasking";
class TimeMaskingOperation : public TensorOperation {
public:
TimeMaskingOperation(bool iid_masks, int64_t time_mask_param, int64_t mask_start, double mask_value);
TimeMaskingOperation(bool iid_masks, int32_t time_mask_param, int32_t mask_start, float mask_value);
~TimeMaskingOperation();
@ -44,10 +44,10 @@ class TimeMaskingOperation : public TensorOperation {
Status to_json(nlohmann::json *out_json) override;
private:
int64_t time_mask_param_;
int64_t mask_start_;
int32_t time_mask_param_;
int32_t mask_start_;
bool iid_masks_;
double mask_value_;
float mask_value_;
}; // class TimeMaskingOperation
} // namespace audio

View File

@ -346,20 +346,20 @@ Status TimeStretch(std::shared_ptr<Tensor> input, std::shared_ptr<Tensor> *outpu
return Status::OK();
}
Status RandomMaskAlongAxis(const std::shared_ptr<Tensor> &input, std::shared_ptr<Tensor> *output, int64_t mask_param,
double mask_value, int axis, std::mt19937 rnd) {
std::uniform_int_distribution<int64_t> mask_width_value(0, mask_param);
Status RandomMaskAlongAxis(const std::shared_ptr<Tensor> &input, std::shared_ptr<Tensor> *output, int32_t mask_param,
float mask_value, int axis, std::mt19937 rnd) {
std::uniform_int_distribution<int32_t> mask_width_value(0, mask_param);
TensorShape input_shape = input->shape();
int64_t mask_dim_size = axis == 1 ? input_shape[-2] : input_shape[-1];
int64_t mask_width = mask_width_value(rnd);
std::uniform_int_distribution<int64_t> min_freq_value(0, mask_dim_size - mask_width);
int64_t mask_start = min_freq_value(rnd);
int32_t mask_dim_size = axis == 1 ? input_shape[-2] : input_shape[-1];
int32_t mask_width = mask_width_value(rnd);
std::uniform_int_distribution<int32_t> min_freq_value(0, mask_dim_size - mask_width);
int32_t mask_start = min_freq_value(rnd);
return MaskAlongAxis(input, output, mask_width, mask_start, mask_value, axis);
}
Status MaskAlongAxis(const std::shared_ptr<Tensor> &input, std::shared_ptr<Tensor> *output, int64_t mask_width,
int64_t mask_start, double mask_value, int axis) {
Status MaskAlongAxis(const std::shared_ptr<Tensor> &input, std::shared_ptr<Tensor> *output, int32_t mask_width,
int32_t mask_start, float mask_value, int32_t axis) {
if (axis != 2 && axis != 1) {
RETURN_STATUS_UNEXPECTED("MaskAlongAxis: only support Time and Frequency masking, axis should be 1 or 2.");
}
@ -374,7 +374,7 @@ Status MaskAlongAxis(const std::shared_ptr<Tensor> &input, std::shared_ptr<Tenso
CHECK_FAIL_RETURN_UNEXPECTED(mask_start + mask_width <= input_shape[check_dim_ind],
"MaskAlongAxis: the sum of mask_start and mask_width is out of bounds.");
int64_t cell_size = input->type().SizeInBytes();
int32_t cell_size = input->type().SizeInBytes();
if (axis == 1) {
// freq

View File

@ -231,8 +231,8 @@ Status TimeStretch(std::shared_ptr<Tensor> input, std::shared_ptr<Tensor> *outpu
/// \param axis: Axis to apply masking on (1 -> frequency, 2 -> time).
/// \param rnd: Number generator.
/// \return Status code.
Status RandomMaskAlongAxis(const std::shared_ptr<Tensor> &input, std::shared_ptr<Tensor> *output, int64_t mask_param,
double mask_value, int axis, std::mt19937 rnd);
Status RandomMaskAlongAxis(const std::shared_ptr<Tensor> &input, std::shared_ptr<Tensor> *output, int32_t mask_param,
float mask_value, int axis, std::mt19937 rnd);
/// \brief Apply a mask along axis. All examples will have the same mask interval.
/// \param input: Tensor of shape <..., freq, time>.
@ -243,8 +243,8 @@ Status RandomMaskAlongAxis(const std::shared_ptr<Tensor> &input, std::shared_ptr
/// \param mask_value: Value to assign to the masked columns.
/// \param axis: Axis to apply masking on (1 -> frequency, 2 -> time).
/// \return Status code.
Status MaskAlongAxis(const std::shared_ptr<Tensor> &input, std::shared_ptr<Tensor> *output, int64_t mask_width,
int64_t mask_start, double mask_value, int axis);
Status MaskAlongAxis(const std::shared_ptr<Tensor> &input, std::shared_ptr<Tensor> *output, int32_t mask_width,
int32_t mask_start, float mask_value, int32_t axis);
/// \brief Compute the norm of complex tensor input.
/// \param power Power of the norm description (optional).

View File

@ -25,7 +25,7 @@ namespace dataset {
// constructor
FrequencyMaskingOp::FrequencyMaskingOp(bool iid_masks, int32_t frequency_mask_param, int32_t mask_start,
double mask_value)
float mask_value)
: frequency_mask_param_(frequency_mask_param),
mask_start_(mask_start),
iid_masks_(iid_masks),
@ -42,7 +42,7 @@ Status FrequencyMaskingOp::Compute(const std::shared_ptr<Tensor> &input, std::sh
TensorShape input_shape = input->shape();
CHECK_FAIL_RETURN_UNEXPECTED(
input_shape[-2] >= frequency_mask_param_,
"FrequencyMasking: frequency_mask_param should be less than the length of frequency dimension.");
"FrequencyMasking: frequency_mask_param should be less than or equal to the length of frequency dimension.");
std::shared_ptr<Tensor> input_tensor;
// typecast
@ -53,13 +53,11 @@ Status FrequencyMaskingOp::Compute(const std::shared_ptr<Tensor> &input, std::sh
} else {
input_tensor = input;
}
auto mask_val =
input->type() != DataType::DE_FLOAT64 ? static_cast<float>(mask_value_) : static_cast<double>(mask_value_);
// iid_masks - whether to apply different masks to each example/channel.
if (iid_masks_ == false) {
return MaskAlongAxis(input_tensor, output, frequency_mask_param_, mask_start_, mask_val, 1);
return MaskAlongAxis(input_tensor, output, frequency_mask_param_, mask_start_, mask_value_, 1);
} else {
return RandomMaskAlongAxis(input_tensor, output, frequency_mask_param_, mask_val, 1, rnd_);
return RandomMaskAlongAxis(input_tensor, output, frequency_mask_param_, mask_value_, 1, rnd_);
}
}
} // namespace dataset

View File

@ -31,7 +31,7 @@ namespace dataset {
class FrequencyMaskingOp : public TensorOp {
public:
explicit FrequencyMaskingOp(bool iid_masks = false, int32_t frequency_mask_param = 0, int32_t mask_start = 0,
double mask_value_ = 0.0);
float mask_value_ = 0.0);
~FrequencyMaskingOp() override = default;
@ -43,7 +43,7 @@ class FrequencyMaskingOp : public TensorOp {
bool iid_masks_;
int32_t frequency_mask_param_;
int32_t mask_start_;
double mask_value_;
float mask_value_;
std::mt19937 rnd_;
};
} // namespace dataset

View File

@ -24,7 +24,7 @@ namespace mindspore {
namespace dataset {
// constructor
TimeMaskingOp::TimeMaskingOp(bool iid_masks, int64_t time_mask_param, int64_t mask_start, double mask_value)
TimeMaskingOp::TimeMaskingOp(bool iid_masks, int32_t time_mask_param, int32_t mask_start, float mask_value)
: time_mask_param_(time_mask_param), mask_start_(mask_start), iid_masks_(iid_masks), mask_value_(mask_value) {
rnd_.seed(GetSeed());
}
@ -35,8 +35,9 @@ Status TimeMaskingOp::Compute(const std::shared_ptr<Tensor> &input, std::shared_
// input <..., freq, time>
CHECK_FAIL_RETURN_UNEXPECTED(input->Rank() >= 2, "TimeMasking: input tensor is not in shape of <..., freq, time>.");
TensorShape input_shape = input->shape();
CHECK_FAIL_RETURN_UNEXPECTED(input_shape[-1] >= time_mask_param_,
"TimeMasking: time_mask_param should be less than the length of time dimension.");
CHECK_FAIL_RETURN_UNEXPECTED(
input_shape[-1] >= time_mask_param_,
"TimeMasking: time_mask_param should be less than or equal to the length of time dimension.");
std::shared_ptr<Tensor> input_tensor;
// typecast

View File

@ -30,8 +30,8 @@ namespace dataset {
class TimeMaskingOp : public TensorOp {
public:
explicit TimeMaskingOp(bool iid_masks = false, int64_t time_mask_param = 0, int64_t mask_start = 0,
double mask_value_ = 0.0);
explicit TimeMaskingOp(bool iid_masks = false, int32_t time_mask_param = 0, int32_t mask_start = 0,
float mask_value_ = 0.0);
~TimeMaskingOp() override = default;
@ -41,9 +41,9 @@ class TimeMaskingOp : public TensorOp {
private:
bool iid_masks_;
int64_t time_mask_param_;
int64_t mask_start_;
double mask_value_;
int32_t time_mask_param_;
int32_t mask_start_;
float mask_value_;
std::mt19937 rnd_;
};
} // namespace dataset

View File

@ -215,13 +215,13 @@ class FrequencyMasking final : public TensorTransform {
public:
/// \brief Constructor.
/// \param[in] iid_masks Whether to apply different masks to each example.
/// \param[in] frequency_mask_param Maximum possible length of the mask.
/// \param[in] frequency_mask_param Maximum possible length of the mask, range: [0, freq_length] (Default: 0).
/// Indices uniformly sampled from [0, frequency_mask_param].
/// Mask width when iid_masks=true.
/// \param[in] mask_start Mask start when iid_masks=true.
/// \param[in] mask_start Mask start when iid_masks=true, range: [0, freq_length-frequency_mask_param] (Default: 0).
/// \param[in] mask_value Mask value.
explicit FrequencyMasking(bool iid_masks = false, int32_t frequency_mask_param = 0, int32_t mask_start = 0,
double mask_value = 0.0);
float mask_value = 0.0);
/// \brief Destructor.
~FrequencyMasking() = default;
@ -242,13 +242,13 @@ class TimeMasking final : public TensorTransform {
public:
/// \brief Constructor.
/// \param[in] iid_masks Whether to apply different masks to each example.
/// \param[in] time_mask_param Maximum possible length of the mask.
/// \param[in] time_mask_param Maximum possible length of the mask, range: [0, time_length] (Default: 0).
/// Indices uniformly sampled from [0, time_mask_param].
/// Mask width when iid_masks=true.
/// \param[in] mask_start Mask start when iid_masks=true.
/// \param[in] mask_start Mask start when iid_masks=true, range: [0, time_length-time_mask_param] (Default: 0).
/// \param[in] mask_value Mask value.
explicit TimeMasking(bool iid_masks = false, int64_t time_mask_param = 0, int64_t mask_start = 0,
double mask_value = 0.0);
explicit TimeMasking(bool iid_masks = false, int32_t time_mask_param = 0, int32_t mask_start = 0,
float mask_value = 0.0);
/// \brief Destructor.
~TimeMasking() = default;

View File

@ -273,9 +273,10 @@ class FrequencyMasking(AudioTensorOperation):
Args:
iid_masks (bool, optional): Whether to apply different masks to each example (default=false).
frequency_mask_param (int): Maximum possible length of the mask (default=0).
frequency_mask_param (int): Maximum possible length of the mask, range: [0, freq_length] (default=0).
Indices uniformly sampled from [0, frequency_mask_param].
mask_start (int): Mask start when iid_masks=true (default=0).
mask_start (int): Mask start takes effect when iid_masks=true,
range: [0, freq_length-frequency_mask_param] (default=0).
mask_value (double): Mask value (default=0.0).
Examples:
@ -304,9 +305,10 @@ class TimeMasking(AudioTensorOperation):
Args:
iid_masks (bool, optional): Whether to apply different masks to each example (default=false).
time_mask_param (int): Maximum possible length of the mask (default=0).
time_mask_param (int): Maximum possible length of the mask, range: [0, time_length] (default=0).
Indices uniformly sampled from [0, time_mask_param].
mask_start (int): Mask start takes effect when iid_masks=true (default=0).
mask_start (int): Mask start takes effect when iid_masks=true,
range: [0, time_length-time_mask_param] (default=0).
mask_value (double): Mask value (default=0.0).
Examples:

View File

@ -119,7 +119,8 @@ def test_frequency_masking_invalid_input():
test_invalid_input("invalid mask_start", False, 2, 100, RuntimeError,
"MaskAlongAxis: mask_start should be less than the length of chosen dimension.")
test_invalid_input("invalid mask_width", False, 200, 2, RuntimeError,
"FrequencyMasking: frequency_mask_param should be less than the length of frequency dimension.")
"FrequencyMasking: frequency_mask_param should be less than or equal to the length of " +
"frequency dimension.")
if __name__ == "__main__":

View File

@ -119,7 +119,7 @@ def test_time_masking_invalid_input():
test_invalid_input("invalid mask_start", False, 2, 100, RuntimeError,
"MaskAlongAxis: mask_start should be less than the length of chosen dimension.")
test_invalid_input("invalid mask_width", False, 200, 2, RuntimeError,
"TimeMasking: time_mask_param should be less than the length of time dimension.")
"TimeMasking: time_mask_param should be less than or equal to the length of time dimension.")
if __name__ == "__main__":