"ts/webui/src/static/style/App.scss" did not exist on "3ec26b40afd88b8255ebc74b46f475b77aa4d19b"
Commit c9b32c9c authored by Aditya Atluri's avatar Aditya Atluri
Browse files

added batch norm inference and its test - not working

parent a47f8e4b
......@@ -16,6 +16,53 @@ T zero(const T&)
return T(0);
}
//
// cpu implemenataion of batch norm for inference
//
// inputs are:
// mini-batch mean, mini-batch variance,
// input data, output data,
// total number of elements in input,
// epsilon for denominator to normalize,
// gamma and beta
//
// the input data format should be nchw
//
struct cpu_batch_norm_inference
{
std::string name() const { return "cpu::batch_norm_inference"; }
argument compute(context&, std::vector<argument> args) const
{
// args[0] is output (y),
// args[1] is input (x),
// args[2] is number of input elements (m),
// args[3] is mini-batch mean (u),
// args[4] is mini-batch variance (s),
// args[5] is epsilon (e)
// args[6] is gamma (g)
// args[7] is beta (b)
auto output = args[0];
auto input = args[1];
auto num_input_elements = args[2];
auto mini_batch_mean = args[3];
auto mini_batch_variance = args[4];
auto epsilon = args[5];
auto gamma = args[6];
auto beta = args[7];
for(size_t i = 0; i < num_input_elements; i++) {
output[i] = gamma * \
((input[i] - mini_batch_mean) / (std::sqrt(mini_batch_variance + epsilon))) + \
beta;
}
return output;
}
};
struct cpu_convolution
{
convolution op;
......
......@@ -6,6 +6,17 @@
#include "test.hpp"
#include "verify.hpp"
void batch_norm_inference_test()
{
migraph::program p;
migraph::shape s{migraph::shape::float_type, {4}};
auto x = p.add_literal(migraph::literal{s, {1, 2, 3, 4}};
auto y = p.add_literal(migraph::literal{s, {0, 0, 0, 0}};
p.add_instruction(migraph::cpu_batch_norm_inference, y, x, 4, 0, 0.5, 0.5, 1, 0);
p.compile(migraph::cpu::cpu_target{});
auto result = p.eval({});
}
void exp_test()
{
migraph::program p;
......@@ -625,4 +636,5 @@ int main()
conv2d_test();
conv2d_padding_test();
conv2d_padding_stride_test();
batch_norm_inference_test();
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment