A computer-implemented method for selecting bit widths for a fixed point implementation of a machine learning model comprising a neural network with multiple layers, wherein a plurality of the multiple layers is configured to multiply a respective set of activation values by a respective set of weights, the method comprising: receiving, at the plurality of the multiple layers of the neural network a respective input comprising the respective set of activation values; processing to quantize: the respective sets of activation values, to respective activation bit widths, and the respective sets of weights, to respective weight bit widths, wherein quantizing each of the respective sets of activation values and weights each represents a computational stage introducing noise to each corresponding layer of the multiple layers, the processing to quantize further comprising: determining a model performance metric comprising a signal to quantization noise ratio, SQNR; and selecting bit widths for each of the respective activation bit widths and the weight bit widths based on a constraint that the model performance metric exceeds a minimum performance metric, wherein the selecting bit widths further comprises selecting bit widths for each of the respective activation bit widths and the weight bit widths based on: ρ i α i x i = C, ∀ i where ρ i is a scaling factor of the bit width at computational stage i, α i is a noise amplification factor for the computational stage i to the output of the machine learning model, x i represents the quantization noise variance introduced at computational stage i, and C is a constant determined based on the constraint that the SQNR for the machine learning model exceeds a minimum SQNR limit. receiving, at the plurality of the multiple layers of the neural network a respective input comprising the respective set of activation values; processing to quantize: the respective sets of activation values, to respective activation bit widths, and the respective sets of weights, to respective weight bit widths, wherein quantizing each of the respective sets of activation values and weights each represents a computational stage introducing noise to each corresponding layer of the multiple layers, the processing to quantize further comprising: determining a model performance metric comprising a signal to quantization noise ratio, SQNR; and selecting bit widths for each of the respective activation bit widths and the weight bit widths based on a constraint that the model performance metric exceeds a minimum performance metric, wherein the selecting bit widths further comprises selecting bit widths for each of the respective activation bit widths and the weight bit widths based on: ρ i α i x i = C, ∀ i where ρ i is a scaling factor of the bit width at computational stage i, α i is a noise amplification factor for the computational stage i to the output of the machine learning model, x i represents the quantization noise variance introduced at computational stage i, and C is a constant determined based on the constraint that the SQNR for the machine learning model exceeds a minimum SQNR limit. the respective sets of activation values, to respective activation bit widths, and the respective sets of weights, to respective weight bit widths, wherein quantizing each of the respective sets of activation values and weights each represents a computational stage introducing noise to each corresponding layer of the multiple layers, the processing to quantize further comprising: determining a model performance metric comprising a signal to quantization noise ratio, SQNR; and selecting bit widths for each of the respective activation bit widths and the weight bit widths based on a constraint that the model performance metric exceeds a minimum performance metric, wherein the selecting bit widths further comprises selecting bit widths for each of the respective activation bit widths and the weight bit widths based on: ρ i α i x i = C, ∀ i where ρ i is a scaling factor of the bit width at computational stage i, α i is a noise amplification factor for the computational stage i to the output of the machine learning model, x i represents the quantization noise variance introduced at computational stage i, and C is a constant determined based on the constraint that the SQNR for the machine learning model exceeds a minimum SQNR limit. determining a model performance metric comprising a signal to quantization noise ratio, SQNR; and selecting bit widths for each of the respective activation bit widths and the weight bit widths based on a constraint that the model performance metric exceeds a minimum performance metric, wherein the selecting bit widths further comprises selecting bit widths for each of the respective activation bit widths and the weight bit widths based on: ρ i α i x i = C, ∀ i where ρ i is a scaling factor of the bit width at computational stage i, α i is a noise amplification factor for the computational stage i to the output of the machine learning model, x i represents the quantization noise variance introduced at computational stage i, and C is a constant determined based on the constraint that the SQNR for the machine learning model exceeds a minimum SQNR limit.