Hi,
I want to do secure inference of the simple neural network. where client hold the neural network that is the weight of the neural network and user hold the input.

So I am tring to implement an neural network using arbitrary weight vector. so while doing that each layer of the neural network needs an matrix vector multiplication(Considerding it as n number of innerproduct) followed by an activation function on the output vector of matrix-vector multiplication. I can see that multiplication depth used by the n innerproduct is 2 and by the activation function is 3. So each layer on total use 5 multiplication depth. How can I reduce the number of multiplication depth?

For the innerproduct I am doing pliantext-ciphertext multiplication.
For evaluating the activation function I used polynomial approximation with an polynomial of degree 3.

Sounds to me like you don’t have many options. One trick the FHE community uses is to pack things in specific formats to reduce the number of encrypted multiplications. I cant say for sure without looking at your code, data format, etc, but it’s sounding like you’ve gotten it as small as you can get it. You’ll probably have to use bootstrapping at this point

Explain why the multiplicative depth of the inner product is 2. It should be 1, I believe.
Also, what is the degree of your approximation polynomial? If you are unsure of the degree, please provide your polynomial.

The degree of the approximate polynomial is 3
I am not getting the fact why the inner product takes two multiplication depths. Is there any way to reduce it?

Here is the function evaluation on a vector (ciphertext). can this be modified such that it takes less multiplicative depth? now it takes 3 multiplicative depth.

It takes two levels because you have a homomorphic multiplication and then you also multiply by a mask to clear all values except for one of the slots. It is the multiplication by a mask that takes the second level. You could rearrange the encoding so that after EvalMult and EvalSum you get the same values in all slots (of a subring element) if this is what you desire (depends on what the desired output should be). The EvalInnerProduct in OpenFHE does not multiply by a mask, and hence costs only 1 level.