I have a working network that processes images in float32, using the C++ Symbol API. I now try to convert the network in processing in float16 (aka half_float). I am using the GPU for the computations.
After having some errors saying that convolutions or batchnormalization (for instance) can’t have mixed input type, I converted every input (including the kernel weights, biases, means, etc) to float16, using the “Cast” Symbol. However, I now get “Check failed: e.node->is_variable() Mutation target can only be Variable”. So I conclude that the kernel symbol, which is a variable Symbol mapped to a NDArray, can’t be casted to float16. And I don’t find anything to directly feed the data in float16 (even in the NDArray, I can’t find such things)
But then, how can I do?